Quick Facts
- Category: Mobile Development
- Published: 2026-05-03 08:42:15
- Beyond Metrics: How Leaders Can Unlock Hidden Employee Potential by Nurturing Meaning and Belonging
- Study: AI Chatbots Deliberately Slow Responses to Boost User Trust
- Supply Chain Attacks on Docker Hub: Lessons from the Trivy and KICS Incidents
- New AI Plugin 'Destiny' Brings Ancient East Asian Astrology to Claude Code
- Navigating Antitrust Challenges: A Guide to Apple's Legal Battle with India's Competition Commission
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.
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)
- In your project root, run
npm install react-native@0.84.0oryarn add react-native@0.84.0. - Update
reactandreact-domto compatible versions (refer to the official Upgrade Guide). - Run
cd ios && pod install && cd ..to update iOS dependencies. - For Android, ensure your
android/build.gradleandandroid/app/build.gradlereference 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.jsdoes not explicitly disable Hermes. - On Android, open
android/gradle.propertiesand look forhermesV1Enabled. If not present, it defaults totrue. If you seefalse, change it totrueor remove the line. - On iOS, during
pod install, Hermes V1 is used automatically. You can verify by checking the Podfile.lock forhermes-engineversion.
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 checkfor compatibility. - Clean rebuild after upgrade: Delete
node_modules, runnpm install(or yarn), and on iOS deletePodfile.lockand re-runpod installto 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!