ExpoのSDK36がリリースされたのでアップデート(SDK35→SDK36)
少し前ですが、ExpoのSDK36がリリースされました。 早速アップデートを試してみましたので、その時のメモを記録しておきます。
とりあえずさわってみたところだと、React Nativeのバージョンアップによって利用可能になった、「Fast Refresh」という機能がとても便利でした。開発時のデバッグがとても快適になります。
参考リンク
概要
- SDK36の変更点
- SDK35からSDK36へのアップデート手順
SDK36の変更点
Expo SDK 36 is now available に記載されているものです。
-
React Native 0.61に対応
「React 16.9」「Fast Refresh」など対応されました。この「Fast Refresh」すごいです。 https://facebook.github.io/react-native/docs/fast-refreshデバッグしながらソースコードを変えた際、瞬時に表示が更新されました。
以前は「Building JavaScript bundle」となり再ビルドが始まって、ビルド中は画面真っ白。ビルド完了して始めて画面に反映されていましたが、それすらなくなりました。とても快適です。更新時には画面の下の方に「Refrashing…」と表示されるだけです。上記の関連で、以前はビルドが始まる際にデバッグしているアプリが再起動していましたが、再起動も不要になりました。同じ画面の同じ状態のままでプログラムの変更が反映されるようになりました。
Reactコンポーネント内でのプログラム修正であれば、再ビルド無しでコンポーネントを更新して再レンダリングするようです。stateの保持など出来ない・初期化されることもある様子ですが、構文エラーなどが発生したときの対処なども行うらしく便利に働きそうです。
- react-native-appearanceを利用して、AndroidとWebでもダークモード
iOS以外でもダークモードの挙動を定義して利用できます。 まだ試していませんが、時間見つけてダークモードへの対応もやっていきます。 - Permissions APIの再構築
権限を取得する際に「expo-permissions」を利用していましたが、それぞれのモジュールで取得できるように再構築されました。 カメラとかGPSとかを利用する際に、該当のモジュールのみで実装が可能になります。 特に変更しなくても問題ないですが、スッキリ書けるようになりますね。
SDK35からSDK36へのアップデート手順
- 最新バージョンのexpo-cliを取得
npmでアップデートしましょう。 - expo upgradeコマンドを実行
- 一部モジュールの置き換え
「CameraRoll」と「ART」のモジュールについてはそれぞれ「expo-media-library」と「react-native-svg」に置き換える - Expoのクライアントアプリも更新
Google PlayとApp Storeで各OSで更新。 - ビルド済みのスタンドアローンアプリについて
公開済みのものについて、OTAアップデートではSDKのアップデートはできません。SDK36でビルドしたものをストアで配布する必要があります。
私は上記手順で問題なくアップデートできました。
もしも、上記で上手くいかない場合は/node_module/
ディレクトリを一度削除して、npm install
を行うなどやってみると良いです。
おわりに
SDK36を動かすことが出来ました。すでに公開済みのアプリも順番に対応していこうと思います。 Fast Refreshはとても便利でした。これからの構築がとても快適になりそうです。
現時点でアップデートしてみて、特に躓くところはなかったのでドンドンアップデートしていこうと思います。