Expo SDK 55 へのアップグレード方法

Expo SDK 55 へのアップグレード方法:手順ごとのヒント、新アーキテクチャ移行の推奨事項、破壊的変更、アップグレードを最後まで進めるためのトラブルシューティング。

日本語
コピー
How to upgrade to Expo SDK 55

Expo SDK 55 がリリースされました。React Native 0.83.2 と React 19.2 に対応しています。SDK 54 と同様、Android API level 36 と Xcode 16.1 以降をサポートします。対応する OS の下限も変わりません。SDK 55 でビルドできるのは Android 7 以降と iOS 15.1 以降です。詳細はチェンジログを参照してください。以下はハイライトをまとめた短い動画です。

どの SDK も、大量のテストとベータ期間を経てリリースされます。この間、Expo チームとコミュニティが協力して問題を洗い出し、他の人が素早くスムーズにアップグレードできるよう、問題が影響を広げるのを防ぎます。Expo のエンジニアの多くは自分たちでアプリを保守しており、ベータが出た時点でアップグレードを試します。

それでも、現実のアプリのパターンはほぼ無限にあります。アプリはそれぞれ異なり、それぞれに複雑さがあり、アップグレードの際にはそれを考慮する必要があります。そこで、SDK 55 へのアップグレードに影響しうる主要な変更点と、最新の Expo SDK へアップグレードする際の一般的なアドバイスをいくつか紹介します。

SDK 55 へのアップグレード前に知っておきたいこと

React Native 旧アーキテクチャの終焉

SDK 54 / React Native 0.81 が旧アーキテクチャをサポートする最後のバージョンです。SDK 55 を採用するなら、まだ移行していなければ新アーキテクチャも同時に採用する必要があります。SDK 53 ですでにデフォルトになっていたので、ほとんどのアプリは移行済みのはずです。新アーキテクチャへの移行方法は後述します。

Claude Code で SDK アップグレードを進める

Expo では日常業務で Claude Code を使っています。その経験をもとに、Expo アプリでよくあるタスクをこなす skills を expo/skills リポジトリで公開しました。そのひとつが最新の Expo SDK バージョンへのアップグレードです。パッケージのバージョン更新といった基本的な作業だけでなく、破壊的変更への対応や古い設定の整理などもこなします。

ターミナルの Claude Code で次を実行し、

/plugin marketplace add expo/skills

skills marketplace を Claude に追加したら、次を実行して

/plugin install upgrading-expo

アップグレード skill をインストールします。Claude を再起動し、自然言語で SDK のアップグレードを指示するだけです。正しくインストールされていれば、Claude の起動時にこの skill が参照されます。

Claude のプロンプトで Expo アップグレードスキルの使用例を示す

また、bunx skills add expo/skills で Expo skills を他の agent に取り込むこともできます。

いつもどおり、作業は別ブランチで行い、マージとデプロイの前にコードをレビューしてください。LLM は強力ですが、Claude と Expo のアップグレード skill がすべてのケースをカバーできるわけではありません。このプロセスに人間の開発者は欠かせません。

デフォルトプロジェクトと Expo Go の移行期間

今回のリリース後しばらくの間、App Store と Play Store の Expo Go は SDK 54 のままとなり、npx create-expo-app で作成されるデフォルトプロジェクトも整合性を保つため Expo SDK 54 を使い続けます。

Expo Go は素早く始めるためのツールであり、モバイル開発を学ぶための教材という位置づけです。この移行期間を利用して、プロジェクトを development build に移すことをおすすめします。ストアにアプリを出すために必要なものは、すべて揃っています。

移行期間中、Android デバイスでは Expo CLI から直接 SDK 55 版の Expo Go をインストールできます。iOS では TestFlight External Beta を使うか、新しく追加された eas go コマンドで SDK 55 の Expo Go をビルドし、自分の TestFlight チームにアップロードできます。

expo-av → expo-video / expo-audio

SDK 55 で expo-av パッケージが削除されました。以前の SDK で、その機能は改良された expo-audio と expo-video に順次置き換えられているので、コードをこの2つのパッケージに移行してください。

Hermes v1 の性能向上を試す

新しい Hermes v1 コンパイラは無視できない性能向上をもたらすので、自分のアプリで試してみる価値があります。SDK 55 では任意で有効化できます。なお、このバージョンでは React Native をプリコンパイル済みバイナリではなくソースからビルドする必要があるため、場合によってはビルド時間が長くなります。有効化の方法は SDK 55 のチェンジログに記載されています。

Expo SDK アップグレードのヒント

アップグレード中に起きる問題に特化した詳細なトラブルシューティングガイドを用意しています。アップグレード前にやっておくべき準備と、アップグレード中に注意すべき点の両方を扱い、手間の少ない順から多い順へとアドバイスを並べています。ガイド全体に目を通す価値がありますが、まずは要点をいくつか挙げます。

まずチェンジログを読む

