ClaudeReact 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.

claudeenmodel: claude-sonnet-4-20250514

React Native 0.84 - Hermes V1 by Default

Key Points

  • Hermes V1 engine now default for automatic performance improvements
  • Precompiled iOS binaries reduce build times significantly
  • Legacy Architecture code removal continues on iOS and Android

Summary

React Native 0.84 makes Hermes V1 the default JavaScript engine, bringing significant performance improvements to all apps. The release also enables precompiled iOS binaries by default, continues removing Legacy Architecture components, and requires Node.js 22 minimum.

Key Points

  • Hermes V1 Default: Automatic performance gains with improved execution speed and reduced memory usage for all apps
  • Precompiled iOS Binaries: Significantly reduced build times by using precompiled .xcframework binaries during pod install
  • Legacy Architecture Removal: Continued cleanup of legacy code on both iOS and Android, reducing build time and app size
  • Node.js 22 Required: Minimum version bump to v22.11 for modern JavaScript features
  • React 19.2.3: Updated to latest React version with fixes and improvements
  • ESLint v9 Support: Flat Config support for latest ESLint tooling
  • Enhanced Platform Support: Additional image formats (HEIC/HEIF), keyboard events on Android, improved accessibility
  • URL API Improvements: Added missing standard properties and methods to bring closer to web standards

Breaking Changes

  • iOS: Changes to RCTImage observer API declarations
  • Android: Removed BridgeDevSupportManager and several Legacy Architecture classes
  • C++: JSBigString now implements jsi::Buffer directly
  • JS: Removed legacy Perf and Network tabs from Element Inspector

Full Translation

Translations

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

claudejamodel: claude-sonnet-4-20250514

React Native 0.84 - Hermes V1がデフォルトに

本日、React Native 0.84のリリースを発表できることを嬉しく思います!このリリースでは、Hermes V1がデフォルトのJavaScriptエンジンとなり、すべてのReact Nativeアプリに大幅なパフォーマンス向上をもたらします。また、iOSとAndroidの両方でLegacy Architectureの削除を継続し、デフォルトでプリコンパイル済みiOSバイナリを提供しています。

ハイライト

  • Hermes V1がデフォルトに
  • iOSでプリコンパイル済みバイナリがデフォルトに
  • Legacy Architectureコンポーネントの削除
  • Node.js 22が最小要件に

Hermes V1がデフォルトに

Hermes V1は、React Native 0.82での初期実験的オプトインに続き、現在iOSとAndroidの両方でReact NativeのデフォルトのJavaScriptエンジンとなりました。Hermes V1は、Hermesエンジンの次の進化を表し、コンパイラとVMの両方に大幅な改善を加え、測定可能なJavaScriptパフォーマンスの向上を実現します。

アプリへの影響

  • 自動的なパフォーマンス向上: すべてのアプリがデフォルトでHermes V1を使用し、実行速度の向上とメモリ使用量の削減をもたらします。
  • 移行不要: すでにHermes(0.70以降のデフォルト)を使用している場合、自動的にHermes V1を取得できます。設定変更は不要です。

Hermes V1からのオプトアウト

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

package.jsonでlegacy hermes-compilerパッケージのインストールを強制します:

npm

"overrides": {
  "hermes-compiler": "0.15.0"
}

yarn

"resolutions": {
  "hermes-compiler": "0.15.0"
}

pnpm

"pnpm": {
  "overrides": {
    "hermes-compiler": "0.15.0"
  }
}

iOS

CocoaPodsの依存関係をインストールする際、RCT_HERMES_V1_ENABLED=0RCT_USE_PREBUILT_RNCORE=0環境変数を渡します。

Android

android/gradle.propertiesファイル内にhermesV1Enabled=falseを追加し、React Nativeをソースからビルドするようにアプリケーションを設定します。

iOSでプリコンパイル済みバイナリがデフォルトに

React Native 0.84では、iOSでプリコンパイル済みバイナリがデフォルトで提供されるようになりました。以前はオプトインとして導入されていましたが、プリコンパイル済みバイナリが標準で有効になり、iOSアプリのビルド時間が大幅に短縮されます。これにより、クリーンビルドを行うたびにReact Nativeコアをソースからコンパイルする必要がなくなります。プリコンパイル済みの.xcframeworkバイナリは、pod installの際に自動的にダウンロードされ使用されます。

注意: React Nativeをソースからビルドする必要がある場合(例:Hermes V1からオプトアウトする場合)、podのインストール時にRCT_USE_PREBUILT_RNCORE=0を設定することでプリコンパイル済みバイナリを無効にできます。

Legacy Architectureコンポーネントの削除

