22548
Mobile Development

React Native 0.84 Guide: Unlocking Performance with Hermes V1 & More

Posted by u/Fonarow · 2026-05-14 04:59:27

Overview

React Native 0.84 marks a significant milestone in the framework's evolution by making Hermes V1 the default JavaScript engine across both iOS and Android. This release delivers automatic performance boosts, reduces build times via precompiled iOS binaries, and continues the clean removal of Legacy Architecture components. Developers upgrading will find a smoother, faster experience with minimal configuration changes. This tutorial covers everything you need to know to adopt React Native 0.84, including prerequisites, step-by-step migration, common pitfalls, and a summary of key benefits.

React Native 0.84 Guide: Unlocking Performance with Hermes V1 & More

Prerequisites

Before diving in, ensure your environment meets these requirements:

  • Node.js: Version 22 or higher (minimum requirement for React Native 0.84).
  • React Native CLI: Latest stable version.
  • CocoaPods (for iOS): Version 1.12 or later.
  • Android Studio and Xcode: Up-to-date versions for native builds.
  • Existing project: If upgrading from an older React Native version, ensure you are on React Native 0.70 or later (Hermes was default since 0.70).

Step-by-Step Instructions

1. Hermes V1 as Default Engine

React Native 0.84 switches the default JavaScript engine from Hermes (classic) to Hermes V1. This new version introduces compiler and VM optimizations that improve execution speed and reduce memory consumption—without any code changes on your part.

What It Means for Your App

  • Automatic gains: All apps using Hermes (default since 0.70) will now use Hermes V1. Expect faster startup and lower memory usage.
  • No migration required: If you're already on Hermes, you get Hermes V1 transparently.

Opting Out of Hermes V1 (If Necessary)

While Hermes V1 is the recommended engine, you can revert to the legacy Hermes compiler using one of these methods:

Package Manager Override

Force the installation of the legacy hermes-compiler package 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 Specific

When installing CocoaPods dependencies, pass these environment variables:

RCT_HERMES_V1_ENABLED=0 RCT_USE_PREBUILT_RNCORE=0 pod install
Android Specific

Add the following line to android/gradle.properties:

hermesV1Enabled=false

Then configure your app to build React Native from source (see Precompiled Binaries section for details).

2. Precompiled Binaries on iOS by Default

Starting with React Native 0.84, iOS builds ship with precompiled .xcframework binaries by default. This eliminates the need to compile React Native core from source during every clean build, drastically reducing pod install and build times.

Note: If you must build from source (e.g., to opt out of Hermes V1), disable precompiled binaries by setting RCT_USE_PREBUILT_RNCORE=0 when running pod install:

RCT_USE_PREBUILT_RNCORE=0 pod install

This approach ensures flexibility while keeping the default workflow optimal for most developers.

3. Legacy Architecture Components Removed

React Native 0.84 continues the deprecation path started in 0.82 by removing legacy architecture code on both platforms. The New Architecture is now the only runtime option.

iOS Changes

In 0.83, an experimental flag RCT_REMOVE_LEGACY_ARCH was introduced to compile out legacy code. In 0.84, this is now the default: legacy architecture code is no longer included in iOS builds. This reduces both build time and app size.

  • No breakages expected if you're already using the New Architecture.
  • If you encounter issues, verify that your project does not rely on deprecated APIs.

Android Changes

Similar cleanup is happening on Android. Legacy architecture classes are being removed in each release, following the relevant RFC. Ensure your project does not depend on any removed classes.

4. Node.js 22 Minimum Requirement

React Native 0.84 sets Node.js 22 as the minimum supported version. If you're on an older Node version, upgrade using nvm or your preferred version manager.

nvm install 22
nvm use 22

After upgrading, run npm install or yarn install to refresh dependencies.

Common Mistakes

  • Forgetting to update Node.js: Attempting to run React Native 0.84 with Node < 22 will cause errors. Always check your Node version first.
  • Overriding Hermes accidentally: If you previously set hermesV1Enabled=false for experiments, ensure you remove that override after upgrading to 0.84 unless you intentionally want legacy Hermes.
  • Not cleaning builds after upgrade: After upgrading React Native, run cd ios && pod install and clean your build folders (npx react-native start --reset-cache) to avoid stale artifacts.
  • Assuming precompiled binaries are incompatible with custom native modules: Precompiled binaries work seamlessly with most custom modules. Only disable them if you need to modify React Native core.
  • Ignoring legacy architecture removal: If your app still references legacy APIs (e.g., RCTRootView old-style delegates), update them to New Architecture equivalents before upgrading.

Summary

React Native 0.84 delivers a major performance uplift with Hermes V1 as the default JavaScript engine, reduces iOS build times through precompiled binaries, and cleans house by removing legacy architecture components. Migration is smooth for apps already on Hermes, with only minor opt-out configurations available for special cases. By updating Node.js to version 22 and following the steps outlined above, you can unlock these improvements and keep your React Native projects fast and future-proof.