Expo53 -> 54 Update

要約
個人開発したスピンカードという英語学習用のアプリをExpo53からExpo54にUpdateして、iOS26とLiqui glassに対応した時に詰まったこと書きます。
意見はこのエリアに表示されます
アイキャッチ画像

概要

以前、Expo53を使用してiOS版のみですがExpoで個人アプリをリリースしました。iOS26のLiquid Glass対応をするには、専用のコードを書く必要がありますが情報が出てきてからは、ハードルは高く感じなかったですね。

こちらがリリースしたアプリです。

https://apps.apple.com/jp/app/スピンカード/id6748535693

しかしUpdate対応するのは容易ではなかったようですが。。。
eas buildして、AppStoreへArchiveしてTestFlightで配布したアプリをビルドしたらクラッシュした😱

リリースのスピードもSwiftUI/Flutterを使った方が、早いですが証明書の管理が楽なExpoもリリースするための速度はビルドなど含めて遅く感じましたが、メリットもありました。

生成AIとも相性が良く変な話作るだけなら、Flutterよりも速いしiOS26に対応したアプリを作りやすかった。

ここで詰まった!
npm packageのupdate対応と設定周りで詰まりました。Claude Codeを活用することで、エラーログを解析してeas buildのビルド中のログ解析から、リリースするさいの設定周りの課題を1時間ぐらいで解決してくれました。

早く解決するためにやったこと!
Claude Codeにひたすらプロンプトを投げる。これだけ。エラーをfixしたらGitHub PR作成していうと勝手にやってくれた😅

すごいのは、支持したコンテキストから最適なPRを作成してくれたところですね。それがこちら👇

Summary

  • Reactバージョン不一致(19.2.0 → 19.1.0)を修正。Expo SDK 54が期待するreact-native-renderer 19.1.0と一致させた
  • 不足していたexpo-font依存関係を追加(@expo/vector-iconsが必要としていた)
  • New Architectureを無効化(newArchEnabled: false)して安定性を向上
  • appVersionSourceremoteからlocalに変更し、app.jsonのバージョンを使用するように修正

原因

TestFlightでのクラッシュは以下のエラーが原因でした:

変更内容

  • app.json: version 1.0.1, newArchEnabled: false, expo-fontプラグイン追加
  • eas.json: appVersionSource: local
  • package.json: react/react-dom 19.1.0, expo-font追加
  • ios/android: prebuildで再生成

Test plan

  • ローカルでnpx expo startが正常に起動することを確認
  • EAS Buildが成功することを確認(v1.0.1 build 5)
  • TestFlightでクラッシュせずに起動することを確認

"newArchEnabled": false,にしないと、TestFlightで配布したiOSアプリが何度もクラッシュした!

画像の説明を入れてください
キャプションをここに記入

最後に

Claude Codeはエラーのデバッグが強いので解決できたが、Liquid Glassは知らないと思おうので、新しい技術に関しては自力で実装しました。NativeのViewを描画できるのが、Expoの魅力でしたね。しかしeas buildの制限がきついのが悩みです。

Explore More
関連記事はありません。