OpenAIReact Native2026/02/11 0:00

React Native 0.84 - Hermes V1 by Default

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Native 0.84 — Hermes V1 をデフォルトに

Key Points

  • Hermes V1 がデフォルト
  • iOS でプリビルドバイナリ有効
  • Node.js 22 が必須

Summary

React Native 0.84 がリリースされ、Hermes V1 が iOS/Android でデフォルトの JS エンジンになりました。iOS はプリビルド .xcframework を標準化し、Legacy Architecture のコード削除を継続、Node.js は v22.11+ を必須とします。エンジニア向けに移行影響と回避方法を短くまとめます。

Key Points

  • Hermes V1 がデフォルト

    • 既に Hermes を使っているプロジェクトは自動で V1 に。パフォーマンス向上(実行速度・メモリ)を期待できます。
    • Hermes V1 を無効化する例:
      • package manager 側で古い hermes-compiler を強制する(package.json の overrides / resolutions / pnpm.overrides)
      • iOS: CocoaPods インストール時に環境変数を設定: RCT_HERMES_V1_ENABLED=0 と RCT_USE_PREBUILT_RNCORE=0
      • Android: android/gradle.properties に hermesV1Enabled=false を設定し、RN をソースからビルド
  • iOS のプリビルドバイナリがデフォルト

    • pod install 時に自動で .xcframework をダウンロードして利用。クリーンビルド時間が大幅短縮。
    • ソースビルドが必要な場合は pod install 時に RCT_USE_PREBUILT_RNCORE=0 を指定。
  • Legacy Architecture の削除継続

    • 既定で iOS ビルドからレガシーコードを除外(RCT_REMOVE_LEGACY_ARCH がデフォルトで有効)。互換性レイヤは残るため既存の New Architecture 対応アプリに大きな影響は少ないはず。
    • 再有効化するにはソースビルドで RCT_REMOVE_LEGACY_ARCH=0 を指定。
  • Node.js 要件

    • Node.js v22.11 以上が必須。nvm/fnm 等でアップグレードを推奨。
  • 注意すべき破壊的変更・その他

    • Android のいくつかの Legacy クラスが削除。ネイティブモジュールやカスタム依存をチェック。
    • iOS: ImageResponseObserverCoordinator の変更で一部サードパーティ(例: react-native-svg)に影響が出る可能性あり。
    • JS/DevTools: in-app の Perf/Network タブ削除、DevTools 側へ移行。
    • URL / URLSearchParams の標準プロパティ/メソッドが追加。ESLint v9 flat config をサポート。

Upgrade checklist (短め)

  • Node を v22.11+ に更新
  • ネイティブ依存(Android/iOS)のコンパイルとテストを実行
  • Hermes 固有の挙動確認(メモリ・パフォーマンス・デバッガ)
  • 必要に応じて上記の無効化フラグを使用してソースビルドで検証

References

  • 詳細な変更点や破壊的変更は公式 CHANGELOG を参照してください。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Native 0.84 - デフォルトで Hermes V1

React Native 0.84 リリース

本日、React Native 0.84 をリリースします!このリリースでは、Hermes V1 が iOS と Android のデフォルト JavaScript エンジンになり、すべての React Native アプリで大幅なパフォーマンス向上が期待できます。さらに、iOS でプリコンパイル済みバイナリをデフォルトで提供するようになり、iOS/Android ともにレガシーアーキテクチャの削除を継続しています。

ハイライト

  • Hermes V1 をデフォルトに
  • iOS でのプリコンパイル済みバイナリをデフォルトで提供
  • レガシーアーキテクチャコンポーネントの削除
  • Node.js 22 を最低要件に

Hermes V1 をデフォルトに

Hermes V1 は React Native の iOS / Android 両プラットフォームでデフォルトの JavaScript エンジンになりました(React Native 0.82 での実験的オプトインの後)。Hermes V1 はコンパイラと VM の改善により、計測可能な JavaScript 性能の向上を提供します。

