React Native 0.84 Brings Default Hermes V1 Engine and Major Performance Enhancements to Mobile Development

The release of React Native 0.84 marks a significant milestone in the evolution of the world’s most popular cross-platform mobile development framework. By establishing Hermes V1 as the default JavaScript engine and continuing the aggressive removal of the framework’s legacy architecture, the React Native core team has signaled a definitive shift toward a modern, high-performance ecosystem. This update, which follows the successful experimental rollout in version 0.82, arrives as developers increasingly demand smaller bundle sizes, faster startup times, and a more unified experience across iOS and Android platforms.
The Evolution of the Hermes JavaScript Engine
At the heart of the 0.84 release is the transition of Hermes V1 from an experimental feature to the standard engine for all new and upgraded projects. Hermes, an open-source JavaScript engine optimized for mobile applications, was originally developed by Meta to solve the specific performance bottlenecks inherent in the mobile environment—namely, long startup times and high memory consumption.
Hermes V1 represents a substantial architectural leap forward. Unlike the original Hermes engine, the V1 iteration features a re-engineered compiler and virtual machine (VM) designed to handle modern JavaScript syntax more efficiently. Preliminary benchmarks shared by the React Native community indicate that apps running on the V1 engine experience lower latency during the initial "time-to-interactive" phase and improved memory management under heavy load. By making this the default, the core team is effectively standardizing high performance across the entire React Native footprint, ensuring that developers no longer need to manually toggle experimental flags to access cutting-edge engine capabilities.
For the developer, this change necessitates a shift in how projects are maintained. While Hermes V1 is designed to be a drop-in replacement, the move away from older engine configurations means that developers must ensure their dependencies are compatible with the V1 bytecode format. Should a project require the older engine, the framework provides an opt-out path via package overrides in the package.json file for the compiler, alongside specific environment variable configurations for CocoaPods on iOS and Gradle settings on Android.
Streamlining the Build Pipeline with Precompiled Binaries
A recurring pain point for the React Native community has been the length of time required for clean builds. Historically, the framework required developers to compile core native code from source during the initial installation or after clearing caches, a process that could take several minutes depending on the complexity of the project and the developer’s hardware.
React Native 0.84 addresses this by shipping precompiled iOS binaries by default. Utilizing the .xcframework format, these pre-built components are automatically downloaded during the pod install process. This shift mirrors industry standards in native iOS development, where pre-compiled frameworks are the norm for third-party libraries. By reducing the frequency with which the framework must recompile itself, the team has successfully shortened the "inner loop" of development, allowing engineers to spend less time waiting for compilers and more time writing features.
Dismantling the Legacy Architecture
The path to the "New Architecture"—a re-imagined core for React Native that relies on a synchronous bridge-less communication protocol—has been a multi-year project. React Native 0.84 continues this trajectory by systematically purging Legacy Architecture code from the core.
The rationale behind this cleanup is twofold: reducing the total app binary size and simplifying the maintenance burden of the codebase. On iOS, the introduction of the RCT_REMOVE_LEGACY_ARCH flag in the previous release was a testing ground; in 0.84, this behavior is now the default. The framework no longer includes legacy classes in standard iOS builds, though it maintains an "interop layer" to ensure that existing applications that have not yet fully migrated to the New Architecture do not experience sudden crashes.
On the Android side, the cleanup is equally comprehensive. A long list of classes, including LazyReactPackage, CxxModuleWrapper, and various layoutanimation controllers, have been removed. This represents a "breaking change" for legacy native modules that still rely on these specific bridge-based interfaces. For developers maintaining large-scale enterprise applications, this release serves as a mandatory checkpoint to audit their native bridge modules and ensure they are compliant with the New Architecture’s TurboModule and Fabric requirements.
Infrastructure and Ecosystem Synchronization
The requirement for Node.js v22.11 or later is a clear signal that the framework is prioritizing modern tooling. By mandating a recent version of the Node runtime, the React Native team is ensuring that developers have access to the latest performance improvements, security patches, and language features provided by the V8 engine, which powers Node.js. This alignment helps mitigate compatibility issues that often arise when running outdated build tools against modern mobile OS SDKs.
Furthermore, the integration of React 19.2.3 underscores the symbiotic relationship between the React library and the native framework. As React evolves to incorporate new features like concurrent rendering and improved server-side primitives, React Native must ensure that its underlying bridge and reconciliation logic are perfectly synced. Version 0.84 provides a stable foundation for teams looking to leverage the latest React patterns without encountering the friction of version mismatches.
Accessibility and User Experience Improvements
Beyond the under-the-hood changes, 0.84 introduces meaningful quality-of-life improvements for accessibility. Text components equipped with onPress or onLongPress handlers are now automatically assigned the accessibilityRole="link" attribute. This is a critical change for assistive technologies like screen readers, which rely on these semantic cues to inform users about the interactive nature of the content.
Additionally, on Android, the team resolved a persistent issue involving the recycling of views. In previous versions, recycled views could occasionally retain stale state information, leading to incorrect announcements by accessibility services. By ensuring that isClickable and OnClickListener states are explicitly reset during the view recycling process, the framework provides a more robust and inclusive experience for users with visual impairments.
Implications for the Industry
The release of 0.84 highlights a broader industry trend: the maturation of cross-platform frameworks. As companies continue to face economic pressure to deliver high-quality mobile experiences across both iOS and Android with smaller teams, the value proposition of a stable, performant, and "batteries-included" framework like React Native becomes undeniable.
However, this transition also imposes a "maintenance tax" on organizations with legacy codebases. The removal of legacy classes and the transition to the New Architecture require deliberate, planned migrations. The introduction of the upgrade-react-native AI tool, though experimental, reflects the community’s acknowledgment of these difficulties. By leveraging automation, the project aims to ease the burden of upgrading, a task that has historically been one of the most significant barriers to adoption for React Native.
Looking Ahead
The framework is now in a state of rapid, disciplined progression. With 0.84 serving as the current stable release, the community’s focus will now shift toward the upcoming SDK 56 from Expo, which is expected to incorporate these changes shortly. For individual developers and enterprise teams, the immediate priority should be a comprehensive review of the CHANGELOG to identify any breaking changes in native modules.
The 650 commits and 95 contributors involved in this release demonstrate a vibrant, healthy ecosystem. By balancing the need for aggressive modernization with the pragmatic realities of large-scale application maintenance, the React Native team has positioned version 0.84 as a foundational update that will influence the mobile development landscape for the next several years. As the industry moves further away from the "bridge" era, the focus on engine performance, build efficiency, and accessibility will remain the key metrics by which the success of the platform is measured.







