React Native 0.65の発表
·3分で読めます
本日、Hermesの新バージョン、アクセシビリティの改善、パッケージのアップグレードなどを含むReact Nativeバージョン0.65をリリースします。
Hermes 0.8の新機能
Facebookのオープンソースであり、React Nativeに最適化されたJavaScript VMであるHermesが、バージョン0.8.1にアップグレードされました。このリリースで注目すべき機能は以下の通りです。
- 「Hades」と名付けられた新しいコンカレント・ガベージコレクタは、64ビットデバイスで最大30倍短い停止時間を実現します。Facebookでは、これにより一部のCPU負荷の高いワークロードが20%~50%改善されることが確認されました。Hadesについての詳細はこちらでご覧いただけます。
- ECMAScript Internationalization API(ECMA-402、または
Intl
)がAndroidのHermesに組み込まれ、デフォルトで有効になりました。APIごとのサイズオーバーヘッドはわずか57~62Kです(JSCの6MiBと比較して)。この変更により、Hermesユーザーはロケールのポリフィルが不要になります。この実装を推進してくださった@mganandraj氏およびMicrosoftの他のパートナーの皆様に心から感謝いたします! - iOS版HermesがApple M1 MacとMac Catalystをサポートするようになりました!
- SMI(Small Integers)とポインタ圧縮を含むメモリ改善により、JSヒープが30%削減されました。
Function.prototype.toString
への変更により、不適切な機能検出によるパフォーマンス低下が修正され、ソースコード注入のユースケースをサポートするようになりました。
完全なHermesの変更履歴はこちらで確認できます。
これらの新機能と利点を活用するために、まだHermesを導入していない場合は、こちらの手順に従ってアプリで有効にしてください!
アクセシビリティの修正と追加
昨年、FacebookはGAADプレッジを表明し、React Native内のアクセシビリティを改善することを約束しました。0.65では、この誓約の成果とその他のアクセシビリティの勝利が共有されます!主な変更点は以下の通りです。
- iOS向けにハイコントラストのライト値とダーク値を指定できるようになりました。詳細はドキュメントをご覧ください。
- Androidに
getRecommendedTimeoutMillis
APIが追加されました。これは、ユーザーがAndroidのアクセシビリティオプションで設定した推奨のデフォルトタイムアウト値を公開するもので、コントロールの確認や操作に追加の時間が必要なユーザーのためのものです。 - TalkBack/VoiceOverがコンポーネントの
disabled
やunselected
などのUI状態を正しく読み上げるようにするための一般的な修正を行いました。
未解決のアクセシビリティの問題については、こちらで進捗を確認したり、貢献したりすることができます!
注目すべき依存関係のバージョンアップデートと注意点
package.json
のdevDependency
としてreact-native-codegen
のバージョン0.0.7
が必要になりました。- JCenterがサービスを終了し、読み取り専用になりました。mavenリポジトリとしてJCenterを削除し、依存関係をMavenCentralとJitpackを使用するように更新しました。
- OkHttpをv3からv4.9.1にアップグレードしました。変更点の詳細については、OkHttp 4へのアップグレードをご覧ください。
- Xcode 12.5をサポートするためにFlipperを0.93にアップグレードしました。Flipperの変更履歴はこちらをご覧ください。
- Android Gradle Plugin 7をサポートしました。
- Apple Siliconではリンカーの回避策が必要です。これについては@mikehardy氏のメモをご覧ください。
謝辞
このリリースには、61人のコントリビューターによる1100以上のコミットが含まれています。このリリースに貢献し、サポートしてくださった皆様に感謝いたします!完全な変更履歴はこちらで確認できます。