React Native 0.79: Faster Startup, New Metro Features, and Community-Driven JSC

From Moocchen, the free encyclopedia of technology

Introduction

React Native 0.79 has arrived, bringing a wealth of improvements focused on developer experience and runtime efficiency. This release tackles tooling speed, compatibility with modern JavaScript packages, and lays groundwork for more flexible engine management. Below, we break down the key changes that will streamline your development workflow and enhance app performance.

React Native 0.79: Faster Startup, New Metro Features, and Community-Driven JSC

Metro 0.82: Accelerated Startup and Enhanced Module Resolution

Faster First Start with Deferred Hashing

The latest version of Metro, the bundler powering React Native, now uses deferred hashing to drastically reduce cold-start times. In typical projects, the first yarn start runs over three times faster, with even greater gains in large monorepos. This improvement speeds up daily development cycles and continuous integration builds alike.

Package Exports Now Stable

Metro 0.82 promotes the resolution of package.json "exports" and "imports" fields from experimental to stable. Originally introduced in React Native 0.72, "exports" lets packages define entry points and conditional file mappings, while "imports" (added via community contribution) enables internal aliasing. Both are now enabled by default, improving compatibility with modern npm dependencies and allowing developers to organize projects using standards-compliant patterns.

Important Breaking Change

While the community has tested "exports" for some time, switching it on by default may break certain setups. Some popular packages—such as Firebase and AWS Amplify—have reported incompatibilities. The React Native team is working with those maintainers to resolve issues. If you encounter problems, you can temporarily opt out by setting resolver.unstable_enablePackageExports = false in your Metro configuration, or by updating to the Metro 0.81.5 hotfix. For a list of affected packages and workarounds, see expo/expo#36551.

JavaScriptCore Moves to Community Package

In a move to reduce React Native's core API surface, the JavaScriptCore (JSC) engine is transitioning to a community-maintained package: @react-native-community/javascriptcore. This change does not affect users of Hermes, the default JavaScript engine for most new apps.

Starting with React Native 0.79, you can opt into the community version by following the installation instructions in its README. The core-provided JSC remains available in this release but will be removed in a future version. By moving JSC to a separate package, the community can update the engine more frequently and decouple its release schedule from React Native, ensuring faster access to the latest JavaScript features and security patches.

iOS: Simplified Swift-Compatible Native Module Registration

iOS development gets a streamlined way to register native modules. The new approach mirrors the component registration method already documented, allowing you to declare native modules directly in package.json using the same patterns as components. This reduces boilerplate and makes the codebase more consistent across platforms.

Android: Faster App Startup

Startup time on Android receives a boost thanks to optimizations in how the JavaScript bundle is compressed. These changes reduce the time needed to load and execute the JS bundle at app launch, leading to a snappier user experience—especially on older devices or apps with large bundles.

Removal of Remote JS Debugging

As announced previously, the deprecated Remote JS Debugging feature is now completely removed. Developers relying on Chrome DevTools for debugging should migrate to the Flipper debugger or use React Native's built-in Hermes Debugger, which offers superior performance and compatibility with modern workflows.

Summary of Highlights

  • Metro 0.82 – Deferred hashing delivers 3x faster cold starts; package exports/imports enabled by default.
  • JSC as Community Package – Core JSC still available but deprecated; community version offers faster updates.
  • iOS Module Registration – Swift-friendly registration via package.json, consistent with component patterns.
  • Android Startup – Improved JS bundle compression reduces launch time.
  • Remote JS Debugging – Removed; use Flipper or Hermes Debugger instead.

React Native 0.79 is available now. Upgrade to enjoy a faster, more modern development experience. Check the official release blog for the full changelog and migration guide.