· #46
週刊React Native #46 RN 0.88リリース、Expo SDK 58リリース、Yoga計算86%削減ほか
React Native 0.88がリリース#
React Native 0.88が正式公開され、イベント配信モデルがWeb標準のEventTarget APIベースへ移行したほか、バリアブルフォントやiOSのSceneDelegateがサポートされました。AndroidのTurboModulesにおけるArrayBuffer対応も含まれる非破壊的メジャーリリースです。 https://twitter.com/reactnative/status/2111081620505784531
Expo SDK 58が正式リリース#
Expo SDK 58が正式リリースされ、iOS 27や折りたたみ式デバイスのiPhone Duoへの対応に加え、Androidのクリーンビルド時間が半減しました。Siriと連携するApp Intentsの導入や、バリアブルフォントのネイティブサポートも含まれています。 https://twitter.com/expo/status/2111093147103310022
React NativeコアへのPR群でYogaレイアウト計算が86%削減#
React Native本体に向けた20以上のプルリクエストの検証結果が報告され、Yogaのレイアウト計算処理が86%、JSスレッドのCPU使用率が24%削減されたことが示されました。iOSにおけるスクロール時の引っ掛かりも40%低減しています。 https://twitter.com/tomekzaw_/status/2112627064025358658
agent-device v0.21.29でテスト実行速度が向上#
モバイルE2Eテストツールagent-deviceのv0.21.29が公開され、即時スクリーンショットが18倍、Androidでのタップや入力検証が2倍高速化されました。42件のテストスイート全体でも18%の実行時間短縮が確認されています。 https://twitter.com/thymikee/status/2112586730087882828
react-androidへのBaseline Profile導入で起動時間が最大13%改善#
react-androidにBaseline Profileを同梱するプルリクエストが提出されました。初回起動時の解釈実行を避けてAOTコンパイルを行うことで、完全表示までの時間(TTFD)が最大13%高速化する見込みです。 https://twitter.com/shubhporwal24/status/2112437912470225341
NitroがReact Nativeから分離しnitro-coreへ#
ネイティブモジュール機構NitroからReact Native固有の依存を切り離したnitro-coreの提供が発表されました。JSIをサポートするLynxやNativeScriptなど、他のクロスプラットフォームフレームワークでもNitroのバインディングやTypeScript型定義を共通して利用できるようになります。 https://twitter.com/mrousavy/status/2111448600878215398
react-native-edge-to-edgeが非推奨化#
react-native-edge-to-edgeの非推奨化が発表され、React Native 0.86以降は本体の標準機能への移行が案内されています。android/gradle.propertiesでedgeToEdgeEnabled=trueを設定する方式が推奨されます。 https://twitter.com/zoontek/status/2112173666511536583
Android新アーキテクチャにおける無限ループアニメーションの検証#
AndroidのReact Native新アーキテクチャ上では、パルスやスピナーなどの装飾的な無限ループアニメーションにおいて、Reanimated 4よりも標準のAnimated(useNativeDriver有効)の方が効率的であるというプロファイリング結果が共有されました。Reanimatedではフレームごとの処理コストが発生することが要因とされています。 https://twitter.com/patzatorski/status/2112456526807916782
react-native-actions-sheet v11でUIスレッド駆動に対応#
react-native-actions-sheet v11がリリースされ、ジェスチャーとアニメーションがUIスレッド上で動作するようになりました。フリックによるスナップや破棄、シート内での複数スクロール、マップやWebView向けジェスチャー遮断コンポーネントがサポートされています。 https://twitter.com/ammarahm_ed/status/2111810620521906341
TeamReachがExpo移行後に36時間で12回のOTA修正を実施#
デイリーアクティブユーザー約80万人を抱えるアプリTeamReachが、Expoで再構築したアプリへ一晩で完全移行した事例が公開されました。ストアへの再提出を行わず、移行後の36時間で12回のOTAアップデートを配信して初期の不具合を解消しています。 https://twitter.com/expo/status/2110370987871227977
React Native Skia v3で動画レンダリングをサポート#
React Native Skiaのバージョン3にて動画サポートが追加され、描画パイプライン内で動画フレームを直接扱えるようになりました。 https://twitter.com/wcandillon/status/2112134527477072123
React Native 0.86以降でDevToolsにカスタムトラックを描画可能に#
React Native 0.86から、React Native DevToolsのPerformanceパネル上にネイティブライブラリが独自のトラックを表示できるようになりました。C++のスコープをPerformanceTracerSectionでラップすることで、標準のcommitやlayoutと並んで計測結果が描画されます。 https://twitter.com/jpudysz/status/2113160981924753411
今週のひとこと#
React Native 0.88とExpo SDK 58がそろって登場し、ついにSceneDelegate対応も入りましたね。
ここ最近はExpo Modules 2.0やReact Nativeのコア層そのものに対するパフォーマンス改善のPull Requestも相次いで上がっていて、今後のReact Nativeがさらに軽快になっていきそうで楽しみです。