🍎

expo SDK53リリース内容まとめ

に公開

はじめに

先日5月1日にexpoのSDK53がリリースされました。
久々にexpo goを開くとエラーが出ていたので、気になってリリース内容を見てみました。
https://expo.dev/changelog/sdk-53

Xで調べてみると、不安定で動かないライブラリが出ていたりバグがあったりとポストが散見されます。
ただ自分はアップグレートしても問題はなかったです。
https://x.com/sugasaki/status/1919702111987892365
https://x.com/aapkaakumar/status/1918418945188471052

リリース内容

New Architectureがデフォルトで有効化

react native0.76でデフォルトで有効になっていたアーキテクチャがexpoでも正式に有効にされました。
Old Architectureとの違いとしてはBridgeからJSIに置き換えていて、パフォーマンスや安全性が向上しているみたいです。

新しいAndroidプロジェクトにデフォルトでエッジツーエッジを展開

タイトルのそのままの意味ですが、6月リリース予定のAndroid16でエッジツーエッジの無効化ができなくなるので、デフォルトで有効になるそうです。
ちなみにiosはすでにデフォルトで有効です。
https://developer.android.com/about/versions/16/behavior-changes-16?hl=ja#edge-to-edge

バックグラウンドタスクの改善

現在非推奨となっているexpo-background-fetchを廃止して、expo-background-taskを導入することで、電力消費の最適化や遅延可能なタスクをバッググラウンドで実行することをサポートできるようになりました。
バックグラウンドタスクは、Androidの WorkManager と iOSの BGTaskSchedulerを使用しているそうです。

Metroバンドラーではpackage.json:exportsフィールドがデフォルトで有効になりました

react native0.79で有効だったフィールドがexpoでもデフォルトで有効になりました。
現状だとCommonJSとES Moduleの両方でモジュールを読み込めるのですが、これを有効にすることでpachage.jsonに書かれているファイルだけ読むので切り分けしやすくなります。

その他

他には細かい項目がいくつかありますが、量が多いので気になったところを挙げます。

  • expo-audioの安定版がリリース
    デバイスのオーディオ機能にアクセスできます。
  • expo-mapのアルファリリース
    google mapのようなマップ機能を実装できます。

https://www.youtube.com/watch?v=jDCuaIQ9vd0&t=754s

  • 新しいExpo UIパッケージのプロトタイプが強化
    これはまだプロトタイプの段階みたいですが、AndroidのJetpack ComposeとiOSのSwiftUIのネイティブUIパーツを使いやすくするための新しいライブラリで、将来的にネイティブに近いUIを簡単に使えるようにするみたいです。
    https://docs.expo.dev/versions/v53.0.0/sdk/ui/
    画像を見ても確かに設定アプリのようなuiですね。
NCDCエンジニアブログ

Discussion