0.82で開始された作業(New Architectureを唯一のランタイムオプションにした)に基づき、React Native 0.84ではiOSとAndroidの両方からLegacy Architectureコードの削除を継続しています。RFCで説明されているように、各リリースでいくつかのLegacy Architectureクラスを削除しています。

iOS

0.83では、Legacy Architectureコードをコンパイルから除外する実験的なRCT_REMOVE_LEGACY_ARCHフラグを導入しました。0.84では、これがデフォルトの動作となり、Legacy ArchitectureコードはiOSビルドに含まれなくなり、ビルド時間とアプリサイズの両方が削減されます。

すでにNew Architectureを使用しているアプリでは破損は予想されません。互換性に必要なInterop Layerコードは引き続き配置されています。

iOSでLegacy Architectureコードを再有効化する場合

iOSビルドでLegacy Architectureコードを再有効化する必要がある場合は、ソースからビルドする必要があります。以下のフラグでCocoaPodsの依存関係をインストールしてください:

RCT_USE_PREBUILT_RNCORE=0 RCT_REMOVE_LEGACY_ARCH=0 bundle exec pod install

Android

削除されたLegacy Architectureクラス

このリリースで以下のクラスが削除されました:

  • 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バージョンを更新してください。Nodeバージョンの管理には、nvmやfnmなどのNodeバージョンマネージャーの使用を推奨します。

その他の変更

React 19.2.3

このリリースでは、React 19.2.3をReact Nativeに同期し、Reactチームからの最新の修正と改善が含まれています。

ESLint v9 Flat Config

React NativeのESLint設定がESLint v9 Flat Configをサポートし、プロジェクトで最新のESLintツールを採用しやすくなりました。

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

  • 画像フォーマット: React Native 0.84では、追加の画像フォーマット(HEICとHEIF)のサポートが含まれ、最新のカメラ出力と画像ライブラリでの作業が容易になります。
  • PlatformColor: アニメーション補間と出力範囲でのPlatformColorのテストとサポートが強化されました。
  • Androidでのキーボードイベント: AndroidでonKeyDown/onKeyUpサポートが追加され、ハードウェアキーボードとTVリモコンのキーボードイベント処理が可能になりました。

アクセシビリティ

onPressまたはonLongPressハンドラーを持つTextコンポーネントは、アクセシビリティサポートの向上のため自動的にaccessibilityRole="link"を受け取り、スクリーンリーダーがインタラクティブなテキスト要素を適切にアナウンスできるようになります。

Androidでは、リサイクルされたビューのアクセシビリティ状態の問題を修正するための重要な作業が行われ、ビューがリサイクルされる際にisClickableOnClickListenerの状態が適切にリセットされ、スクリーンリーダーが不正確な状態をアナウンスすることを防ぎます。

URL API改善

URL(hashhostpathnameなど)に不足していた標準プロパティと、URLSearchParams(getsetdeleteなど)にメソッドを追加し、React NativeのURL実装をWeb標準により近づけました。また、URLSearchParamsの重複エントリの問題も修正されました。

その他の破壊的変更

iOS

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

Android

BridgeDevSupportManagerが削除されました。

C++

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

JS

レガシーのPerfとNetworkタブがアプリ内Element Inspectorから削除されました。これらの機能はReact Native DevToolsで利用可能になったためです。

0.84の破壊的変更の完全なリストは、CHANGELOGをご覧ください。

非推奨

このリリースでは2つの非推奨があります:

  • ネットワーキング: XHRInterceptorとWebSocketInterceptor APIが非推奨になりました。開発者ツールは代わりにChrome DevTools Protocol(CDP)Networkドメインを使用してください。
  • TurboModules: TurboModuleProviderFunctionTypeが非推奨になりました。

謝辞

React Native 0.84には、95人の貢献者による650以上のコミットが含まれています。皆様のご尽力に感謝いたします!

このリリースで重要な貢献をしてくださった方々に特別な感謝を送ります:

  • Riccardo Cipolleschi: デフォルトでのプリコンパイル済みiOSバイナリとiOSでのLegacy Architecture削除
  • Rob Hogan: Node.js 22バージョンアップ
  • Fabrizio Cucci: Androidでのアクセシビリティ改善
  • @pipopotamasu: ESLint v9 Flat Configサポート

0.84へのアップグレード

注意: 0.84は現在React Nativeの最新安定版であり、0.81.xはサポート対象外になります。詳細については、React Nativeのサポートポリシーをご覧ください。

アップグレード

既存のプロジェクトについては、React Native Upgrade Helperを使用してReact Nativeバージョン間のコード変更を確認し、アップグレードドキュメントも併せてご利用ください。

💡 新機能: Community CLIプロジェクト向けの実験的な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と共に提供される予定です。