React Native 0.84: Boosted Performance with Hermes V1 and Streamlined Builds

By
<h2 id="key-highlights">Key Highlights</h2> <ul> <li><strong><a href="#hermes-v1-default">Hermes V1 as the default JavaScript engine</a></strong> – automatic performance gains across all platforms.</li> <li><strong><a href="#precompiled-ios">Precompiled iOS binaries shipped by default</a></strong> – faster build times for iOS apps.</li> <li><strong><a href="#legacy-architecture-removal">Continued removal of Legacy Architecture components</a></strong> on both iOS and Android.</li> <li><strong><a href="#node-js-22">Node.js 22 is now the minimum required version</a></strong> for running React Native.</li> </ul> <h2 id="hermes-v1-default">Hermes V1 Becomes the Default JavaScript Engine</h2> <p>React Native 0.84 marks a significant milestone: <strong>Hermes V1</strong> is now the default JavaScript engine on both iOS and Android. This change builds on the experimental opt-in introduced in version 0.82, delivering substantial improvements to the compiler and virtual machine. The result is measurably better JavaScript performance — faster execution and reduced memory usage — across all React Native apps.</p><figure style="margin:20px 0"><img src="https://picsum.photos/seed/3874666695/800/450" alt="React Native 0.84: Boosted Performance with Hermes V1 and Streamlined Builds" style="width:100%;height:auto;border-radius:8px" loading="lazy"><figcaption style="font-size:12px;color:#666;margin-top:5px"></figcaption></figure> <h3>What This Means for Your App</h3> <ul> <li><strong>Automatic performance gains:</strong> Every app built with React Native 0.84 benefits from improved execution speed and lower memory footprint, with no extra work required.</li> <li><strong>No migration needed:</strong> If your project already uses Hermes (the default since version 0.70), you automatically upgrade to Hermes V1. No configuration changes are necessary.</li> </ul> <h3>Opting Out of Hermes V1</h3> <p>If you need to revert to the legacy Hermes compiler for compatibility reasons, you have several options:</p> <h4>Package Manager Override</h4> <p>Force the installation of the legacy hermes-compiler package (version 0.15.0) in your <code>package.json</code>:</p> <ul> <li><strong>npm:</strong> Add <code>"overrides": { "hermes-compiler": "0.15.0" }</code></li> <li><strong>Yarn:</strong> Add <code>"resolutions": { "hermes-compiler": "0.15.0" }</code></li> <li><strong>pnpm:</strong> Add <code>"pnpm": { "overrides": { "hermes-compiler": "0.15.0" } }</code></li> </ul> <h4>iOS-Specific Opt-Out</h4> <p>When installing CocoaPods dependencies, set the environment variables <code>RCT_HERMES_V1_ENABLED=0</code> and <code>RCT_USE_PREBUILT_RNCORE=0</code>.</p> <h4>Android-Specific Opt-Out</h4> <p>Add <code>hermesV1Enabled=false</code> inside the <code>android/gradle.properties</code> file, and configure the application to build React Native from source.</p> <h2 id="precompiled-ios">Precompiled Binaries on iOS by Default</h2> <p>Starting with React Native 0.84, precompiled binaries on iOS are enabled out of the box. Formerly available only as an opt-in feature, this change significantly reduces iOS build times. You no longer need to compile React Native core from source during every clean build. The precompiled <code>.xcframework</code> binaries are automatically downloaded and integrated during <code>pod install</code>.</p> <h3>Disabling Precompiled Binaries</h3> <p>If you need to build React Native from source (for example, when opting out of Hermes V1), disable precompiled binaries by setting <code>RCT_USE_PREBUILT_RNCORE=0</code> when installing pods.</p> <h2 id="legacy-architecture-removal">Legacy Architecture Removal Continues</h2> <p>Building on the foundation laid in version 0.82 (which made the New Architecture the only runtime option), React Native 0.84 continues to strip out Legacy Architecture code from both iOS and Android. As outlined in the <a href="https://github.com/reactwg/react-native-new-architecture/discussions/131">RFC</a>, each release removes several Legacy Architecture classes to streamline the codebase and reduce app size.</p> <h3>iOS Changes</h3> <p>In version 0.83, an experimental <code>RCT_REMOVE_LEGACY_ARCH</code> flag was introduced to compile out Legacy Architecture code. In version 0.84, this behavior is now the default. Legacy Architecture code is no longer included in iOS builds, resulting in shorter build times and smaller app sizes. Apps already using the New Architecture will experience no breakages.</p> <h3>Android Changes</h3> <p>On Android, similar legacy components are being removed. The exact list of removed classes can be found in the official release notes. If your project depends on any of these removed APIs, you must migrate to equivalent New Architecture APIs before upgrading.</p> <h2 id="node-js-22">Updated Node.js Requirement</h2> <p>React Native 0.84 bumps the minimum Node.js version to 22. This ensures compatibility with the latest JavaScript tooling and ecosystem libraries. If your development environment is still on an older Node.js version, update it before upgrading React Native.</p> <h2 id="conclusion">Conclusion</h2> <p>React Native 0.84 delivers tangible improvements in performance, build speed, and code cleanliness. By making Hermes V1 the default, shipping precompiled iOS binaries, and continuing the removal of Legacy Architecture, the framework becomes faster and leaner for all developers. Upgrade today to take advantage of these enhancements.</p>

Related Articles