Upgrading to React Native 0.84: Embracing Hermes V1, Faster Builds, and a Cleaner Architecture
Overview
React Native 0.84 marks a significant milestone in the framework's evolution, bringing Hermes V1 as the default JavaScript engine on both iOS and Android. This release also makes precompiled iOS binaries the standard, dramatically accelerating build times, and continues the systematic removal of Legacy Architecture components. Additionally, Node.js 22 is now the minimum supported version. This guide will walk you through everything you need to know to upgrade smoothly, including step-by-step instructions, code examples, and common pitfalls to avoid.
Prerequisites
- An existing React Native project (version 0.70 or later is recommended for simplest migration)
- Node.js 22 or newer installed on your development machine
- Familiarity with the command line and package managers (npm, yarn, or pnpm)
- For iOS: macOS with Xcode 15+ and CocoaPods
- For Android: Android Studio with SDK 24+
Step-by-Step Instructions
1. Upgrade Your Project to React Native 0.84
Use the React Native CLI upgrade tool to bump your project version. The recommended approach is using npx react-native upgrade or the @react-native-community/cli upgrade command:
npx react-native upgrade 0.84.0
Alternatively, you can manually update the react-native dependency in your package.json and reinstall pods on iOS:
npm install react-native@0.84.0
cd ios && pod install
2. Verify Hermes V1 Is Active
Hermes V1 is the default JavaScript engine from version 0.84 onward. To confirm it's running, check your build logs for the Hermes version string (e.g., Hermes version 0.13.0). On Android, you can also inspect the APK's libhermes.so file. If you were already using Hermes (the default since 0.70), no migration steps are needed – you automatically get V1.
3. Benefit from Precompiled Binaries on iOS (Enabled by Default)
React Native 0.84 ships precompiled .xcframework binaries for iOS. This means during pod install, the framework downloads and uses these binaries instead of compiling React Native core from source. Build times are significantly reduced, especially for clean builds. No action is required on your part – it works out of the box.
4. Handle Legacy Architecture Removal
Starting with 0.84, the Legacy Architecture code is compiled out by default on iOS (previously controlled by RCT_REMOVE_LEGACY_ARCH flag). The New Architecture is now the sole runtime. If your app already runs on the New Architecture (recommended since 0.76), you should see no breakages. However, if you have custom native modules or third-party libraries still relying on Legacy components, you may need to update them.
5. Update Node.js to Version 22
Node.js 22 is the minimum requirement for React Native 0.84. Check your current version with node --version. If it's lower, download and install Node.js 22 from the official website or use a version manager like nvm:
nvm install 22
nvm use 22
Opting Out of Hermes V1 (If Needed)
Important: Though not recommended, you can revert to the legacy Hermes compiler if you encounter compatibility issues. Use these steps only as a temporary workaround.
Package Manager Override
Force the installation of the legacy hermes-compiler package by adding an override in 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: Disable Hermes V1 and Prebuilt Binaries
When installing CocoaPods dependencies, run:
RCT_HERMES_V1_ENABLED=0 RCT_USE_PREBUILT_RNCORE=0 pod install
Android: Disable Hermes V1 and Build from Source
Add the following to android/gradle.properties:
hermesV1Enabled=false
Additionally, you must configure the application to build React Native from source. This usually involves editing android/app/build.gradle and ensuring reactNativeArchitectures is set correctly. See the official documentation for details.
Common Mistakes
- Assuming automatic upgrade without verifying Node.js version: Make sure Node.js 22+ is installed before upgrading React Native, otherwise install scripts may fail.
- Forgetting to update native dependencies: Many third-party libraries need updates to support the New Architecture exclusively. Run
npx react-native-toolkit-checkto audit compatibility. - Skipping pod install after code changes: If you disable Hermes V1 on iOS, you must pass environment variables each time you run
pod install. Forgetting to setRCT_USE_PREBUILT_RNCORE=0will cause build errors because precompiled binaries are still used but have V1 enabled. - Not cleaning the build after opting out: On Android, after adding
hermesV1Enabled=false, always runcd android && ./gradlew cleanto remove cached artifacts. - Ignoring deprecation warnings: React Native 0.84 outputs warnings for any code still referencing Legacy Architecture patterns (e.g.,
RCTBridge). Treat these as errors to avoid future breakage.
Summary
React Native 0.84 delivers a hassle-free upgrade path with major performance and build-time improvements. By making Hermes V1 the default and shipping precompiled iOS binaries, developers gain free speed and efficiency. The removal of Legacy Architecture simplifies the native layer, while the raised Node.js requirement ensures modern tooling compatibility. Follow the steps above to migrate safely, and use the opt-out instructions only if absolutely necessary. Your apps will run faster and build faster – a win-win for all React Native projects.
Related Articles
- 7 Essential Insights into Pin Clustering in .NET MAUI Maps
- AI Inbox Hits Gmail Mobile: Bottom Bar Redesign and Personalized Writing Boost
- Xteink Restricts Custom Firmware on Select eReaders While Unveiling a New Android Model
- How to Track Google's Next-Generation AI Agent Development: The 'Remy' Initiative
- Apple Discontinues Top-Tier Mac Studio Memory Configurations Amid Supply Shortages and AI Demand Surge
- Flutter 3.44 Drops CocoaPods: Swift Package Manager Becomes Default Dependency Manager for iOS and macOS
- Migrating Your Flutter Projects to Swift Package Manager: A Step-by-Step Guide
- iOS 27 to Integrate AI Into Camera App; Tim Cook Reflects on Career; iPhone Battery Drain Issue Emerges