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で
getRecommendedTimeoutMillisAPIが追加されました。これは、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以上のコミットが含まれています。このリリースに貢献し、サポートしてくださったすべての方々に感謝いたします!完全な変更ログはこちらでご確認いただけます。
