React Native 0.84: Hermes V1 Becomes Default, Build Times Slash, and Legacy Code Removed
Introduction
The React Native team has officially released version 0.84, bringing a host of performance improvements and streamlining the development experience. This update makes Hermes V1 the default JavaScript engine on both iOS and Android, ships precompiled binaries on iOS by default, continues the removal of legacy architecture components, and raises the minimum Node.js version to 22. Let's dive into what each of these changes means for your apps.
Hermes V1 Becomes the Default JavaScript Engine
Following an experimental opt-in period in React Native 0.82, Hermes V1 is now the standard JavaScript engine across all platforms. This next-generation engine includes significant upgrades to both the compiler and virtual machine, resulting in measurable improvements in JavaScript execution speed and memory consumption.
What this means for your app:
- Automatic performance gains: Every app will immediately benefit from faster execution and reduced memory usage without any code changes.
- No migration required: If you were already using Hermes (default since version 0.70), you automatically get Hermes V1. No configuration updates are needed.
Opting Out of Hermes V1
If you need to revert to the legacy Hermes compiler for compatibility reasons, you can disable Hermes V1 using the following methods:
- Package manager override: Force the legacy
hermes-compilerpackage version 0.15.0 viaoverrides(npm),resolutions(Yarn), orpnpm.overridesin yourpackage.json. - iOS: When installing CocoaPods, set the environment variables
RCT_HERMES_V1_ENABLED=0andRCT_USE_PREBUILT_RNCORE=0. - Android: Add
hermesV1Enabled=falsetoandroid/gradle.propertiesand configure the project to build React Native from source.
Precompiled Binaries on iOS Speed Up Builds
React Native 0.84 now ships precompiled iOS binaries by default. Previously an opt-in feature, this means you no longer have to compile React Native core from source during a clean build. The precompiled .xcframework files are automatically downloaded and used during pod install, significantly reducing build times.
If you need to build from source—for example, because you opted out of Hermes V1—you can disable precompiled binaries by setting RCT_USE_PREBUILT_RNCORE=0 when installing pods.
Removal of Legacy Architecture Components
Building on the foundation laid in version 0.82 (which made the New Architecture the only runtime option), React Native 0.84 continues removing legacy architecture code from both iOS and Android.
iOS Changes
In version 0.83, the experimental RCT_REMOVE_LEGACY_ARCH flag allowed you to compile out legacy code. Starting with 0.84, this behavior is the default. Legacy architecture code is no longer included in iOS builds, resulting in shorter build times and smaller app sizes. No breakages are expected for apps already running on the New Architecture.
Android and Future Plans
While this release focuses on iOS, Android legacy code removal will follow a similar path in upcoming versions. Developers are encouraged to ensure their apps are fully compatible with the New Architecture to prepare for future updates.
Node.js 22 Minimum Requirement
React Native 0.84 requires Node.js version 22 or higher. This change ensures compatibility with the latest JavaScript tooling and security updates. If you're running an older version, upgrade Node.js before updating your React Native project.
Conclusion
React Native 0.84 marks a major step forward in performance and developer experience. With Hermes V1 as the default engine, precompiled iOS binaries, and the gradual removal of legacy architecture, apps will run faster and build more efficiently. Make sure your project meets the Node.js 22 requirement and test for any compatibility issues with the New Architecture. For more details, see the official release notes.
Related Articles
- Google’s Circle to Search: Hidden Feature Outshines Advertised Capabilities, Users Report
- Your Complete Guide to Apple's Q2 2026 Earnings Call: Key Details and How to Tune In
- Transitioning from CocoaPods to Swift Package Manager in Flutter: A Step-by-Step Migration Guide
- 5 Things You Need to Know About pluck vs. select in Rails
- Why Swift Powers the TelemetryDeck Analytics Service: 8 Key Insights
- Unlocking the Hidden Power of Google’s Circle to Search: The Feature Google Doesn’t Talk About
- Exploring React Native 0.78: React 19 Integration and Key Enhancements
- Mastering the iOS 26 Phone App: How Two Powerful Features Simplify Calling