For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ja/docs/mobile/deep-links.md (or send Accept: text/markdown).
ディープリンクとアプリ設定
URL スキーム、画面ルートマップ、バンドルされる設定の契約。
1 つの env 値からスキームを導出
EXPO_PUBLIC_APP_SCHEME は apps/mobile/app.config.ts に入力され、サインインフローが使うのと同じモバイル認証設定を通じて、ディープリンクのスキームと本番で許可されるオリジンを導出します。値は検証され、小文字のスキーム文字のみが許可され、http、https、file、javascript、data、exp、exps などの予約済みスキームは拒否されます。出荷時のデフォルトは supastack です。
app.json では両方の識別子(ios.bundleIdentifier と android.package)が com.supastack.app として出荷されます。スキームとあわせて、最初のストアアップロード前に変更してください。
# apps/mobile/.env.local
EXPO_PUBLIC_APP_SCHEME=supastackアプリが受け付けるリンクの形
ディープリンクはカスタムスキーム専用です。<scheme>://auth/callback がサインインのハンドオフを完了し、<scheme>://invite/<token> が招待画面を開いてトークンを招待の受諾ルートに送信します。ユニバーサルリンクは設定されていません — app.json は associatedDomains を宣言していません — そのためすべてのリンクはスキーム経由で解決されます。
apps/mobile/app 配下の expo-router マップでは、index がサインイン画面、onboarding と new-organization が初回セットアップ、paywall が購入の提示を担当し、feedback はサインアウト状態でも動く独立画面です。(app) グループ内のタブは home、chat、notifications、settings で、content、commerce、assistant はホームのクイックアクションから開く非表示画面です。settings には独自の画面サブスタックがあります。
バンドルは両側の一致が前提
公開の Expo の値は配布バイナリに焼き込まれますが、サーバーはリクエストごとにモバイルコールバックを MOBILE_ALLOWED_ORIGINS で検証します。この組み合わせは一致している必要があります。スキームやオリジンの変更は、アプリの新しいビルドとサーバーのデプロイの両方を意味し、どちらか一方では済みません。
OTA チャネルなし
このキットには expo-updates の依存も updates の設定もありません — JavaScript の変更は新しいストアビルドでのみユーザーに届きます。サポートする最古のビルドと API の互換性を保つか、新しい機能をサーバー駆動の状態の背後にゲートしてください。
検証とトラブルシューティング
コールドスタートのリンク、アプリがバックグラウンドで動作中に届くリンク、サインアウト中に受け取るリンクをテストしてください。リンクがアプリではなくストアの掲載ページやブラウザーを開く場合、インストール済みビルドのスキームが EXPO_PUBLIC_APP_SCHEME と一致していません。