ほとんどの SDK リリースでは、既知の破壊的変更や、アプリの具体的な状況に応じて設定を調整する必要がある変更が列挙されています。チェンジログと破壊的変更は、アップグレード前に読むのが最善です。テストの前に設定を直せます。見落とした場合は、アップグレード後に読むのが次善の策で、特にコンパイルエラーやクラッシュに遭遇したときに役立ちます。

Expo Go の代わりに development build を使う

アップグレードは、時間に余裕があるときに行うのがいちばんだ。SDK がリリースされると、手元の Expo Go は自動で最新版に上がる。すると Expo Go でアプリが動かなくなり、開発を続けるにはすぐ追随しなければ、と思うかもしれない。

Development buildがあれば、少し落ち着いて、進行中の機能開発を止めずに、余裕をもってアップグレードできる。使い勝手は Expo Go とよく似ていて、QR コードを読めばローカルでコードをデバッグでき、再ビルドも要らない。ただしこれは自分のアプリなので、Expo Go の新バージョンが出ても勝手に上がることはない。

どうしても Expo Go でなければならない場合でも、Play や App Store の最新版を使う必要はない。https://expo.dev/go から旧バージョンをダウンロードすれば、Android 実機と iOS シミュレータで使える。残念ながら、App Store の制約により iOS 実機ではこの手は使えない。

ただ、development build へ移行すべき理由はもうひとつある。Expo Go が本番アプリを再現できる範囲はかなり限られていて、「Expo Go では問題ないのに、本番ビルドにすると壊れる」ということがよく起きる。Expo Go は JavaScript は動かせるが、app.json / app.config.js の設定の大部分は活かせない。ネイティブコードの変更が必要だからだ。要するに、あなたのアプリならではの部分はほとんど Expo Go には収まらない。development build なら収まる。無料プランでも development build は十分作れるし、ローカルで npx expo run:android や npx expo run:ios をビルドしてもいい。

新アーキテクチャに関するアドバイス

Expo SDK 54 は旧アーキテクチャをサポートする最後の SDK だ。SDK 55 / React Native 0.83 は新アーキテクチャしかサポートしない。まだ新アーキテクチャに移行していないなら、今がまさにそのときだ。主要ライブラリの最新版、たとえば react-native-reanimated v4 や @shopify/flash-list v4 も新アーキテクチャしかサポートしていない。

Expo SDK のアップグレードと新アーキテクチャへの移行を同時にやらないこと。 問題の切り分けが難しくなる。Expo SDK のアップグレードに比べて新アーキテクチャへの移行は変更が大きく、問題が起きる可能性も高い。しかし両方を一度に進めると、どこに原因があるのか分からなくなる。

おすすめは、まず SDK 54 のまま新アーキテクチャへ移行し、development build を作ることだ。テストして問題が出たら、新アーキテクチャのトラブルシューティングガイドを参照してほしい。新アーキテクチャへの移行だけで問題なく動くことを確認してから、SDK 55 に上げて development build を再ビルドする。こうすれば、テストしているのは SDK 55 へのアップグレードだけになる。

トラブルシューティングガイドを見る

よくあるトラブルシューティングガイドへの入口ページを用意した。自分の問題に応じて参照してほしい。ビルド時のエラーやクラッシュと、パフォーマンスの問題では、対処法がまったく違う。根本原因を特定できなかったとしても、ADB Logcat や macOS コンソールなどのツールで、クラッシュ時に OS が報告するネイティブエラーを押さえておくと、その後の調査や他者への相談に役立つ。

助けが必要なら頼ってほしい

バグ報告とフィードバックに感謝する。問題を報告する最良の方法は、これまでもこれからも、最小再現付きの GitHub issue だ。デフォルトのプロジェクトテンプレート(npx create-expo-app で作成)をベースにした GitHub リポジトリのリンクと、問題を再現するのにちょうど必要なコードを送ってほしい。

最小再現があれば、チームがあなたとまったく同じ現象を確認でき、修正が効いたかどうかも検証できる。面倒に思えても、15〜30 分かけて最小再現を作るほうが、実プロジェクトで何時間もデバッグするより効率的なことが多い。実プロジェクトは変数が多すぎて、問題の切り分けが難しいからだ。

問題が起きたとき、まだ再現できていなくても、すぐに議論する価値があるのは理解している。同じ状況の開発者がすでに答えを持っているかもしれない。Discord、Reddit、Bluesky などで問題を話していると、協調的なゴムのアヒルデバッグが自然と生まれることがよくある。問題を言葉にしながら、みんなで答えを見つけていく形だ。

遭遇した問題のスクリーンショットや動画を貼ってほしい。少なくとも、何がどう見えているのか、どのプラットフォームかなどを具体的に書いてもらえれば、どこでつまずいているのかを把握でき、コミュニティが問題を切り分けて解決策を考える助けになる。アップグレードの過程について詳細なフィードバックがあり、単一の問題の最小再現に収まらない場合も、ぜひ聞きたい。ソーシャルフォーラムだけでなく、サポートページに届いたメッセージも常に目を通している。

アップグレードがうまくいきますように。SDK 55 を楽しんでほしい!

出典: Expo Blog← ホームへ戻る