OpenAIReact NativeFeb 11, 2026, 12:00 AM

React Native 0.84 - Hermes V1 by Default

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

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

React Native 0.84 - Hermes V1 by Default

Key Points

  • Hermes V1 is default
  • Precompiled iOS binaries by default
  • Node.js v22 minimum

Summary

React Native 0.84 makes Hermes V1 the default JavaScript engine on iOS and Android, ships precompiled iOS binaries by default, and continues removing Legacy Architecture code. This release also raises the minimum Node.js version to v22.11+, syncs React 19.2.3, and includes platform, accessibility, and tooling improvements.

Key Points

  • Hermes V1 default

    • Hermes V1 is now the default engine for new and existing apps using Hermes (no config change required).
    • To opt out: pin the legacy hermes-compiler via npm/yarn/pnpm overrides or resolutions, and build from source.
    • iOS opt-out flags during pod install: set RCT_HERMES_V1_ENABLED=0 and RCT_USE_PREBUILT_RNCORE=0.
    • Android opt-out: set hermesV1Enabled=false in android/gradle.properties and build RN from source.
  • Precompiled iOS binaries

    • RN now downloads and uses precompiled .xcframework binaries during pod install by default to dramatically reduce iOS build times.
    • To build RN from source on iOS, set RCT_USE_PREBUILT_RNCORE=0 when installing pods.
  • Legacy Architecture removal

    • Legacy Architecture code is compiled out by default on iOS (RCT_REMOVE_LEGACY_ARCH behavior enabled) and multiple Legacy classes were removed on Android.
    • To re-enable legacy code, build from source and set RCT_USE_PREBUILT_RNCORE=0 and RCT_REMOVE_LEGACY_ARCH=0 for iOS.
  • Tooling and platform changes

    • Node.js minimum: v22.11 or later — upgrade your environment before upgrading RN.
    • Synced React 19.2.3, ESLint v9 flat config support, HEIC/HEIF image support, Android keyboard events, and accessibility fixes.
  • Breaking changes and deprecations

    • Review the 0.84 CHANGELOG for breaking changes (C++ BigString API, removed Android classes, Image observer API adjustments, removed legacy Perf/Network tabs).
    • Deprecations: XHRInterceptor/WebSocketInterceptor and TurboModuleProviderFunctionType.

Upgrade guidance

  • Use the React Native Upgrade Helper and Upgrading docs.
  • Recommended: test on CI with Node v22, ensure native build flags and package overrides are set if you must opt out of defaults.
  • Expo: 0.84 will appear on expo@canary; SDK 56 will ship with RN 0.85.

Full Translation

Translations

A translation section that keeps the flow of the original article.

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 とともに提供される予定です。