何が意味するか

  • 自動的なパフォーマンス向上: すべてのアプリはデフォルトで Hermes V1 を使用し、実行速度の向上とメモリ使用量の削減が見込まれます。
  • マイグレーション不要: すでに Hermes を使用している場合(デフォルトは 0.70 以降)、Hermes V1 が自動的に有効になります。追加の設定は不要です。

Hermes V1 をオプトアウトする方法

  • パッケージマネージャのオーバーライド

    • npm(package.jsonoverrides
      • "overrides": { "hermes-compiler": "0.15.0" }
    • yarn(package.jsonresolutions
      • "resolutions": { "hermes-compiler": "0.15.0" }
    • pnpm(package.jsonpnpm.overrides
      • "pnpm": { "overrides": { "hermes-compiler": "0.15.0" } }
  • iOS

    • CocoaPods 依存関係をインストールする際に環境変数を渡します: RCT_HERMES_V1_ENABLED=0RCT_USE_PREBUILT_RNCORE=0
  • Android

    • android/gradle.propertieshermesV1Enabled=false を追加し、React Native をソースからビルドするようにアプリケーションを構成します。

iOS のプリコンパイル済みバイナリをデフォルトで提供

React Native 0.84 は iOS でプリコンパイル済みの .xcframework バイナリをデフォルトで配布します。以前はオプトインだったこの仕組みがデフォルト化され、iOS アプリのビルド時間が大幅に短縮されます。クリーンビルドのたびに React Native コアをソースからコンパイルする必要がなくなり、pod install 時にプリコンパイル済みバイナリが自動ダウンロードされて使用されます。

  • ソースからビルドする必要がある(例: Hermes V1 をオプトアウトする)場合は、pod install 実行時に RCT_USE_PREBUILT_RNCORE=0 を設定してプリビルトを無効化してください。

レガシーアーキテクチャコンポーネントの削除

0.82 で開始した作業(New Architecture を唯一のランタイムオプションにした)を踏まえ、0.84 では iOS と Android 両方からレガシーアーキテクチャのコードをさらに削除しています。RFC に記載のとおり、各リリースで複数のレガシークラスを削除しています。

iOS

  • 0.83 で導入した実験的フラグ RCT_REMOVE_LEGACY_ARCH によるレガシーコードのコンパイル除外は、0.84 でデフォルトの挙動になりました。iOS ビルドにレガシーアーキテクチャコードは含まれず、ビルド時間とアプリサイズが削減されます。
  • New Architecture 上にあるアプリに対しては破壊的変更は見込まれていません。互換性のために必要な Interop Layer のコードは残されています。

iOS でレガシーアーキテクチャコードを再有効化するには

  • ソースからビルドする必要があります。CocoaPods の依存をインストールする際に以下のフラグを指定してください:
    • RCT_USE_PREBUILT_RNCORE = 0
    • RCT_REMOVE_LEGACY_ARCH = 0

Android

  • 削除されたレガシーアーキテクチャクラス(主なもの):
    • com.facebook.react.LazyReactPackage
    • com.facebook.react.bridge.CxxModuleWrapper
    • com.facebook.react.bridge.CxxModuleWrapperBase
    • com.facebook.react.bridge.CallbackImpl
    • com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener
    • com.facebook.react.bridge.OnBatchCompleteListener
    • com.facebook.react.bridge.ReactCxxErrorHandler
    • com.facebook.react.bridge.ReactInstanceManagerInspectorTarget
    • com.facebook.react.modules.debug.DidJSUpdateUiDuringFrameDetector
    • com.facebook.react.devsupport.BridgeDevSupportManager
    • com.facebook.react.uimanager.NativeKind
    • com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener
    • com.facebook.react.uimanager.layoutanimation.LayoutAnimationController
    • com.facebook.react.uimanager.layoutanimation.LayoutAnimationListener

Node.js 22 以上が最低要件に

React Native 0.84 は Node.js v22.11 以降を要求します。これにより、React Native ツールチェーン全体でモダンな JavaScript 機能の利用が向上します。アップグレード前に Node.js のバージョンを更新してください。nvm や fnm といった Node バージョンマネージャの使用を推奨します。

その他の変更

  • React 19.2.3 を React Native に同期しています。
  • ESLint v9 Flat Config のサポートを追加し、最新の ESLint ツール導入が容易になりました。

プラットフォームサポート

  • 画像フォーマット: HEIC および HEIF のサポートを追加しました。
  • PlatformColor: アニメーション補間や出力レンジにおける PlatformColor のテストとサポートを強化しました。
  • Android のキーボードイベント: onKeyDown / onKeyUp を追加し、ハードウェアキーボードや TV リモコンのキーイベント処理を可能にしました。

アクセシビリティ

  • Text コンポーネントに onPressonLongPress ハンドラがある場合、自動的に accessibilityRole="link" が付与されるようになり、スクリーンリーダーでの案内が改善されます。
  • Android では、リサイクルされるビューに対するアクセシビリティ状態の問題を修正しました。ビューのリサイクル時に isClickableOnClickListener の状態が適切にリセットされるようになり、スクリーンリーダーが誤った状態を読み上げることを防ぎます。

URL API の改善

  • URL に標準プロパティ(hash, host, pathname など)を追加しました。
  • URLSearchParams にメソッド(get, set, delete など)を追加し、Web 標準に近づけました。URLSearchParams の重複エントリ問題も修正済みです。

その他の破壊的変更

iOS

  • ImageResponseObserverCoordinator の稀な EXC_BAD_ACCESS クラッシュを、オブザーバを参照カウントされたポインタでラップすることで修正しました。これにより RCTImage のオブザーバ API のオブジェクト宣言が変わるため、react-native-svg のような依存ライブラリに影響が出る可能性があります。

Android

  • BridgeDevSupportManager を削除しました。

C++

  • JSBigString が直接 jsi::Buffer を実装します。BigStringBuffer の仲介は削除(現在は非推奨)されました。BigStringBuffer を直接サブクラス化または依存しているコードは更新が必要になる場合があります。

JS

  • インアプリの Element Inspector から従来の PerfNetwork タブを削除しました。これらの機能は現在 React Native DevTools から利用できます。

詳細な破壊的変更は 0.84 の CHANGELOG を参照してください。

非推奨

  • Networking: XHRInterceptorWebSocketInterceptor API は非推奨になりました。開発者ツールは Chrome DevTools Protocol (CDP) の Network ドメインを使用してください。
  • TurboModules: TurboModuleProviderFunctionType が非推奨になりました。

謝辞

React Native 0.84 には 95 人のコントリビュータによる 650 を超えるコミットが含まれています。ご協力ありがとうございました!

特に本リリースで重要な貢献をしてくださった方々:

  • Riccardo Cipolleschi — iOS のプリコンパイル済みバイナリのデフォルト化と iOS におけるレガシーアーキテクチャの削除
  • Rob Hogan — Node.js 22 へのバージョン引き上げ
  • Fabrizio Cucci — Android のアクセシビリティ改善
  • @pipopotamasu — ESLint v9 Flat Config サポート

0.84 へのアップグレード

  • 情報: 0.84 は現在の最新安定版です。0.81.x はサポート対象外になります。詳細は React Native のサポートポリシーを参照してください。

アップグレード手順

  • 既存プロジェクトのバージョン間のコード差分を見るには React Native Upgrade Helper と Upgrading ドキュメントを参照してください。
  • 新機能: Community CLI Projects 向けの実験的な upgrade-react-native AI スキルを試すことができます。

新しいプロジェクトを作成する

  • npx @react-native-community/cli@latest init MyProject --version latest

Expo

  • Expo プロジェクト向けには、React Native 0.84 は expo@canary リリースの一部として利用可能になります。次の SDK(SDK 56)は、次の安定版 React Native リリース 0.85 とともに提供される予定です。