React Native 0.85: Performance Upgrades and Developer Experience Enhancements

By ⚡ min read

Introduction

React Native 0.85 is now available, bringing a host of performance improvements and developer-friendly updates. This release introduces a new animation backend designed to boost efficiency, moves the Jest preset into its own dedicated package, and includes several other refinements. Below, we dive into the key highlights and breaking changes you need to know.

React Native 0.85: Performance Upgrades and Developer Experience Enhancements

New Animation Backend

The most notable addition is the Shared Animation Backend, developed in collaboration with Software Mansion. This engine revolutionizes how animations are processed internally for both the Animated and Reanimated libraries. By centralizing the animation update logic within React Native core, it enables Reanimated to achieve performance enhancements that were previously unattainable. Moreover, this ensures that the update reconciliation process undergoes rigorous testing and remains stable with future React Native releases.

How It Works

With the new backend, you can now animate layout properties like Flexbox and position attributes using the native driver in Animated. This eliminates previous limitations where such props required JavaScript-driven animations, leading to smoother and more responsive UI interactions.

Animating Layout Props

To get started, enable the experimental channel (available from React Native 0.85.1 onward). Here’s a simple example demonstrating how to animate a view’s width using the native driver:

import { Animated, Button, View, useAnimatedValue } from 'react-native';

function ExpandingBox() {
  const width = useAnimatedValue(100);
  const expand = () => {
    Animated.timing(width, {
      toValue: 300,
      duration: 500,
      useNativeDriver: true,
    }).start();
  };

  return (
    <View style={{ flex: 1 }}>
      <Animated.View style={{ width, height: 100, backgroundColor: 'blue' }} />
      <Button title="Expand" onPress={expand} />
    </View>
  );
}

For more examples, explore the react-native/packages/rn-tester/js/examples/AnimationBackend/ directory in the main repository.

Jest Preset Migration

As part of ongoing dependency management improvements, React Native 0.85 relocates the Jest preset to a separate package: @react-native/jest-preset. This change reduces the core package size and gives developers more flexibility in updating testing configurations independently. If you currently use react-native/jest-preset, you will need to update your jest.config.js to point to the new package. This is a breaking change; ensure your project is updated accordingly.

React Native DevTools Improvements

Developer tooling receives several upgrades in this release, enhancing debugging workflows and cross-tool compatibility.

Multiple CDP Connections

React Native now supports multiple simultaneous Chrome DevTools Protocol connections. This means clients like React Native DevTools, VS Code, and AI-powered agents can all connect at once without interfering with each other. The result is a richer, composable tooling environment where you can use multiple debugging tools concurrently.

Native Tabs on macOS

The desktop application has been recompiled for macOS 26 and now includes system-level tab handling. When multiple DevTools windows are open, you can merge them via Window > Merge All Windows to keep your workspace organized. This feature is especially useful for developers who manage several debugging sessions simultaneously.

Request Payload Previews

A regression that disabled request body previews in the Network Panel has been resolved. On Android, you can once again inspect request payloads directly from the DevTools, streamlining network debugging.

Metro TLS Support

The Metro development server now accepts a TLS configuration object, enabling HTTPS (and WSS for Fast Refresh) during local development. This is particularly beneficial for teams that require secure connections while testing features like service workers, secure cookies, or external API integrations. Simply pass a TLS certificate and key to the Metro configuration to enable it.

Other Breaking Changes

Beyond the Jest preset move, React Native 0.85 introduces a few additional breaking changes that require attention:

  • Dropped Support for End-of-Life Node.js Versions: React Native now requires Node.js 18 or newer. Versions that have reached their end-of-life (e.g., Node 14, 16) are no longer supported.
  • StyleSheet.absoluteFillObject Removed: This utility has been removed. Migrate to using StyleSheet.absoluteFill or define your own style object with position: 'absolute', left: 0, right: 0, top: 0, bottom: 0.
  • Other Breaking Changes: Review the full changelog for any additional deprecations or alterations that may affect your codebase.

Getting Started

To upgrade your existing project, run npx react-native upgrade or follow the official migration guide. The new animation backend is still experimental—opt in by enabling the experimental channel as described in the New Animation Backend section. Note that this feature will only be fully available starting with React Native 0.85.1, which is coming soon.

React Native 0.85 marks a significant step forward in both performance and developer tooling. We encourage you to test the new backend and share feedback with the community. Happy coding!

Recommended

Discover More

10 Key Facts About Axsome’s Historic FDA Approval for Alzheimer’s AgitationBMW Unveils 2027 iX3 Preorders: $61,500 Starting Price, 434-Mile Range Shatters ExpectationsBitcoin Surges Above $81,000: ETF Inflows Defy Iran TensionsGoogle's Gemini Era Sparks Revival of Third-Party Smart Speakers, Leaked Listing SuggestsHow to Handle a Trademark Violation: Lessons from the Notepad++ Fake macOS App Incident