The React Native team released 0.85 on April 7, 2026. Eight people wrote the post, from Meta, Expo and Software Mansion, the company behind Reanimated. That byline tells you where the release spent its effort: a new animation backend that both Animated and Reanimated run on. The release took more than 604 commits from 58 contributors.
Two items break builds on day one, the Jest preset move and the absoluteFillObject removal. Both take a minute to fix.
One animation engine for Animated and Reanimated
Meta and Software Mansion moved the core animation update logic into React Native itself. Until now, Reanimated carried its own path for applying updates to native views. With a shared backend in core, the team says Reanimated can ship performance work it couldn't before, and React Native's own tests cover the reconciliation code, so it should hold across upgrades.
The change you can see: Animated can now animate layout props with useNativeDriver: true. Before, the native driver only handled non-layout props such as opacity and transform, and a width animation ran on the JavaScript thread.
const width = useAnimatedValue(100);
Animated.timing(width, {
toValue: 300,
duration: 500,
useNativeDriver: true, // width on the native driver, new in 0.85
}).start();
If you animate height for accordions or width for progress bars, those animations stop competing with your JavaScript work. A busy list render no longer stutters the expand animation.
The catch is availability. The backend lives on the experimental release channel, and the team says it arrives in 0.85.1, not 0.85.0. The post gives no benchmarks. The RNTester app has examples under js/examples/AnimationBackend/.
DevTools accepts many clients at once
React Native DevTools now handles several Chrome DevTools Protocol connections at the same time. You can keep DevTools open while VS Code's debugger and an AI agent attach, and none of them kicks the others off. If you've tried pointing a coding agent at a running app and lost your debugger session, this fixes that.
The desktop app also builds for macOS 26 and supports native tabs through Window, then Merge All Windows. Request body previews in the Network panel work on Android again after a regression disabled them.
HTTPS in development
Metro accepts a TLS config, so your dev server can speak HTTPS and Fast Refresh can run over WSS. That matters when you test an API that rejects plain HTTP, or a feature such as OAuth redirects that needs a secure origin.
// metro.config.js
config.server.tls = {
ca: fs.readFileSync("certs/rootCA.pem"),
cert: fs.readFileSync("certs/dev.pem"),
key: fs.readFileSync("certs/dev-key.pem"),
};
The team recommends mkcert to create certificates your devices trust.
What breaks
| Change | Fix |
|---|---|
| Jest preset moved out of react-native | Install @react-native/jest-preset and set preset to it |
| StyleSheet.absoluteFillObject removed | Use StyleSheet.absoluteFill |
| Node.js below 20.19.4, 21 and 23 unsupported | Use 20.19.4+, 22 or 24+ |
| C++ aliases such as ShadowNode::Shared removed | Use the underlying types |
| Android CatalystInstanceImpl removed, NativeViewHierarchyManager stubbed | Move libraries to New Architecture APIs |
| iOS RCTHostRuntimeDelegate merged into RCTHostDelegate | Implement RCTHostDelegate |
The Jest change is a one-line config diff plus a new dev dependency:
// jest.config.js
- preset: "react-native",
+ preset: "@react-native/jest-preset",
Find the style removal with a grep for absoluteFillObject, including in your own UI kit packages.
One behavior change deserves a test: Pressable no longer unmounts its event listeners inside a hidden Activity. If you rely on hidden screens ignoring presses, check that path.
Deprecations
AccessibilityInfo.setAccessibilityFocus gives way to sendAccessibilityEvent. Android deprecates ReactZIndexedViewGroup and UIManagerHelper. On the plus side for library authors, receiveTouches returns to RCTEventEmitter as a no-op default, so older libraries that still call it compile again.
Smaller items: Metro moves to 0.84, Hermes to 250829098.0.10, YogaNode moves to Kotlin, and a reactNativeDevServerIp Gradle property sets the dev server address for Android builds.
This week
- Add
@react-native/jest-preset, swap the preset, and run the full test suite before you touch app code. - Replace
absoluteFillObjectwithabsoluteFillacross the repo. - Record your slowest layout animations on a low-end Android phone. Re-record them on 0.85.1 with the experimental channel and
useNativeDriver: true. - If you run more than one debugger or an agent against the app, try them together in DevTools.
With 0.85 out, 0.82.x dropped from support. Expo SDK 56 ships React Native 0.85.
Volodymyr Chornous

