React Native 0.84 Debuts with Hermes V1 as Default and Major Performance Enhancements for iOS and Android

Meta has officially announced the stable release of React Native 0.84, a milestone update that solidifies the framework’s transition toward its next-generation architecture while significantly optimizing the developer experience. This latest iteration introduces Hermes V1 as the standard JavaScript engine across all platforms, ships precompiled iOS binaries by default to accelerate build times, and continues the systematic removal of legacy architectural components. By aligning with modern development standards such as Node.js 22 and React 19.2.3, version 0.84 ensures that the React Native ecosystem remains at the forefront of mobile application performance and maintainability.
The Standardization of Hermes V1
The most significant shift in React Native 0.84 is the promotion of Hermes V1 to the default JavaScript engine for both iOS and Android. Originally introduced as an experimental opt-in in version 0.82, Hermes V1 represents a comprehensive evolution of the engine designed specifically for running React Native. Unlike general-purpose engines, Hermes focuses on reducing app TTI (Time to Interactive), decreasing binary size, and optimizing memory consumption.
The transition to V1 brings measurable improvements to both the compiler and the Virtual Machine (VM). By refining how JavaScript is parsed and executed, Meta’s engineering team has achieved better bytecode efficiency. For developers, this translates to faster execution of complex logic and a smoother user interface. The engine’s garbage collection and memory management have also been tuned to handle the high-frequency updates typical of modern mobile interfaces.
While the shift is intended to be seamless, the React Native team has provided clear pathways for teams that may need to delay the transition. Developers can opt out of Hermes V1 by overriding the package manager to use the legacy hermes-compiler package (version 0.15.0) or by utilizing specific environment variables like RCT_HERMES_V1_ENABLED=0 during the CocoaPods installation process on iOS. On Android, a similar override is available through the gradle.properties file, though this requires building the framework from source.
Accelerating iOS Workflows with Precompiled Binaries
For years, one of the primary pain points for React Native developers on macOS has been the duration of clean builds. Previously, every fresh installation or CI/CD pipeline run required the local machine to compile the React Native core from source, a process that could take several minutes depending on the hardware.
React Native 0.84 addresses this bottleneck by shipping precompiled .xcframework binaries by default for iOS. These binaries are automatically fetched during the pod install phase, eliminating the need for local compilation of the core framework. This change is expected to significantly reduce build times for development teams, particularly those working in large monorepos or utilizing automated testing environments.
However, the flexibility to build from source remains. Developers who require custom modifications to the React Native core or those opting out of the new Hermes version can disable the prebuilt binaries by setting the RCT_USE_PREBUILT_RNCORE=0 flag. This balance ensures that while the majority of users benefit from faster builds, power users retain full control over their compilation environment.
The Systematic Decommissioning of Legacy Architecture
The release of 0.84 continues the multi-stage plan to retire the "Legacy Architecture" (often referred to as the "Bridge" architecture) in favor of the "New Architecture," which utilizes Fabric for rendering and TurboModules for native communication. This transition is governed by the guidelines established in the community RFC 929, which outlines a release-by-release removal of legacy code to reduce technical debt and binary overhead.
On the iOS side, the RCT_REMOVE_LEGACY_ARCH flag, which was experimental in version 0.83, is now enabled by default. This means that legacy code is no longer compiled into iOS builds, resulting in smaller application sizes and more efficient runtime execution. Meta has assured developers that this change will not break applications already utilizing the New Architecture, as the Interop Layer—the bridge that allows legacy components to function within the new system—remains fully supported.
The Android platform sees an even more granular cleanup. A total of 14 major legacy classes have been removed in this release. These include critical foundational classes such as com.facebook.react.LazyReactPackage, com.facebook.react.bridge.CxxModuleWrapper, and com.facebook.react.uimanager.layoutanimation.LayoutAnimationController. The removal of these classes marks a point of no return for certain legacy patterns, signaling that developers must ensure their third-party libraries and internal modules are compatible with the modern React Native internal structure.
Modernizing the Tooling Ecosystem
To support the latest features of the JavaScript and React ecosystems, React Native 0.84 raises the minimum required version of Node.js to v22.11 or later. This move is strategic, as Node.js 22 provides better support for modern ESM (ECMAScript Modules) and enhanced performance for the various CLI tools that power the React Native development cycle. Developers are encouraged to use version managers like nvm or fnm to manage this transition without disrupting other projects.
In addition to the Node.js update, this release synchronizes with React 19.2.3. This ensures that mobile developers can take advantage of the latest refinements from the core React team, including improved stability and bug fixes that directly impact how components are reconciled and rendered.
The developer experience is further enhanced by the adoption of ESLint v9’s "Flat Config" format. This new configuration style is designed to be more intuitive and performant than the legacy .eslintrc files, allowing for easier sharing of linting rules across different parts of a project. By adopting this standard, React Native aligns itself with the broader JavaScript community’s move toward more robust tooling.
Accessibility and Web Standard Alignment
React Native 0.84 introduces meaningful updates to accessibility, particularly concerning interactive text. Components using onPress or onLongPress handlers will now automatically receive an accessibilityRole of "link." This ensures that screen readers, such as VoiceOver on iOS and TalkBack on Android, correctly identify these elements as actionable links, providing a more predictable experience for users with visual impairments.
On Android, specific attention was paid to the behavior of recycled views. In high-performance lists (like FlashList or FlatList), views are often reused to save memory. In previous versions, this could lead to "accessibility ghosting," where a recycled view retained the clickable state of a previous item. Version 0.84 fixes these issues, ensuring that isClickable and OnClickListener states are properly reset during the recycling process.
The release also brings React Native closer to web parity by expanding the built-in URL and URLSearchParams APIs. New support for standard properties such as hash, host, and pathname, along with methods like get, set, and delete for search parameters, means that developers can write code that is more portable between the web and mobile environments.
Chronology of the 0.84 Release Cycle
The path to 0.84 has been characterized by a focused effort to stabilize the New Architecture.
- Version 0.82: Introduced the New Architecture as a stable option and debuted Hermes V1 as an experimental feature.
- Version 0.83: Began the removal of legacy flags and introduced the first iterations of precompiled binaries for select users.
- Version 0.84 (Current): Standardizes Hermes V1, enforces Node.js 22, and makes precompiled iOS binaries the default for the entire community.
This release represents over 650 commits from 95 individual contributors, reflecting the collaborative nature of the framework’s development between Meta and the broader open-source community.
Technical Analysis and Implications
The decision to make Hermes V1 the default is a clear indicator that Meta views the engine as mature enough to handle the world’s most demanding mobile applications. By controlling the engine, React Native can implement optimizations that are impossible for frameworks relying on system-provided engines like JavaScriptCore. This vertical integration is a competitive advantage against other cross-platform frameworks, as it allows for a highly tuned runtime environment.
The removal of legacy classes on Android and the default exclusion of legacy code on iOS also suggest that the "Bridge" is nearing its end-of-life. For the enterprise sector, this means that any remaining technical debt related to old React Native versions must be addressed immediately. The performance gains from the New Architecture—specifically synchronous layout and the elimination of the bridge serialization overhead—are now the baseline expectation for the framework.
Furthermore, the integration with Expo continues to evolve. While React Native 0.84 is currently available via expo@canary, the upcoming Expo SDK 56 will be the first stable SDK to fully embrace the 0.85 release cycle, which will build upon the foundations laid in 0.84.
Official Response and Support Policy
With the arrival of 0.84, it becomes the latest stable version supported by the core team. Consequently, React Native 0.81.x has officially moved to an "unsupported" status. Meta maintains a policy of supporting the three most recent minor versions, encouraging the community to stay updated to receive security patches and performance improvements.
To assist with the migration, the React Native Upgrade Helper remains the recommended tool for identifying specific code changes required for existing projects. Additionally, the community has introduced an experimental AI-driven "upgrade-react-native" skill for the CLI, designed to automate the more tedious aspects of dependency resolution and configuration updates during the migration process.
In summary, React Native 0.84 is a transformative release that prioritizes speed—both in terms of application performance via Hermes V1 and development efficiency via precompiled binaries. It reinforces the framework’s commitment to modern standards and accessibility, providing a robust foundation for the next generation of mobile applications.







