開発2026-06-06
expo-router のバージョン番号が Expo SDK に合わせて変わっていた(4.x → 56.x)
expo-router のバージョンを手書きで指定したら動かなくなった。SDK 56 からバージョン体系が変わっていた。npx expo install を使えば自動解決する。
expo-router のバージョンを package.json に手書きで指定したら動かなくなった。Expo SDK 56 からバージョン体系が変わっていた話。
事象
- Expo SDK をアップグレードし、あわせて expo-router も更新しようとした
- package.json に
"expo-router": "^4.x.x"のように手書きで指定してインストール - ビルドエラーや実行時エラーが出る。あるいは
npx expo install --fixを実行すると expo-router のバージョンが変わる
原因
Expo SDK 56 から、expo-router のバージョン番号が Expo SDK のバージョンに揃えられた。
| Expo SDK | expo-router のバージョン | |---------|----------------------| | 〜55 | 4.x 系 | | 56 | 56.x |
SDK 55 まで expo-router は 4.x 系だった。SDK 56 で突然 56.x に飛ぶ。この体系変更を知らずに "expo-router": "^4.x.x" と手書き固定していると、SDK 56 環境で古いバージョンが入り続ける。
解決策
バージョンを手書きせず、npx expo install に任せる。
npx expo install expo-router
このコマンドは Expo SDK のバージョンを読んで、対応する expo-router の正しいバージョンを自動で選択・インストールする。
既存の package.json に固定バージョンが残っている場合は、--fix フラグで一括修正できる:
npx expo install --fix
これで expo-router を含む依存パッケージが SDK に合った正しいバージョンに揃う。
補足
npx expo installは Expo が管理する「互換性テーブル」をもとにバージョンを解決する。手書きの semver より信頼性が高い- expo-router だけでなく
react-native-screens、expo-linking等の Expo 管理パッケージも同様にnpx expo install経由が安全 - SDK のメジャーアップグレード時は
npx expo install --fixを必ず走らせる習慣にしておくと、バージョン不整合系のエラーをまとめて防げる
※ 本記事にはアフィリエイトリンクが含まれます。