React Native 0.69の発表
React Nativeの新バージョン、0.69.0のリリースをお知らせできることを嬉しく思います。このバージョンには、React Nativeの新しいアーキテクチャに関するいくつかの改善と、React 18のサポートおよびHermesのバンドルといった新機能が含まれています。詳細は以下をお読みください!
セクション
React 18
React Native 0.69がReact 18をサポートする最初のリリースであることをお知らせできることを嬉しく思います。React 18は、useId
のような新しいフックなど、多くの改善をもたらしました。さらに、React 18にはuseTransition
や完全なSuspenseサポートのような新しい並行処理機能が含まれています。
React Native 0.69では、React 18がデフォルトで有効になっています。ただし、新しいアーキテクチャに移行していない場合、利用できるのは並行レンダリングや並行処理機能を使用しない機能のみです。新しいアーキテクチャは並行レンダリングを念頭に置いて構築されていますが、古いアーキテクチャにそのサポートを追加することはできません。
React NativeにおけるReact 18のサポートに関する詳細はこちらでご確認いただけます。
バンドルされたHermes
このリリース以前は、HermesとReact Nativeは別々にリリースされていました。そのため、どのバージョンのHermesがどのバージョンのReact Nativeと互換性があるのかについて混乱が生じていました。この問題を解決するため、React Native 0.69から、互換性のあるバージョンのHermesをReact Nativeと共に提供することにしました。この変更により、React NativeでHermesを使用する際の安定性が大幅に向上します。
適切なバージョンのHermesの使用はReact Nativeによって処理されますが、統合が意図通りに機能するように、アップグレードヘルパーの手順に従ってください。まだHermesを有効にしていない場合は、こちらの手順に従って有効にできます。他のJavaScriptエンジンも引き続きサポートしますが、最高のエクスペリエンスを得て、より良いサポートを提供できるように、皆さんにHermesへの移行を推奨します。
Androidの新しいアーキテクチャを使用しているユーザーは、Hermesをソースからビルドする必要があることに注意してください。Hermesをソースからビルドするために、Windowsユーザーは追加でこれらの手順に従う必要があります。
React NativeがHermesをどのようにバンドルしているかについて、その仕組みをさらに詳しく知りたい場合は、こちらの詳細なドキュメントをご覧ください。
新しいアーキテクチャ
私たちはAndroidとiOSの両方で新しいアーキテクチャの展開を続けています。まだアプリやライブラリを移行していない場合は、こちらの手順に従ってください。また、新しいアーキテクチャのツールやリソースに関する最新情報を読んで詳細を確認することもできます。
0.69のハイライト
前述の通り、このリリースにおける最も重要な改善点は、React 18のサポートとHermesのバンドルです。しかし、その他にも注目すべき変更点があります。これには以下が含まれます。
- iOS/tvOS SDK 11.0のサポート廃止、バージョン12.4以上が必須になりました
- Android向け開発を行うM1ユーザーへのサポート向上
- node実行可能ファイルをより決定論的に特定するための新しい
.xcode.env
設定ファイルの追加 - React NativeはAndroid 11の最新ステータスバーAPIを使用するようになりました
- C++17のサポート
- iOSデバッグメニューに新しい
hotkeysEnabled
オプション
破壊的変更
いくつかの破壊的変更もありました
- React Native CLIは8.0の新しいメジャーバージョンに更新されました
link
とunlink
コマンドは、autolinkingを優先して削除されました- 非推奨の
initCompat
は削除されました。代わりにinit
コマンドを使用してください - 非推奨の
run-android
プロパティが削除されました install
とuninstall
コマンドが削除されましたreact-native.config.js
からassetsとhooksが削除されました – これらのプロパティをあなたの設定から削除する必要があります- iOS依存性設定から
podspecPath
が削除されました run-ios
から--project-path
オプションが削除されました- iOSのソースディレクトリ検出が、Xcodeプロジェクトを探す方法からPodfileを探す方法に変更されました
console.disableYellowBox
のサポートが終了しました- すでに非推奨だったprop typesが削除されました (cdfddb4dad, 3e229f27bc, 10199b1581)
- RN 0.65から非推奨だった
removeListener
がAppearanceから削除されました SegmentedComponentIOS
を使用していた場合、今後はサードパーティのライブラリ(例えばsegmented-control)に置き換える必要があります (235f168574)
アップグレード
また、いくつかの依存関係をアップグレードしました
- AGPを7.1.1に更新 - アプリではこのバージョンを維持することをお勧めします
- Android向けの
boost
は、iOSと合わせて1.76に更新されました - Rubyは2.7.5に更新されました
- 直接的なmetro依存関係は0.70.1にアップグレードされました
変更点の全リストはチェンジログで確認できます。
謝辞
80人のコントリビューターによる629のコミットが、このリリースを可能にしました - 皆さん、ありがとうございました!
また、このリリースができるだけ安定したものになるようフィードバックを提供してくださったリリーステスター、サポーター、その他すべての方々に感謝します。