Mobile Development

React Native 0.84 Officially Released with Hermes V1, Default iOS Precompiled Binaries, and Advanced Accessibility Upgrades

The cross-platform mobile development ecosystem has taken another major leap forward with the official release of React Native version 0.84. Rolled out to the global developer community today, this latest stable iteration brings a suite of foundational upgrades designed to dramatically streamline build times, enhance runtime performance, and aggressively purge legacy technical debt. Among the most notable headliners in version 0.84 are the promotion of Hermes V1 to the default JavaScript engine across both iOS and Android, the out-of-the-box integration of precompiled iOS binaries, and a continued, systematic dismantling of the framework’s obsolete architecture.

The launch of version 0.84 marks an important milestone in the rapid evolution of React Native, which has increasingly focused on closing the performance gap between cross-platform frameworks and native application development. As previous versions successfully laid the groundwork by introducing the New Architecture as the exclusive runtime option, version 0.84 capitalizes on those structural changes to deliver a lean, modern, and highly optimized developer experience. With more than 650 individual commits contributed by 95 developers from across the global open-source community, this release underscores the vibrant, collaborative nature of the React Native project.

Hermes V1 Becomes the Default JavaScript Engine

The centerpiece of the React Native 0.84 release is the elevation of Hermes V1 as the default JavaScript engine for both iOS and Android platforms. Following an initial experimental opt-in phase introduced in version 0.82, Hermes V1 is now fully integrated out of the box for all new and existing applications unless explicitly overridden.

Hermes is an open-source JavaScript engine optimized specifically for running React Native on mobile devices. Created by Meta to address the unique memory and processing constraints of smartphones, Hermes has consistently outperformed standard engines like JavaScriptCore and V8 in mobile-specific benchmarks. Hermes V1 represents a generational leap forward for the engine, introducing comprehensive architectural improvements to both its compiler and virtual machine (VM).

These enhancements yield measurably better JavaScript execution speeds, reduced time-to-interactive (TTI) metrics, and a smaller memory footprint. For end-users, this translates to smoother scrolling animations, faster application launch times, and an overall more responsive user interface. For developers, Hermes V1 provides a more robust and predictable execution environment that handles complex state management and heavy computations with greater efficiency.

While Hermes V1 is enabled by default, the React Native core team has provided clear fallback paths for engineering teams requiring bespoke configurations. Developers who need to opt out of Hermes V1 can do so through package manager overrides by explicitly forcing the installation of the legacy hermes-compiler package within their package.json file. Similar adjustments can be made on iOS by passing specific environment variables during CocoaPods dependency installation, and on Android by modifying gradle properties and building from source. However, core maintainers strongly recommend migrating to Hermes V1 to take full advantage of upcoming platform optimizations.

Streamlining iOS Builds with Precompiled Binaries

In an effort to eradicate one of the most persistent bottlenecks in mobile development—lengthy compilation times—React Native 0.84 now ships precompiled binaries on iOS by default. Previously introduced as an optional feature in earlier releases, this capability is now active out of the box for all iOS targets.

Historically, building a React Native application from a clean state required compiling the entire React Native core framework from source every single time. This process consumed valuable computing resources, introduced potential compilation errors, and added significant friction to continuous integration (CI) pipelines and daily developer workflows.

With version 0.84, precompiled .xcframework binaries are automatically downloaded and utilized during the standard pod install phase. This change dramatically accelerates build times, allowing developers to spin up fresh environments and execute clean builds in a fraction of the time previously required. Teams that require custom modifications to the native core can still opt out of this behavior by setting the RCT_USE_PREBUILT_RNCORE=0 environment variable during pod installation, ensuring maximum flexibility for advanced enterprise workflows.

Systematic Removal of the Legacy Architecture

React Native 0.84 continues the aggressive modernization campaign begun in version 0.82, which established the New Architecture as the sole runtime option. In this latest release, the framework has taken substantial steps toward purging Legacy Architecture code from both iOS and Android codebases, fulfilling commitments outlined in community requests for comments (RFCs).

