Xshell Pro
📖 Tutorial

Upgrading to React Native 0.84: Embracing Hermes V1, Faster Builds, and a Cleaner Architecture

Last updated: 2026-05-08 20:39:32 Intermediate
Complete guide
Follow along with this comprehensive guide

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.

Upgrading to React Native 0.84: Embracing Hermes V1, Faster Builds, and a Cleaner Architecture

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-check to 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 set RCT_USE_PREBUILT_RNCORE=0 will 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 run cd android && ./gradlew clean to 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.