logo

Expo 52

Expo SDK 52 の新機能と変更点

Expo SDK 52 がリリースされました!このバージョンには React Native 0.76 が含まれており、多くの機能強化や変更が行われています。特に、新しいアーキテクチャがデフォルトで有効になった点が大きな特徴です。本記事では、変更点をわかりやすく解説します。


🔹 全般的な変更

  • 新しいアーキテクチャがデフォルトで有効にapp.jsonnewArchEnabled: true
    • 新規プロジェクト (npx create-expo-app) では有効化済み
    • 既存プロジェクトはオプションで有効化可能
    • Expo SDK 53 では オプトアウトが必要になる可能性
    • Expo Go は新しいアーキテクチャのみをサポート
    • 問題がある場合は newArchEnabled: false に設定し、開発ビルドを作成
  • iOS の最小サポートバージョンが 13.4 → 15.1 に変更
  • Android の minSdkVersion が 23 → 24、compileSdkVersion が 34 → 35 に更新
  • expo-video が安定版としてリリース
    • expo-av からの移行が推奨
    • ピクチャーインピクチャー などの機能を追加
  • expo-audio がベータ版としてリリース
  • expo-file-system/next がベータ版としてリリース
    • SharedObjects やファイルハンドルをサポート
  • expo-camera の改善
    • Swift Concurrency の導入で設定の信頼性向上
  • 新しい expo-live-photo
    • iOS Live Photos の再生が可能に
  • expo-image v2 がリリース
    • useImage フックで事前にメモリへプリロード可能
    import { useImage, Image } from 'expo-image';
    import { Text } from 'react-native';
    
    export default function MyImage() {
      const image = useImage('https://picsum.photos/1000/800', {
        maxWidth: 800,
        onError(error) {
          console.error('Loading failed:', error.message);
        },
      });
    
      return image ? (
        <Image source={image} style={{ width: image.width / 2, height: image.height / 2 }} />
      ) : (
        <Text>Image is loading...</Text>
      );
    }
    

📌 Expo Modules API の改善

  • SharedObject のメモリ管理強化
  • ExpoAppDelegateSubscriberProtocolcustomizeRootView を追加
  • 新しいイベント API useEventuseEventListener
  • EventEmitter が C++ 実装へ移行
  • expo-sqliteSQLCipher サポート追加
  • expo-sqlite/kv-store(キーバリューストア API)を提供
    • AsyncStorage 互換ながら 同期 API も利用可能
  • expo-notifications の改善
    • アプリ終了時もバックグラウンドタスクを実行
  • iOS 18 の色付きアイコンのサポート
  • expo-calendar からカレンダーフォームシートを起動可能
  • expo/fetch が WinterCG 準拠の Fetch API を提供
  • React Navigation v7 のサポート
    • Expo Router を使用している場合は自動的にアップグレード
  • React Native DevTools の導入
    • SDK 47 の JavaScript デバッガーに代わるもの

🖥 Expo CLI の改善

  • ユニバーサル Tree Shaking の実験的サポート
    • 未使用の ESM インポート/エクスポートを削除
  • Metro の解決速度が最大 15 倍向上
  • React Compiler の実験的サポート
  • iOS run コマンドに新フラグ追加
  • pnpm モノレポの自動サポート
  • CSS モジュールのインポートが改善
  • Expo CLI のサイズ削減
  • Android/iOS run コマンドの Eager builds サポート

🚀 Expo Application Services(EAS)の改善

  • EAS Build の iOS ワーカイメージを macOS 14.6 & Xcode 16.1 に更新
  • 新しい "Bundle JavaScript" ビルドステップを追加
    • JS エラーを早期検出
  • EAS Update ダッシュボードの改善

非推奨・削除

  • Expo Go でのプッシュ通知は SDK 53 以降非対応
  • Google Maps は Android 版 Expo Go で非対応
  • expo-sqlite の CRSQLite サポートが非推奨
  • expo-av の Video API は expo-video に置き換え
  • Android 版 Expo Go は Pedometer をサポートしなくなる
  • expo-camera/legacy, expo-sqlite/legacy, expo-barcode-scanner の削除
  • app.jsonprivacy フィールドの削除
  • create-react-native-app のサポート終了
  • expo-routernavigate メソッドの動作変更
  • expo-splash-screen の Android フルスクリーン画像のサポート終了

アップグレード手順

1️⃣ Expo CLI の更新

npm i -g eas-cli

2️⃣ Expo SDK 52 へのアップグレード

npx expo install expo@^52.0.0 --fix

3️⃣ 依存関係の確認

npx expo-doctor@latest

4️⃣ アプリの変更を確認

  • expo-av から expo-video へ移行
  • expo-sqlite の CRSQLite を非推奨に変更
  • expo-routernavigate の動作変更を考慮
  • expo-camera/legacy の削除に対応

5️⃣ Xcode のアップデート

  • iOS の minVersion が 15.1 になったため、Xcode 15 以上が必要

6️⃣ アプリのビルド

eas build --profile development --platform all

🎉 まとめ

Expo SDK 52 は 新しいアーキテクチャがデフォルト化 され、パフォーマンス向上や機能追加 が多数含まれています。expo-videoexpo-audio などの新ライブラリが充実し、開発体験が大幅に向上しました。

今すぐ試す

npx create-expo-app my-app
cd my-app
npx expo start

📌 詳細なドキュメント Expo SDK 52 の公式発表

logo