RORK LABEN
PLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっていますPLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっています
記事一覧/開発ツール
開発ツール/2026-05-04上級

Rork × Better Auth で Web/モバイル統合認証を実装する — Cookie・Deep Link・パスキーまで

Rork で作るモバイルアプリと Web 版を同一の Better Auth バックエンドに統合する実装ガイド。メールリンク・ソーシャル・パスキー・組織機能まで Cookie/Deep Link の落とし穴を全て押さえます。

Better Auth認証14React Native234CookieDeep Link3PasskeysB2B SaaS

プレミアム記事

3 つの Rork アプリを運営してきて、毎回いちばん時間を吸われたのは UI でも課金実装でもなく、認証まわりでした。Web 版を Clerk にしてモバイルを Supabase Auth、Apple Sign In だけ別実装、組織機能は自前で作って、と継ぎ接ぎしているうちに、ユーザー削除のときに 4 箇所更新しないといけないコードベースが完成してしまったのです。

その反省から、最近の新規プロジェクトでは Better Auth に一本化しています。Better Auth は 2024 年後半に登場した TypeScript ファーストの認証ライブラリで、フレームワーク非依存・プラグイン式・自前 DB という思想で作られています。Clerk のような SaaS と違って自分のサーバーで動かしますが、その代わり 1 つのバックエンドで Web ブラウザ・iOS・Android すべてを同じセッションモデルで扱えるのが最大の利点です。

ここで扱うのはRork で作ったモバイルアプリ(React Native + Expo)と Next.js の管理画面を、ひとつの Better Auth サーバーに統合する手順を、私が本番で踏んだ落とし穴と一緒にまとめます。コード例はすべて、執筆時点の Better Auth 1.2 系で動作確認済みです。

なぜいま Better Auth なのか — Clerk・Supabase Auth・Auth.js との違い

最初に「なぜ Clerk や Supabase Auth ではないのか」を整理しておきます。私自身どちらも本番で使ってきたので、向き不向きの判断軸を率直に書きます。

Clerk は UI コンポーネントが完成度高く、B2B 機能(組織・招待・SSO)が箱から出してすぐ使えます。一方で MAU 課金が積み上がりやすく、無料アプリで月 5 万 MAU を超えてくると課金体系が個人開発の収益と合わなくなります。Clerk はうまく行きすぎたときに困る選択肢でもあるのです。

Supabase Auth は Postgres と密結合で安いのですが、サーバーセッションが GoTrue (JWT) ベースで Cookie 同期がモバイルでやや扱いづらい印象です。Apple Sign In や Passkeys のような OS 固有機能は自分でラップする必要があります。

Auth.js (旧 NextAuth) は Web 中心で、React Native での公式サポートが弱いです。

そこに登場した Better Auth は、上記のいいとこ取りを TypeScript で実装したような設計です。具体的には、

  • セッションは DB に保存される Cookie + Token のハイブリッド。Web は HttpOnly Cookie、モバイルは Bearer トークンとして同じ session レコードを参照する
  • 認証メソッドは プラグイン。メールパスワード・マジックリンク・ソーシャル・パスキー・OTP・2FA・組織・SSO・Stripe 連携などをコンポーザブルに足せる
  • DB アダプタは Drizzle・Prisma・Mongo・Kysely をサポート。Cloudflare D1 や Neon Postgres も Drizzle 経由で動く
  • フロントは React・Vue・Svelte・Solid・React Native に公式クライアントあり

つまり「Web でうまく動いた認証フローが、そのままモバイルでも同じ DB に書き込める」という体験を提供してくれます。私が継ぎ接ぎ運用に疲れた人向けには、これがいちばん効きます。

Better Auth が Rork アプリに合う 3 つの理由

Rork は React Native + Expo で生成されたアプリを npm publish のように Cloudflare に乗せて使う構成なので、認証バックエンドも Cloudflare 上で動かしたほうがレイテンシが揃います。Better Auth はこの構成と特に相性が良く、理由は 3 つあります。

第 1 に、Cloudflare Workers + Hono で Better Auth を素直に動かせること。betterAuth.handler は標準の Request を受け取って Response を返すだけなので、Hono ルートに app.all('/api/auth/*', c => auth.handler(c.req.raw)) と書くだけで動きます。

第 2 に、Drizzle ORM 経由で Cloudflare D1 や Neon Postgres を共有できること。Rork で作ったアプリのバックエンドにすでに Drizzle を使っているなら、認証用テーブルを既存スキーマに足すだけです。私の現プロジェクトでは Rork × Neon Postgres + Drizzle ORM 完全ガイド で組んだ DB をそのまま使い、auth-schema.ts だけ追加しました。

第 3 に、Expo の Deep Link と Cookie を両方サポートしていること。これが地味に効きます。後述しますが、Apple Sign In のリダイレクト URL を myapp://auth/callback で受けつつ、Web 版では Cookie で同じセッションを引き継ぐ、という運用が可能です。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Web 版とモバイル版で別々の認証基盤を持っていて運用が辛かった人が、Rork × Better Auth で 1 つの DB と 1 つのコードベースに統合できる
Deep Link が Safari でだけ動かない・Cookie が iOS で保存されない・Apple Sign In のリダイレクトが切れるといった「あと一歩」で詰まるトラブルをすべて再現可能なコードで解決できる
個人開発でも B2B SaaS でも通用する組織(Organizations)プラグイン・パスキー・セッション同期の本番運用パターンを今日から取り入れられる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

開発ツール2026-06-19
Rork アプリの API 通信を堅くする — トークン更新・再試行・冪等性の設計
Rork が生成する fetch はそのままだと、トークン切れ・電波の揺らぎ・二重送信に弱いままです。トークンの自動更新、再試行とバックオフ、冪等性キーを一つのクライアント層に集約する設計を、実装コードと運用の数値とともに整理しました。
開発ツール2026-09-01
expo-paste-input で画像を貼り付けられる入力欄を作り、消える file:// を documents へ逃がす
チャット入力に画像やGIFを貼り付けられるようにする expo-paste-input の実装手順です。onPaste が返す file:// は一時ファイルで、送信までの間に消えることがあります。保存先を移す実装と、実機で確かめる順番をまとめました。
開発ツール2026-08-31
画面ロックから3分後、expo-audio の環境音は静かに止まっていました
expo-audio の音が画面ロックで止まる原因を、ビルド設定・オーディオセッション・ロック画面連携の三層に分けて切り分けます。Android で約3分後に止まるのは、ドキュメントに書かれた止まり方です。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →