ClaudeReact Native2026/02/11 0:00

React Native 0.84 - Hermes V1 by Default

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

元記事

Quick Digest

要約

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

claudejamodel: claude-sonnet-4-20250514

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

Key Points

  • Hermes V1がデフォルトエンジンとなりパフォーマンス向上
  • iOSプリコンパイルバイナリでビルド時間短縮
  • Legacy Architectureコードの継続的削除

Summary

React Native 0.84がリリースされ、Hermes V1がデフォルトのJavaScriptエンジンとなりました。パフォーマンスの大幅な向上、iOSプリコンパイルバイナリのデフォルト化、Legacy Architectureの継続的な削除が含まれています。

Key Points

  • Hermes V1デフォルト化: iOS・Android両方でHermes V1が標準となり、実行速度向上とメモリ使用量削減を実現
  • iOSプリコンパイルバイナリ: デフォルトで有効化され、クリーンビルド時間を大幅短縮
  • Legacy Architecture削除: iOSではデフォルトでLegacy Architectureコードを除外、Androidでは複数のLegacyクラスを削除
  • Node.js 22必須: v22.11以降が必要、モダンなJavaScript機能の利用が向上
  • React 19.2.3同期: 最新のReactの修正と改善を含む
  • ESLint v9 Flat Config対応: 最新のESLintツールチェーンをサポート
  • プラットフォーム機能強化: HEIC/HEIF画像フォーマット対応、Android keyboard events、アクセシビリティ改善
  • URL API改善: Web標準により近いURL実装を提供

Full Translation

翻訳

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

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