Betsports

React Native 0.85: Key Updates and How They Affect Your Development Workflow

Published: 2026-05-03 19:27:58 | Category: Environment & Energy

React Native 0.85 has arrived with several significant enhancements, including a brand-new animation backend, a standalone Jest preset package, and a series of improvements to developer tools and metro server capabilities. This release also introduces some important breaking changes that developers should be aware of before upgrading. Below, we answer the most common questions about what's new, how to take advantage of these features, and what adjustments you may need to make in your projects.

1. What is the new Shared Animation Backend in React Native 0.85?

React Native 0.85 introduces the Shared Animation Backend, developed in collaboration with Software Mansion. This is a redesigned internal engine that handles animation updates for both the Animated and Reanimated libraries. By centralizing the animation logic within React Native core, the new backend enables Reanimated to achieve performance improvements that were previously impossible. It also ensures that the update reconciliation process is thoroughly tested and remains stable across future React Native versions.

React Native 0.85: Key Updates and How They Affect Your Development Workflow

A key benefit is that you can now animate layout properties—such as width, height, and flexbox values—using the native driver with Animated. Previously, these properties were limited to the JavaScript driver, which could lead to janky animations. The new backend solves this, allowing smoother and more efficient layout animations.

For more details on how to use this feature, see the question on opting in and the example of animating layout props.

2. How can developers opt into the new animation engine?

To use the new Shared Animation Backend, you need to enable the experimental channel of React Native. This feature is available starting from React Native 0.85.1, which will be released shortly after the initial 0.85 release. You can find instructions on enabling the experimental channel on the official React Native documentation page.

Once enabled, you can immediately take advantage of native-driver animation for layout props. Note that this is an opt-in experimental feature, so existing projects will not be affected until you explicitly activate it. The React Native team recommends testing the new backend in a development environment before rolling it out to production.

3. What improvements come with React Native DevTools in this release?

React Native DevTools receives three key improvements in version 0.85:

  • Multiple CDP connections: Previously, only one client could connect via Chrome DevTools Protocol at a time. Now multiple clients—such as React Native DevTools, VS Code, or AI agents—can connect simultaneously. This enables richer, composable tooling workflows without unexpectedly ending sessions.
  • Native tabs on macOS: The desktop app has been updated to compile for macOS 26, and now supports system-level tab handling. You can merge multiple DevTools windows by going to Window > Merge All Windows, streamlining your debugging environment.
  • Request payload previews on Android: A regression that disabled request body previews in the Network Panel has been fixed. You can now inspect network request payloads on Android again.

4. How does Metro TLS Support work in React Native 0.85?

React Native 0.85 adds the ability for the Metro dev server to accept a TLS configuration object. This means you can now serve your development environment over HTTPS (and WebSocket Secure for Fast Refresh) by providing a TLS certificate and key. This is particularly important for features that require a secure context, such as service workers or certain browser APIs, and helps ensure that your development environment more closely mirrors production.

To enable it, you pass a tls option to the Metro configuration object, typically in your metro.config.js file. The feature is fully compatible with the existing dev server setup and does not break existing workflows.

5. What are the major breaking changes in React Native 0.85?

Several breaking changes accompany this release:

  • Jest preset moved to a dedicated package – see the next question for details.
  • Dropped support for end-of-life Node.js versions – React Native now requires Node.js 18 or later; older versions are no longer supported.
  • StyleSheet.absoluteFillObject has been removed – use StyleSheet.absoluteFill instead.
  • Other minor breaking changes are documented in the official release notes; you should review the full changelog before upgrading.

These changes aim to modernize the codebase and improve stability, but they may require updates to your project’s dependencies and configuration.

6. Why was the Jest preset moved to a dedicated package?

The Jest preset, previously bundled with react-native, has been extracted into its own package: @react-native/jest-preset. This change reduces the core package size and decouples testing infrastructure from the main React Native framework. It also makes it easier to update the Jest preset independently without waiting for a new React Native release.

To continue using Jest with React Native, you need to install the new package and update your configuration. The migration is straightforward: run npm install --save-dev @react-native/jest-preset and adjust your Jest configuration to point to the new preset. The official documentation provides step-by-step instructions.

7. Is there a way to animate layout props with native driver now?

Yes, with the new animation backend you can animate Flexbox and position props using the native driver in Animated. Here is a simple example:

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

function MyComponent() {
  const width = useAnimatedValue(100);
  const toggle = () => {
    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={toggle} />
    </View>
  );
}

This code animates the width of a view from 100 to 300 using the native driver. Previously, useNativeDriver: true with layout props would throw an error; now it works seamlessly. More examples can be found in the React Native repository under packages/rn-tester/js/examples/AnimationBackend/.