React Native version 0.84 is now available, marking a significant step forward for the framework. This release focuses on performance, developer experience, and codebase modernization. Key highlights include making Hermes V1 the default JavaScript engine, shipping precompiled iOS binaries by default, further removal of legacy architecture components, and raising the minimum Node.js version to 22. Below we break down what each change means for your projects.
Hermes V1 Becomes the Default JavaScript Engine
Following experimental support introduced in React Native 0.82, Hermes V1 is now the default JavaScript engine on both iOS and Android. This upgraded engine features a revamped compiler and virtual machine, delivering measurable improvements in JavaScript execution speed and memory efficiency.
What This Means for Your Apps
- Automatic performance gains: Every app built with React Native 0.84 will experience faster execution and lower memory usage out of the box.
- No migration required: If you were already using Hermes (the default since version 0.70), the upgrade to Hermes V1 happens seamlessly. No configuration changes are needed.
Opting Out of Hermes V1
Though Hermes V1 is the recommended engine, you can revert to the legacy Hermes compiler if necessary. Follow these steps:
Package Manager Override
Force the installation of the legacy hermes-compiler package by adding an override to your package.json:
- npm:
"overrides": { "hermes-compiler": "0.15.0" } - yarn:
"resolutions": { "hermes-compiler": "0.15.0" } - pnpm:
"pnpm": { "overrides": { "hermes-compiler": "0.15.0" } }
iOS
When installing CocoaPods dependencies, set the environment variables:
RCT_HERMES_V1_ENABLED=0 RCT_USE_PREBUILT_RNCORE=0 pod install
Android
Add hermesV1Enabled=false inside your android/gradle.properties file, and configure the app to build React Native from source.
Precompiled iOS Binaries by Default
React Native 0.84 ships precompiled iOS binaries out of the box. Previously an opt-in feature, this change dramatically reduces build times—especially for clean builds—because the React Native core no longer has to be compiled from source each time. The precompiled .xcframework binaries are automatically fetched and used during pod install.
Note: If you need to build React Native from source (e.g., to opt out of Hermes V1), disable precompiled binaries by setting RCT_USE_PREBUILT_RNCORE=0 when installing pods.
Legacy Architecture Components Removed
Continuing the migration started in version 0.82—which made the New Architecture the only runtime option—React Native 0.84 strips out more legacy code from both iOS and Android. This aligns with the RFC on legacy architecture removal.
iOS
In 0.83, an experimental flag RCT_REMOVE_LEGACY_ARCH was introduced to compile out legacy architecture code. In 0.84, this behavior is now the default: legacy architecture code is no longer included in iOS builds, resulting in smaller app sizes and shorter compilation times. Apps already running on the New Architecture should experience no breakages.
Android
Similar removal of legacy architecture classes continues on Android, further streamlining the codebase and reducing maintenance overhead.
Node.js 22 Minimum Requirement
React Native 0.84 requires Node.js 22 or later. This ensures you have access to the latest JavaScript runtime features and security patches.
Getting Started with React Native 0.84
Upgrade your existing project or initialize a new one using the React Native CLI. As always, review the official release notes for a complete list of changes, deprecations, and migration guides. We encourage all developers to upgrade to take advantage of the performance and build improvements in this release.