On the iOS side, the experimental RCT_REMOVE_LEGACY_ARCH flag introduced in version 0.83 is now the default operational behavior. Legacy Architecture code is entirely omitted from default iOS builds, yielding a measurable reduction in both total application binary size and compilation time. Because the underlying Interop Layer remains intact, applications that have already successfully migrated to the New Architecture will experience zero breakages. Teams with exceptional legacy dependencies can temporarily re-enable the old architecture by supplying specific flags during the CocoaPods installation process while building from source.

The Android ecosystem sees an equally rigorous cleanup. Version 0.84 permanently removes a wide array of deprecated classes from the legacy bridge and module systems. Among the deleted components are several foundational classes that previously supported lazy package loading, C++ module wrappers, thread-unsafe debug listeners, and legacy layout animation controllers. This massive reduction in dead code ensures that the Android runtime remains lean, secure, and fully aligned with modern threading and rendering paradigms.

Raising the Baseline: Node.js 22 Minimum Requirement

To support cutting-edge internal tooling and leverage modern JavaScript syntax features, React Native 0.84 institutes a strict new requirement for the backend development environment: Node.js version v22.11 or later is now mandatory.

This version bump allows the React Native ecosystem to adopt advanced language features, improve build script performance, and enhance security standards across all command-line tools. Developers are urged to update their local and CI/CD environments prior to upgrading their project dependencies. The core team recommends utilizing established version management tools such as nvm (Node Version Manager) or fnm (Fast Node Manager) to seamlessly handle Node.js runtime switches across different projects.

Ecosystem Sync, Accessibility, and Core Improvements

Beyond the major architectural shifts, React Native 0.84 introduces a wealth of enhancements across the entire framework stack:

  • React 19.2.3 Integration: The framework has been fully synchronized with React 19.2.3, granting developers immediate access to the latest bug fixes, performance patches, and API improvements rolled out by the core React team.
  • ESLint v9 Flat Config Support: React Native’s official ESLint configuration now natively supports the ESLint v9 Flat Config system, making it drastically easier for development teams to adopt modern linting standards and maintain rigorous code quality.
  • Enhanced Accessibility: Accessibility has received critical updates. Text components equipped with onPress or onLongPress handlers now automatically receive accessibilityRole="link", ensuring that screen readers correctly identify and announce interactive text elements. On Android, a persistent bug involving recycled views has been resolved, ensuring that isClickable and OnClickListener states are accurately reset to prevent screen readers from broadcasting erroneous UI states.
  • URL API Standardization: The built-in URL implementation has been expanded to include missing standard properties such as hash, host, and pathname. Simultaneously, URLSearchParams has been updated with missing utility methods (get, set, delete), bringing the environment much closer to modern web standards while resolving a long-standing duplicate entry bug.

Deprecations, Breaking Changes, and Upgrading

As with any major platform release, version 0.84 deprecates several older APIs and introduces targeted breaking changes across iOS, Android, C++, and JavaScript layers. Developers are advised to consult the official GitHub changelog for a comprehensive breakdown of deprecated methods and breaking signatures.

Concurrently, the release schedule dictates that version 0.81.x has officially transitioned to an unsupported status in accordance with the project’s formal support policy.

Upgrading existing projects to version 0.84 can be facilitated using the community-standard React Native Upgrade Helper to manually inspect code diffs. Additionally, developers can leverage the newly introduced, experimental upgrade-react-native AI skill for Community CLI projects to automate portions of the migration process. For greenfield initiatives, new applications can be initialized immediately using the latest command-line utility:

npx @react-native-community/cli@latest init MyProject --version latest

Meanwhile, ecosystems such as Expo are already working to incorporate these advancements, with React Native 0.84 slated for upcoming canary releases and foundational integration anticipated in forthcoming SDK cycles.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button