Skip to content

Commit 8321afc

Browse files
committed
Merge branch 'main' of https://github.com/facebook/react-native-website into upgrade-to-docusaurus-3.10
2 parents 91b70d0 + 54e783d commit 8321afc

249 files changed

Lines changed: 47141 additions & 3 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
---
2+
title: 'React Native 0.85 - New Animation Backend, New Jest Preset Package'
3+
authors:
4+
[
5+
alanleedev,
6+
CalixTang,
7+
zoontek,
8+
gabrieldonadel,
9+
bartlomiejbloniarz,
10+
coado,
11+
zeyap,
12+
SamuelSusla,
13+
]
14+
tags: [announcement, release]
15+
date: 2026-04-07
16+
---
17+
18+
# React Native 0.85 - New Animation Backend, New Jest Preset Package
19+
20+
Today we are excited to release React Native 0.85!
21+
22+
This release includes the New Animation Backend, moves the Jest preset to a dedicated package, and includes many other improvements and fixes.
23+
24+
### Highlights
25+
26+
- [New Animation Backend](/blog/2026/04/07/react-native-0.85#new-animation-backend)
27+
- [React Native DevTools Improvements](/blog/2026/04/07/react-native-0.85#react-native-devtools-improvements)
28+
- [Metro TLS Support](/blog/2026/04/07/react-native-0.85#metro-tls-support)
29+
30+
### Breaking Changes
31+
32+
- [Jest Preset Moved to New Package](/blog/2026/04/07/react-native-0.85#jest-preset-moved-to-new-package)
33+
- [Dropped Support for EOL Node.js Versions](/blog/2026/04/07/react-native-0.85#dropped-support-for-eol-nodejs-versions)
34+
- [`StyleSheet.absoluteFillObject` Removed](/blog/2026/04/07/react-native-0.85#stylesheetabsolutefillobject-removed)
35+
- [Other Breaking Changes](/blog/2026/04/07/react-native-0.85#other-breaking-changes)
36+
37+
<!--truncate-->
38+
39+
## Highlights
40+
41+
### New Animation Backend
42+
43+
React Native 0.85 introduces the new Shared Animation Backend, built in collaboration with [Software Mansion](https://swmansion.com/).
44+
45+
This is a new internal engine that powers how animations are applied under the hood for both Animated and Reanimated. By moving the main animation update logic to React Native core, Reanimated is able to land performance improvements that weren't possible before, and can ensure that the update reconciliation process is properly tested and will remain stable with future RN updates.
46+
47+
In Animated, you can now animate layout props with native driver (the [limitation once stated here](/docs/animations#caveats) no longer applies).
48+
49+
| iOS | Android |
50+
| :-------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------: |
51+
| <img src="/blog/assets/0.85-animation-backend-ios.gif" alt="Animation Backend demo on iOS" /> | <img src="/blog/assets/0.85-animation-backend-android.gif" alt="Animation Backend demo on Android" /> |
52+
53+
You can find more examples under [`react-native/packages/rn-tester/js/examples/AnimationBackend/`](https://github.com/facebook/react-native/tree/main/packages/rn-tester/js/examples/AnimationBackend).
54+
55+
To opt in, you can enable the experimental channel of React Native [as described in this page](/docs/releases/release-levels).
56+
57+
:::info
58+
59+
This experimental feature will only be available starting from React Native **0.85.1**, which will be released in the immediate future.
60+
61+
:::
62+
63+
#### How to animate layout props
64+
65+
With the new animation backend, you'll be able to animate Flexbox and position props with native driver in Animated.
66+
67+
```jsx
68+
import {
69+
Animated,
70+
Button,
71+
View,
72+
useAnimatedValue,
73+
} from 'react-native';
74+
75+
function MyComponent() {
76+
const width = useAnimatedValue(100);
77+
78+
const toggle = () => {
79+
Animated.timing(width, {
80+
toValue: 300,
81+
duration: 500,
82+
useNativeDriver: true,
83+
}).start();
84+
};
85+
86+
return (
87+
<View style={{flex: 1}}>
88+
<Animated.View
89+
style={{width, height: 100, backgroundColor: 'blue'}}
90+
/>
91+
<Button title="Expand" onPress={toggle} />
92+
</View>
93+
);
94+
}
95+
```
96+
97+
### React Native DevTools Improvements
98+
99+
React Native DevTools received several improvements in this release:
100+
101+
- **Multiple CDP connections**: React Native now supports multiple simultaneous Chrome DevTools Protocol connections, enabling clients such as React Native DevTools, VS Code, and AI agents to connect at the same time. This unlocks richer, composable tooling workflows without unexpectedly ending sessions.
102+
- **Native tabs on macOS**: We've updated the desktop app to compile for macOS 26, and have also enabled system-level tab handling for power users. Access via **Window > Merge All Windows**, when multiple DevTools windows are open.
103+
104+
<img src="/blog/assets/0.85-devtools-macos-tabs.png" alt="DevTools native tabs on macOS" />
105+
106+
- **Request payload previews**: After being disabled due to a regression, request body previews in the Network Panel are now restored on Android.
107+
108+
### Metro TLS Support
109+
110+
The Metro dev server can now accept a TLS configuration object, enabling HTTPS (and WSS for Fast Refresh) during development — useful for testing APIs that enforce secure connections.
111+
112+
Configure it in `metro.config.js`:
113+
114+
```js title="metro.config.js"
115+
const fs = require('fs');
116+
117+
config.server.tls = {
118+
ca: fs.readFileSync('path/to/ca'),
119+
cert: fs.readFileSync('path/to/cert'),
120+
key: fs.readFileSync('path/to/key'),
121+
};
122+
```
123+
124+
<!-- alex ignore simple -->
125+
126+
For local development, [mkcert](https://github.com/FiloSottile/mkcert) is a simple way to generate a locally-trusted certificate without browser warnings.
127+
128+
## Breaking Changes
129+
130+
### Jest Preset Moved to New Package
131+
132+
React Native's Jest preset has been extracted from `react-native` into the new `@react-native/jest-preset`, reducing core package size and giving projects more flexibility in their testing setup.
133+
134+
Update your `jest.config.js` with a one-line change:
135+
136+
```diff title="jest.config.js"
137+
- preset: 'react-native',
138+
+ preset: '@react-native/jest-preset',
139+
```
140+
141+
### Dropped Support for EOL Node.js Versions
142+
143+
React Native 0.85 drops support for end-of-life (EOL) Node.js versions and releases before v20.19.4. Please ensure you are running a supported version of Node.js before upgrading.
144+
145+
- **Node.js v20** (>=20.19.4) — Supported (Active LTS)
146+
- **Node.js v21** — Not supported (EOL)
147+
- **Node.js v22** — Supported (Active LTS)
148+
- **Node.js v23** — Not supported (EOL)
149+
- **Node.js v24+** — Supported
150+
151+
### `StyleSheet.absoluteFillObject` Removed
152+
153+
The deprecated `StyleSheet.absoluteFillObject` API has been removed. Use `StyleSheet.absoluteFill` or define your own absolute positioning styles instead.
154+
155+
```diff
156+
- const styles = StyleSheet.absoluteFillObject;
157+
+ const styles = StyleSheet.absoluteFill;
158+
```
159+
160+
### Other Breaking Changes
161+
162+
#### General
163+
164+
- `Pressable` no longer unmounts event listeners in hidden `Activity`.
165+
- Removed deprecated C++ type aliases for `ShadowNode::Shared`, `ShadowNode::Weak`, `ShadowNode::Unshared`, `ShadowNode::ListOfWeak`, `ShadowNode::ListOfShared`, `SharedImageManager` and `ContextContainer::Shared` — Those were not in use and consumer libraries should use the type directly.
166+
167+
#### Android
168+
169+
- We re-added `receiveTouches` to `RCTEventEmitter` with default no-op. This is a fix to reduce breaking changes for libraries that haven't migrated away from this method yet.
170+
- `ReactTextUpdate` is now internal and should not be accessed publicly directly.
171+
- Multiple classes deprecated or removed as legacy architecture cleanup:
172+
- `ReactZIndexedViewGroup` is now deprecated.
173+
- `UIManagerHelper` is now deprecated.
174+
- `CatalystInstanceImpl` has been removed (it was deprecated).
175+
- `NativeViewHierarchyManager` has been fully stubbed out.
176+
177+
#### iOS
178+
179+
- The `RCTHostRuntimeDelegate` is now deprecated and merged into `RCTHostDelegate`.
180+
- Fixed duplicate symbol error when using `React.XCFramework` (via `fmt` bump to 12.1.0).
181+
182+
## Other Changes
183+
184+
- **Metro** bumped to `^0.84.0`.
185+
- **React** updated to consume Hermes `250829098.0.10`.
186+
- **Yoga**: `YogaNode` migrated to Kotlin on Android.
187+
- **Accessibility**: Deprecated `AccessibilityInfo.setAccessibilityFocus` in favor of `AccessibilityInfo.sendAccessibilityEvent`.
188+
- **TypeScript**: Multiple utility type transformations (`$Values`, `mixed`, `$ReadOnly`, `$ReadOnlyArray`).
189+
- **Android Build**: Allow specifying dev server IP via `reactNativeDevServerIp` Gradle property.
190+
- **iOS Build**: Added support for clang virtual file system in `React.XCFramework`.
191+
192+
## Acknowledgements
193+
194+
React Native 0.85 contains over 604 commits from 58 contributors. Thanks for all your hard work!
195+
196+
<!--alex ignore special white-->
197+
198+
We want to send a special thank you to those community members that shipped significant contributions in this release.
199+
200+
- [Zeya Peng](https://github.com/zeyap), [Bartłomiej Błoniarz](https://github.com/bartlomiejbloniarz), and [Dawid Małecki](https://github.com/coado) for the Animated Backend
201+
- [Vitali Zaidman](https://github.com/vzaidman) for Metro TLS
202+
- [Moti Zilberman](https://github.com/motiz88) for Multiple CDP Connections
203+
- [Phil Pluckthun](https://github.com/kitten) and [Alex Hunt](https://github.com/huntie) for the Jest Preset migration
204+
205+
Moreover, we also want to thank the additional authors that worked on documenting features in this release post:
206+
207+
<!-- TODO: Add blog post co-authors -->
208+
209+
## Upgrade to 0.85
210+
211+
:::info
212+
213+
0.85 is now the latest stable version of React Native and 0.82.x moves to unsupported. For more information see [React Native's support policy](https://github.com/reactwg/react-native-releases/blob/main/docs/support.md).
214+
215+
:::
216+
217+
#### Upgrading
218+
219+
Please use the [React Native Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) to view code changes between React Native versions for existing projects, in addition to the [Upgrading docs](/docs/upgrading).
220+
221+
#### Create a new project
222+
223+
```sh
224+
npx @react-native-community/cli@latest init MyProject --version latest
225+
```
226+
227+
#### Expo
228+
229+
If you use Expo, the next SDK, SDK 56, will include React Native 0.85.

website/blog/authors.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,3 +396,31 @@ markusleyendecker:
396396
socials:
397397
github: mliond
398398
image_url: https://github.com/mliond.png
399+
400+
CalixTang:
401+
name: Calix Tang
402+
title: Software Engineer @ Meta
403+
socials:
404+
github: CalixTang
405+
image_url: https://github.com/CalixTang.png
406+
407+
zoontek:
408+
name: Mathieu Acthernoene
409+
title: Software Engineer @ Expo
410+
socials:
411+
github: zoontek
412+
image_url: https://github.com/zoontek.png
413+
414+
bartlomiejbloniarz:
415+
name: Bartłomiej Błoniarz
416+
title: Software Engineer @ Software Mansion
417+
socials:
418+
github: bartlomiejbloniarz
419+
image_url: https://github.com/bartlomiejbloniarz.png
420+
421+
zeyap:
422+
name: Zeya Peng
423+
title: Software Engineer @ Meta
424+
socials:
425+
github: zeyap
426+
image_url: https://github.com/zeyap.png

website/src/components/releases/_releases-table.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
| `0.88.x` | 2026-09-07 | 2026-10-12 | Future | |
55
| `0.87.x` | 2026-07-06 | 2026-08-10 | Future | |
66
| `0.86.x` | 2026-05-04 | 2026-06-08 | Future | |
7-
| `0.85.x` | 2026-03-02 | 2026-04-06 | Future | |
7+
| `0.85.x` | 2026-03-02 | 2026-04-06 | Active | [Details](/blog/2026/04/07/react-native-0.85) |
88
| `0.84.x` | 2026-01-05 | 2026-02-09 | Active | [Details](/blog/2026/02/11/react-native-0.84) |
9-
| `0.83.x` | 2025-11-03 | 2025-12-10 | Active | [Details](/blog/2025/12/10/react-native-0.83) |
10-
| `0.82.x` | 2025-09-01 | 2025-10-06 | End of Cycle | [Details](/blog/2025/10/08/react-native-0.82) |
9+
| `0.83.x` | 2025-11-03 | 2025-12-10 | End of Cycle | [Details](/blog/2025/12/10/react-native-0.83) |
10+
| `0.82.x` | 2025-09-01 | 2025-10-06 | Unsupported | [Details](/blog/2025/10/08/react-native-0.82) |
1111
| `0.81.x` | 2025-07-10 | 2025-08-12 | Unsupported | [Details](/blog/2025/08/12/react-native-0.81) |
1212
| `0.80.x` | 2025-05-07 | 2025-06-12 | Unsupported | [Details](/blog/2025/06/12/react-native-0.80) |
1313
| `0.79.x` | 2025-03-04 | 2025-04-08 | Unsupported | [Details](/blog/2025/04/08/react-native-0.79) |
1.94 MB
Loading
2.6 MB
Loading
215 KB
Loading
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
:::tip Canary 🧪
2+
3+
**This API is currently only available in React Native’s Canary and Experimental channels.**
4+
5+
If you want to try it out, please [enable the Canary Channel](releases/release-levels) in your app.
6+
7+
:::
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
:::important Experimental 🧪
2+
3+
**This API is experimental.** Experimental APIs may contain bugs and are likely to change in a future version of React Native. Don't use them in production.
4+
5+
:::
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
:::tip Experimental Feature 🧪
2+
3+
**This API is currently only available in React Native’s Experimental channels.**
4+
5+
Experimental APIs may contain bugs and are likely to change in a future version of React Native. Don't use them in production.
6+
7+
If you want to try it out, please [enable the Experimental Channel](releases/release-levels) in your app.
8+
9+
:::
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import React from 'react';
2+
import IOSContent from './fabric-native-components-ios.md';
3+
import AndroidContent from './fabric-native-components-android.md';
4+
5+
export function FabricNativeComponentsIOS() {
6+
return <IOSContent />;
7+
}
8+
9+
export function FabricNativeComponentsAndroid() {
10+
return <AndroidContent />;
11+
}

0 commit comments

Comments
 (0)