Ipassact

Upgrading to React Native 0.84: Embrace Hermes V1 and Faster Builds

Learn how to upgrade your React Native project to version 0.84, which enables Hermes V1 by default, uses precompiled iOS binaries, and removes legacy architecture for improved performance and build times.

Ipassact · 2026-05-03 08:42:15 · Mobile Development

Introduction

React Native 0.84 marks a significant milestone by making Hermes V1 the default JavaScript engine across both iOS and Android. This upgrade brings automatic performance improvements—faster execution speeds and reduced memory usage—without requiring any migration effort if you're already using Hermes (the default since 0.70). Additionally, React Native 0.84 ships precompiled iOS binaries by default, cutting down build times, and continues to remove legacy architecture code to streamline your app. This guide walks you through updating your project to version 0.84, verifying the new defaults, and optionally opting out where needed.

Upgrading to React Native 0.84: Embrace Hermes V1 and Faster Builds

What You Need

  • Existing React Native project (version 0.70 or later recommended for smooth transition)
  • Node.js 22 or higher (minimum required by React Native 0.84)
  • Yarn, npm, or pnpm for package management
  • CocoaPods (for iOS development)
  • Android Studio (for Android development)
  • Basic familiarity with terminal/command line

Step-by-Step Guide

Step 1: Update Your Project to React Native 0.84

Start by upgrading your React Native framework and all related dependencies. Use the React Native upgrade helper or run the following commands: (assuming you use npm)

  1. In your project root, run npm install react-native@0.84.0 or yarn add react-native@0.84.0.
  2. Update react and react-dom to compatible versions (refer to the official Upgrade Guide).
  3. Run cd ios && pod install && cd .. to update iOS dependencies.
  4. For Android, ensure your android/build.gradle and android/app/build.gradle reference the correct React Native version and have the required repositories.

Step 2: Verify That Hermes V1 Is Enabled

Starting with 0.84, Hermes V1 is the default engine. No additional configuration is needed if you were already using Hermes (default since 0.70). To confirm:

  • Check that your metro.config.js does not explicitly disable Hermes.
  • On Android, open android/gradle.properties and look for hermesV1Enabled. If not present, it defaults to true. If you see false, change it to true or remove the line.
  • On iOS, during pod install, Hermes V1 is used automatically. You can verify by checking the Podfile.lock for hermes-engine version.

Step 3: Take Advantage of Precompiled iOS Binaries

React Native 0.84 ships precompiled .xcframework binaries for iOS by default. This eliminates the need to compile React Native core from source each time you do a clean build. No action is required—just run pod install normally. If you later need to build from source (e.g., for custom native code modifications), you can disable this by setting RCT_USE_PREBUILT_RNCORE=0 when running pod install.

Step 4: Remove Legacy Architecture Code

With 0.84, the New Architecture is the only runtime option (started in 0.82). React Native now automatically excludes legacy architecture components from both platforms. For iOS, the experimental flag RCT_REMOVE_LEGACY_ARCH is enabled by default. This reduces build time and app size. You don't need to do anything—your app will no longer include those legacy files. Ensure you have migrated all native modules to the New Architecture (see Tips).

Step 5: Test Performance and Build Times

After upgrading, run your app in both debug and release modes. Pay attention to:

  • Startup time: Hermes V1 typically improves JS execution speed.
  • Memory usage: Monitor with tools like React DevTools or Xcode Instruments.
  • Build duration: On iOS, you should notice significantly faster clean builds thanks to precompiled binaries.
  • App size: The removal of legacy architecture code may shrink your app bundle.

If everything works as expected, you're all set! If you encounter issues, refer to the Opting Out section below.

Tips and Troubleshooting

  • Test on both platforms: While the changes are mostly automatic, always test iOS and Android separately.
  • Opt out of Hermes V1 if needed: Legacy projects that depend on JSC or older Hermes can force the previous Hermes compiler by adding overrides in package.json:
// For Yarn (resolutions)
"resolutions": { "hermes-compiler": "0.15.0" }
// For npm (overrides)
"overrides": { "hermes-compiler": "0.15.0" }
// For pnpm
"pnpm": { "overrides": { "hermes-compiler": "0.15.0" } }

On iOS, also set environment variables RCT_HERMES_V1_ENABLED=0 and RCT_USE_PREBUILT_RNCORE=0 during pod install. On Android, set hermesV1Enabled=false in gradle.properties and build from source.

  • Check Node.js version: Run node --version; ensure it's 22 or higher.
  • Migrate native modules: If you use third-party libraries, confirm they support the New Architecture. You can run npx react-native-community check for compatibility.
  • Clean rebuild after upgrade: Delete node_modules, run npm install (or yarn), and on iOS delete Podfile.lock and re-run pod install to avoid cache issues.
  • Monitor your app size: The removal of legacy architecture code should reduce binary size; measure before and after.
  • Stay updated: React Native continues to evolve; watch the official blog for future releases that may remove more legacy code.

With these steps, you'll harness the full performance potential of React Native 0.84. Enjoy faster builds and a leaner app!

Recommended