React Native 0.85 released
React Native 0.85 shipped with a preview of a Shared Animation Backend to speed up native animations and other developer improvements like Metro TLS and a Jest preset migration (x.com). It also exposes selection data for TextInput, continuing the platform-level optimisations that make cross‑platform apps feel more native (x.com).
React Native is the toolkit behind apps that use one JavaScript codebase to ship to both iPhone and Android, and version 0.85 landed on April 7 with a change aimed at the part users notice first: motion. Animations in React Native have usually been a coordination problem, because JavaScript describes the motion while native code on iPhone and Android has to draw every frame without stutter. React Native 0.85 adds a preview of a Shared Animation Backend, which is one internal engine meant to drive both the built-in Animated system and the Reanimated library. That backend was built with Software Mansion, the company behind Reanimated, so React Native is trying to stop having two separate animation pipelines that solve similar problems in different ways. The release notes say the new engine applies animations “under the hood” for both systems, which is the plumbing change developers usually make before users feel smoother screens a few versions later. The practical goal is to move animation updates through the same native path instead of bouncing work back and forth between layers like a waiter carrying one plate at a time. The 0.85 changelog shows new Animated hooks into an `AnimationBackend` and new support for pushing updates into the mounting layer and shadow tree, which are the internal structures React Native uses to keep the screen in sync. React Native has been marching toward this kind of lower-level cleanup for months. Version 0.84, released on February 11, made Hermes version 1 the default JavaScript engine and kept removing pieces of the old architecture on both iPhone and Android. Version 0.85 also changes text editing in a small but very visible way. The `onChange` event for TextInput now includes selection data on both iPhone and Android, which means apps can tell where the cursor is and what text range a user has highlighted without extra platform-specific work. That sounds minor until you think about mention pickers, code editors, chat apps, and rich text fields, where knowing the exact cursor position is the difference between a native-feeling editor and one that jumps around. Before this, selection handling often needed separate wiring or extra listeners, especially when developers wanted identical behavior across both mobile systems. There is also a networking change for the build tool developers stare at all day. Metro, the JavaScript bundler that serves app code during development, now supports Transport Layer Security configuration so it can run over Hypertext Transfer Protocol Secure instead of plain Hypertext Transfer Protocol. Testing changed too, and this one will hit upgrade guides immediately. The Jest preset moved out of the main package into `@react-native/jest-preset`, so projects updating to 0.85 need to point their test setup at the new package instead of assuming it ships inside `react-native`. React Native’s own release schedule explains why these changes are arriving in clusters like this. The project ships a new minor release about every two months, and the releases page lists 0.85.x with a branch cut on March 2, 2026 and a release date of April 6, 2026, which is how a framework slowly replaces old internals without asking app teams to rewrite everything at once. So 0.85 is not a flashy redesign release. It is the kind of release where animation plumbing, text selection events, secure local bundling, and test package moves all point in the same direction: fewer seams between JavaScript and native code, and fewer places where cross-platform apps feel like compromises.