本文へスキップ
MameTechNews
フロントエンド

React Native 0.88、イベント配送をWeb標準の経路に変更

## POINTS

  • 0.87から0.88はアプリコードを変えずに上げられる。0.85はサポート対象外になった。
  • Xcode 27とiOS 27 SDKではUISceneが必須になる。0.88のSceneDelegate対応は単一シーンに限られる。
  • Androidの既定User-Agentにアプリ名とバージョンが入る。サーバーが旧文字列を前提にしていないか確認する。

React Nativeの公式ブログは0.88を最新の安定版とし、0.85系をサポート対象外にした。アプリから見える破壊的変更はないとしており、0.87であればアプリコードを変えずに上げられると説明している。イベントのプロパティ名、合成イベント、実行順は維持され、onLayoutのような直接イベントとタッチのレスポンダも従来どおりだ。

内部では、初期から使っていたプラグイン方式をやめ、キャプチャとバブリングを持つEventTargetが既定になった。公開APIの奥でプラグインレジストリを触っているコードは影響を受け得る。旧経路は0.88では内部フラグの後ろに残るが、追随の削除が予告されている。CanaryではネイティブのrefにaddEventListenerなどが載る。

iOSでは、Xcode 27でビルドするUIKitアプリが、iOS 27 SDKからUISceneライフサイクルなしでは起動に失敗すると書かれている。0.88はAppDelegate経路を残したまま、RCTReactNativeFactoryにSceneDelegate用の開始メソッドを足した。対応は単一シーンに限られ、UIApplicationSupportsMultipleScenesはfalseのままにする。新規テンプレートは新しい入口を使い、既存アプリはSceneDelegateとInfo.plistのUIApplicationSceneManifestを移す。

TextとTextInputではfontVariationSettingsが両プラットフォームで使える。JavaのTurboModuleはArrayBufferを直接受け渡せる。Androidの既定User-Agentにはアプリ名とバージョンが含まれるようになり、旧来の文字列を前提にしているサーバーは別の値を受け取る。ExpoではSDK 58で0.88が使える予定である。