React Native 0.68の発表
皆さん、こんにちは!本日、React Native 0.68.0のリリースを発表します。このバージョンでは、新しいReact Nativeアーキテクチャへのオプトイン、バグ修正などが含まれています。
セクション
0.68 のハイライト
Andrei Calazans が、0.68でもたらされる最も関連性の高い変更点の選定を手伝ってくれました。
破壊的変更とバージョンアップ
このバージョンには、いくつかの破壊的変更が含まれています。
- React Nativeは、最新のLTSであるNode 16にアップデートされました。CIではLTSと一つ前のLTSをテストしているため、この変更により、ユーザーはNode >= 14のバージョンを使用する必要があります。
- Android Gradle Pluginが7.0.1にアップデートされ、AndroidビルドにJDK 11が必須となりました。設定をアップグレードしてください(IntelとM1 Macの両方で
zulu11
JDKフレーバーを使用することをお勧めします)。 - iOSの`RCTBundleURLProvider` APIから`fallbackResource`が削除されました。このパラメータは、代替なしでメソッド呼び出しから安全に削除できます。
ツールも更新されました。主なバージョンアップは以下の通りです。
- @react-native-community/cli を 7.0.3 に
- Metro を 0.67 に
- react-devtools-core の依存関係を 4.23.0 に
- Flipper を 0.125.0 に
- react-native-codegen を 0.0.9 に
- Kotlin を 1.6.10 に
- Soloader を 0.10.3 に
- Gradle を 7.3 に
- Android の compile と target SDK を 31 に
また、Nicola Cortiによるこのコミットのおかげで、Android Gradle PluginがデフォルトバージョンのNDKを自動でダウンロードするようになり、別途指定してインストールする必要がなくなりました。
その他の改善点
このリリースには他にも多くの変更や修正が含まれていますが、皆さんが興味を持つかもしれない小さなセレクションを以下に紹介します。
- Gijs Weterings がtestID を RCTModalHostView にフォワーディングする修正を行い、ModalのE2Eテストを容易にしました。
- Liam Jones が、`console.error`を呼び出すとLogBoxと一緒にRedBoxが表示される問題を修正しました。
- Sam Kline が、Androidの開発モードでBundleDownloaderが失敗した後に空白の画面が表示される問題を修正しました。
- Jeffrey Hyer が、KeyboardAvoidingViewが`onLayout`プロップで期待通りに動作しない問題を修正しました。
変更点の全リストに興味がある方は、こちらのリンクからChangelogをお読みいただけます。
謝辞
このリリースには、68人のコントリビューターによる614のコミットが含まれています!皆さん、ありがとうございます!
また、安定版0.68.0のリリース前にリグレッションを検出してくれたリリーステスターおよびサポーターの皆様にも感謝したいと思います。皆様の協力は、このリリースの成功にとって非常に貴重です!
もしあなた、あなたのアプリ、またはあなたの会社が「リリーステスター」プログラムへの参加に興味がある場合は、こちらからサインアップできます。
新アーキテクチャへのオプトイン
上記で簡単に触れたように、React Native 0.68はFabric RendererとTurboModuleシステムへのオプトインをサポートする最初のバージョンです。これは、新しいReact Nativeアーキテクチャの展開における重要なマイルストーンとなります。皆さんが変更に追いつけるように、ウェブサイトにアーキテクチャのセクションを追加しました。そこでは、新しいシステムの内部に関する詳細なガイドをいくつか見つけることができます。
同時に、ドキュメントにマイグレーションガイドを追加し、新アーキテクチャ専門のワーキンググループを立ち上げました。オプトインの方法を含む詳細情報は、前回のブログ投稿でご確認いただけます。
新アーキテクチャはまだ微調整が必要であることにご注意ください。あなたが依存しているサードパーティライブラリの中には、まだ移行されていないものがあるかもしれません。また、まだ発見されていない問題に遭遇する可能性もあります。もし問題を発見した場合は、新アーキテクチャワーキンググループにご報告ください。
React 18について: React 18の新しいレンダリングエンジンはReact Native 0.68ではサポートされておらず、これは将来のバージョンで行われます。なぜなら、React 18は、React 18の発表ブログ投稿で紹介された新機能の恩恵を受けるために、新アーキテクチャに依存しているからです。詳細については、こちらのReact Confの基調講演をご覧ください。
ウェブサイトの更新
Simek、Megatron4537、slorberの協力により、メインのコードベースの改善と並行して、ウェブサイトにもかなりの改善が加えられました!特に、トップツールバーの新しいセクションを通じて、React Nativeへの貢献方法を学べるようになりました。さらに、「Contributing」セクションと新しい「Architecture」セクションはバージョン管理されなくなり、React Nativeのバージョンごとにコピーがあるのではなく、これらのセクションは一つだけになりました。