この記事の位置づけ
Expo SDK 52は、2024年11月12日に公開された過去のSDKです。React Native 0.76を含み、新規プロジェクトでNew Architectureが標準になった節目のリリースでした。
2026年現在の最新SDKを紹介する記事ではありません。SDK 51以前の古いプロジェクトを調査するときや、SDK 52で導入された変更の背景を確認するときの移行資料として読んでください。
新規プロジェクトでは、Expo公式のSDK一覧とchangelogを確認し、サポート中のSDKを選びます。
SDK 52の主な変更
| 項目 | SDK 52での変更 |
|---|---|
| React Native | 0.76を採用 |
| New Architecture | 新規プロジェクトで標準有効 |
| iOS | 最小対応バージョンが15.1へ |
| Android | minSdkVersion 24、compileSdkVersion 35へ |
| 動画 | expo-videoが安定版に |
| 音声 | expo-audioがbetaとして登場 |
| ナビゲーション | React Navigation 7へ対応 |
| 開発ツール | React Native DevToolsを採用 |
SDK 52公開時点でbetaやpreviewだった機能を、現在も同じ状態だと考えないでください。各APIの現行ドキュメントを確認する必要があります。
New Architectureの扱い
SDK 52では、create-expo-appで作る新規プロジェクトにnewArchEnabled: trueが設定されました。一方、既存プロジェクトをSDK 52へ更新しても、New Architectureが自動的に有効になるわけではありませんでした。
当時のExpo公式移行ガイドは、問題を切り分けるために次の順序を案内しています。
- 先にSDK 52とReact Native 0.76へ移行する
- 旧Architectureのまま動作を確認する
- その後New Architectureを有効にする
- 新しいdevelopment buildを作って再確認する
SDK更新とArchitecture変更を同時に行うと、エラーの原因を判断しにくくなります。
{
"expo": {
"newArchEnabled": true
}
}
この設定を変更した場合、JavaScriptの再読み込みだけでは不十分です。native projectを含むdevelopment buildを作り直します。
移行手順
作業前にGitで変更を保存し、利用中のNode.js、Expo、Xcode、Android SDKのバージョンを記録します。
1. Expoと依存関係を更新する
SDK 52を明示して更新する場合の基本形です。
npx expo install expo@^52.0.0
npx expo install --fix
npx expo-doctor@latest
expo install --fixは、対象SDKと互換性のある依存関係へ揃えるために使います。expo-doctorでは、設定やReact Native Directoryの情報を基に互換性の問題を確認できます。
現在のプロジェクトで実行する際は、SDK 52が既にサポート対象外になっていないかも確認してください。
2. breaking changesを確認する
SDK 52では、次のような削除・変更がありました。
expo-camera/legacyを削除expo-sqlite/legacyを削除expo-barcode-scannerを削除し、expo-cameraの機能へ移行expo-avのVideo APIを非推奨とし、expo-videoを推奨- Expo GoでJSCを使えず、Hermesを利用
- Androidのsplash screenをAndroid 12のAPIへ移行
- Expo Routerの一部型とnavigation挙動を変更
削除されたパッケージを使っている場合は、SDK本体の更新前に利用箇所を検索します。
rg "expo-camera/legacy|expo-sqlite/legacy|expo-barcode-scanner|expo-av"
3. native projectを更新する
Continuous Native Generationを使い、ios・androidを生成物として扱っている場合は、公式手順に従って再生成します。
native projectを直接管理している場合は、自動削除せず、Native project upgrade helperの差分を確認します。iOS directoryがある場合はPodsも更新します。
npx pod-install
4. development buildを作り直す
expo-dev-clientを利用している場合、SDKやNew Architectureの変更後には新しいdevelopment buildが必要です。
Expo Goは学習や素早い確認に便利ですが、app configや独自native moduleをすべて再現するものではありません。本番アプリの検証にはdevelopment buildを使います。
動作確認
移行後は、画面が開くだけで完了にしないようにします。
- iOSとAndroidの両方で起動する
- navigationとdeep linkが動く
- camera、notification、locationなどnative APIが動く
- splash screenとapp iconが正しく表示される
- SQLiteの既存データを読み書きできる
- background taskとpush notificationを実機で確認する
- release buildを作成できる
- EAS Updateを使う場合はruntime versionが合っている
New Architectureを有効にした場合は、利用している第三者native libraryの対応状況を個別に確認します。
SDK 52で追加・安定化したAPI
SDK 52ではexpo-videoが安定版になり、従来のexpo-av Video APIからの移行先として案内されました。expo-audioとexpo-file-system/nextは当時betaでした。現在利用する場合は、当時のimport pathをそのままコピーせず、現行SDKのドキュメントを確認してください。
また、expo-sqlite/kv-storeが追加され、AsyncStorageに近いKey-Value APIをSQLite上で利用できるようになりました。既存データを移行する場合は、値の形式、保存済みkey、同期APIがUI threadへ与える影響をテストします。
SDK 52のExpo RouterにはReact Server Componentsのearly previewも含まれていましたが、公式発表はproduction向けではないと明記していました。preview機能を公開済みの安定機能として扱わないことが大切です。
SDK 52を今も使う場合
既存アプリの保守でSDK 52を扱うことはありますが、古いSDKへ留まり続けると、App Store・Google Playの要件、Xcode、Android Gradle Plugin、依存ライブラリとの組み合わせが難しくなります。
まず現状を再現できる環境を確保し、その後、Expo公式のupgrade walkthroughに沿ってサポート中のSDKへ段階的に移行してください。複数のSDKを一度に飛び越える場合も、各changelogのbreaking changesを順番に確認します。
まとめ
- Expo SDK 52は2024年11月公開で、最新SDKではない
- React Native 0.76を含み、新規プロジェクトでNew Architectureが標準になった
- 既存アプリではSDK更新とNew Architecture有効化を分けて検証する
- 削除されたAPIとnative libraryの互換性を確認する
- 現在の開発では公式SDK一覧からサポート中の版を選ぶ