Expo ナビゲーション移行 (SDK 58)
3 つのジョブがあります。リクエストに応じて選択してください。移行計画には 3 つすべてを順に実行する必要があります。
| リクエスト | 実行内容 |
|---|---|
| 「このリポジトリではナビゲーションはどのように実装されていますか?」 | 分析 |
| 「移行を計画して」「フラグ付けできますか?」「React Navigation ですか、@expo/ui ですか?」 | 分析 → 計画 |
| 「React Navigation を使用していて、もっとネイティブな要素と、ナビゲーションとディープリンクのための安定したライブラリが必要です」 | 分析 → 計画 (既存の React Navigation シナリオを使用) |
| 「サイドバー / シート / Duo レイアウトを構築するには?」「X は動作しますか?」 | カタログで検索 |
全体で使用するターゲット名:
- React Navigation は、react-native-screens 上の Expo Router を意味します。SDK 56 以降、
expo-routerは@react-navigation/*に依存しなくなり、基盤とする部分をフォークしています。SDK 58 では、フォークされた API のほとんどが削除されました。 - プレーン React Navigation は、Expo Router なしの
@react-navigation/*7.x を意味します。 - @expo/ui は、iOS では SwiftUI、Android では Jetpack Compose を意味します。
ターゲットリポジトリのみを読み取ります。このスキルは計画を立案します。ユーザーが別途要求しない限り、アプリケーションコードを変更することはありません。
Expo は SDK ごとに変更されます。ここに記載されている API の事実は、2026-11-02 に SDK 58 に対して確認されました。カタログに検証済みと表示されていない API に依存する場合は、https://docs.expo.dev/versions/v58.0.0/ を取得してください。
分析
node <skill>/scripts/inventory-navigation.mjs <repo-root>を実行します。読み取りのみを行い、path:lineの位置とともにシグナルを出力します。シグナルにtruncatedが 0 より大きく表示された場合は、--max-locations 200を付けて再実行します。- references/analysis.md に従います。templates/analysis-report.md を記入します。
レポートのすべての行に証拠付きの値が入力されるか、検索したが見つからなかったことが記載され、かつすべてのインベントリシグナルがコードを読んで確認または却下されるまで完了しません。
計画
references/migration-planning.md に従います。このドキュメントは以下を参照します:
- references/target-decision.md: ターゲット間の推奨
- references/flag-seams.md: フラグを配置できる場所、文書化されている内容、スパイクが必要な内容
- references/no-flag-paths.md: フラグが不可能な場合の切り替え方法
- references/api-mapping.md: SDK 間の移行、インポートの置き換え、破壊的変更
- references/existing-react-navigation.md: アーキタイプ N、または M の N 部分のシナリオ: 出発点、安定性の順序、ディープリンク
templates/migration-plan.md を記入します。計画には常に以下が含まれます: フラグ付きの切り替え、フラグなしの切り替え、それぞれが出荷可能で単独で検証可能な順序付けられたステップ、そしてフラグと計画で置き換えたものをすべて削除するクリーンな終了。このリポジトリの理由に基づいた 1 つの推奨事項を指定します。その推奨事項は、現在のナビゲーション所有者を維持することもできます。SDK のみが移動する場合、計画ではフラグ付けすべきものはなく、その理由を説明します。
パターンを検索する
references/pattern-catalog.md は、すべてのシナリオとそのファイルをリストします。各ファイルは、iOS と Android の両方のターゲットに対する動作するプロトタイプのコード、プラットフォームごとのステータス、注意点、移行ノートを提供します。ステータスワードはそのまま引用してください: verified はシミュレーターまたはエミュレーターで実行されたことを意味し、物理ハードウェアは使用されていません。
templates/ には、再利用可能なファイル(サイドバーセクション、サイドバーの配置とナビゲーションバーの可視性のためのローカルモジュール、ナビゲーションヘルパーレイヤー、ヒンジとペイン分割コンポーネント)が含まれています。ローカルモジュールには開発ビルドが必要です。