Skip to content

Commit c8acb5f

Browse files
Add React Native 0.86 release blog post (#5121)
Add React Native 0.86 release blog post.
1 parent 1167d3c commit c8acb5f

2 files changed

Lines changed: 152 additions & 0 deletions

File tree

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
---
2+
title: 'React Native 0.86 - Edge-to-Edge and DevTools Improvements, no breaking changes'
3+
authors: [fabriziocucci, robhogan, zoontek, gabrieldonadel]
4+
tags: [announcement, release]
5+
date: 2026-06-11
6+
---
7+
8+
# React Native 0.86 - Edge-to-Edge and DevTools Improvements, no breaking changes
9+
10+
Today we are excited to release React Native 0.86!
11+
12+
This release includes comprehensive edge-to-edge support on Android 15+ and improvements in React Native DevTools.
13+
14+
Following 0.83, this is the second React Native release with no user-facing breaking changes, reflecting our continued commitment to making upgrades more predictable and seamless.
15+
16+
### Highlights
17+
18+
- [A New Home for React Native](/blog/2026/06/11/react-native-0.86#a-new-home-for-react-native)
19+
- [Edge-to-Edge on Android](/blog/2026/06/11/react-native-0.86#edge-to-edge-on-android)
20+
- [React Native DevTools Improvements](/blog/2026/06/11/react-native-0.86#react-native-devtools-improvements)
21+
22+
{/* truncate */}
23+
24+
## Highlights
25+
26+
### A New Home for React Native
27+
28+
The React Native repository, together with React, Metro, Yoga and the React Native Website, has moved from the `facebook` GitHub organization to the `react` organization. This move reflects the transition of React and React Native to the [React Foundation](https://react.foundation/), an independent foundation dedicated to the long-term stewardship of the React ecosystem.
29+
30+
GitHub will automatically redirect all existing URLs, issues and PRs to the new location, so no action is required on your part.
31+
32+
### Edge-to-Edge on Android
33+
34+
React Native 0.86 ships comprehensive fixes for Android 15+ edge-to-edge mode, including when it's enforced by the OS but not explicitly enabled via the `edgeToEdgeEnabled` Gradle property.
35+
36+
Key fixes include:
37+
38+
- **`measureInWindow`** now returns correct coordinates when edge-to-edge is enabled.
39+
- **`KeyboardAvoidingView`** works correctly on Android 15+ with `edgeToEdgeEnabled`.
40+
- **`Dimensions`** window values are accurate on Android versions prior to 15 when edge-to-edge is enabled.
41+
- **`StatusBar`** now supports updating status bar style and visibility while a Modal is open.
42+
- **Navigation bar** contrast respects the theme's `enforceNavigationBarContrast` attribute.
43+
44+
### React Native DevTools Improvements
45+
46+
React Native DevTools now supports **light/dark mode emulation** via `Emulation.setEmulatedMedia`, allowing you to test your app's appearance mode handling directly from DevTools without changing your device settings. Use `cmd`/`ctrl` + `shift` + `P` to access from the Command Palette.
47+
48+
As with the web, this is a temporary switch that will reset when DevTools is disconnected.
49+
50+
![React Native DevTools Command Palette showing the light/dark mode emulation options](/blog/assets/0.86-devtools-light-dark-emulation.png)
51+
52+
## Breaking Changes
53+
54+
React Native 0.86 has **no user-facing breaking changes**.
55+
56+
If you are on React Native 0.85, you should be able to upgrade your app to React Native 0.86 without any changes to your app code.
57+
58+
To learn more about what we consider a breaking change, have a look at [this article](/docs/releases/versioning-policy#what-is-a-breaking-change).
59+
60+
## Deprecations
61+
62+
The following APIs have been deprecated and are due for removal in a future release of React Native:
63+
64+
- **`ViewUtil.getUIManagerType`**: As part of the removal of the legacy architecture, this API is now deprecated. You can inline `UIManagerType.Fabric` directly or remove the checks on the UIManagerType altogether.
65+
- **`AppRegistry`**: The second argument of `AppRegistry.setComponentProviderInstrumentationHook` is now deprecated and will warn if used.
66+
67+
## Other Changes
68+
69+
### Runtime & Web Spec Alignment
70+
71+
- **`ExceptionsManager.reportErrorsAsExceptions` strictness**: Setting `reportErrorsAsExceptions` to anything other than `false` no longer does anything. Previously, any falsy value (like `0`, `null` or `""`) would disable error-to-exception conversion. Now only the explicit boolean `false` opts out, making the API less error-prone.
72+
- **`PerformanceObserver` default `durationThreshold`**: `observe({type: 'event'})` now correctly defaults `durationThreshold` to 104ms per the W3C Event Timing spec, instead of reporting all events. This aligns React Native's Performance API with web standards and reduces noise from very short events.
73+
74+
### Rendering, Layout & Animation
75+
76+
- **Modal Components `style` prop**: The `style` prop is now forwarded to Modal's inner container View, allowing custom styling (e.g., padding, background colors) without overriding `transparent` or `backdropColor` behavior.
77+
- **Animated mounting layer sync**: Enabled a mounting layer synchronization so Native Animated synchronous updates are not overridden by later React commits. This fixes a flicker where animated views could briefly jump back to their pre-animation values.
78+
- **Text measurement crash**: Fixed a crash when measuring text on a surface that had already been stopped.
79+
- **Non-invertible transform touch fix**: Views with non-invertible transforms (e.g., `scaleX: 0` or `scaleY: 0`) no longer receive touches on Android or iOS. Hit-testing now detects when a transform matrix can't be inverted and skips those views.
80+
- **Yoga Layout fixes**: Fixed several layout regressions related to Yoga such as text wrapping in absolutely positioned elements on Android ([#56651](https://github.com/facebook/react-native/pull/56651)), a crash with Android's `BoringLayout.isBoring()` with a negative width ([#56007](https://github.com/facebook/react-native/pull/56007)) and fixed ownership of nodes with `display: contents` nodes ([#56422](https://github.com/facebook/react-native/pull/56422)).
81+
82+
### Accessibility
83+
84+
- **Unresolved promises**: Fixed `AccessibilityInfo.isDarkerSystemColorsEnabled`, `isHighTextContrastEnabled` and `prefersCrossFadeTransitions` returning promises that never resolved on unsupported platforms. They now resolve to `false` instead of hanging indefinitely.
85+
86+
### Infrastructure & Dependencies
87+
88+
- **Metro `^0.84.2`**: Updated Metro bundler dependency.
89+
- **`HeadlessJsTaskSupportModule` auto-registration**: This module is now registered in the `CoreReactPackage`, so apps that use headless JS tasks on Android no longer need to ensure this module is manually registered.
90+
91+
### JSI (Native Interface)
92+
93+
New JSI APIs added to make the C++ interface between native modules and the JS engine more capable:
94+
95+
- **`IRuntime` interface**: Makes previously protected `Runtime` methods public, enabling new JSI functionality without cascading interface versions.
96+
- **`TypedArray` / `Uint8Array`**: First-class support for typed arrays, including creation, buffer access, offset and length queries.
97+
- **`ArrayBuffer.detached`**: Check whether an `ArrayBuffer` has been detached.
98+
- **`Array.push`**: Append elements to arrays (previously array size was immutable after creation).
99+
- **`String.length`**: Get string length in UTF-16 code units without converting to a full string.
100+
- **`isInteger`**: Check if a `jsi::Value` is an integer without calling into the runtime.
101+
- **Error creation APIs**: Factory methods for all standard JS error types (`TypeError`, `RangeError`, `ReferenceError`, `SyntaxError`, `EvalError`, `URIError`).
102+
103+
### Android Input, Navigation & Images
104+
105+
- **BackHandler event object**: `hardwareBackPress` events now pass an event object with a `timeStamp` property from the native event, enabling timing analysis and event correlation. Existing callbacks that ignore the argument are unaffected.
106+
- **BackHandler resume fix on API 36+**: `BackHandler` callbacks stopped working after the app was resumed from the background on Android API 36+. The fix ensures the back button handler is properly re-registered during `onHostResume`.
107+
- **LogBox/RedBox back button dismiss**: LogBox notification toasts and the inspector overlay can now be dismissed via the Android hardware back button.
108+
- **TextInput `setAutoCapitalize` Samsung fix**: Fixed `setAutoCapitalize` stripping `TYPE_NUMBER_FLAG_SIGNED` and `TYPE_NUMBER_FLAG_DECIMAL` flags on Samsung keyboards, which prevented users from typing minus signs in numeric inputs.
109+
- **TextInput/KeyboardAvoidingView IME height**: `KeyboardAvoidingView` and TextInput auto-scroll now respond correctly to IME height changes, such as toggling between the keyboard and emoji panel or when the predictive text bar appears.
110+
- **Pressable `android_ripple`**: The `android_ripple` prop now accepts `PlatformColor`.
111+
- **`Image.getSize` / `Image.getSizeWithHeaders`**: These now return the true source dimensions instead of Fresco's downsampled values.
112+
113+
### Android Networking
114+
115+
- **`OutOfMemoryError` handling**: `NetworkingModule` now correctly handles very large HTTP responses and will not OOM or crash.
116+
- **WebSocket `Cookie` header**: `WebSocketModule` no longer strips a `Cookie` header passed via the WebSocket constructor's `headers` option, allowing authentication cookies to be sent over WebSocket connections.
117+
- **Blob content provider with New Architecture**: The Blob content provider (used for `blob:` URLs to access binary data) now works correctly with the New Architecture.
118+
119+
## Acknowledgements
120+
121+
React Native 0.86 contains over 596 commits from 97 contributors. Thanks for all your hard work!
122+
123+
{/* alex ignore special white */}
124+
125+
We want to send a special thank you to those community members that shipped significant contributions in this release.
126+
127+
- [Mathieu Acthernoene](https://github.com/zoontek) for edge-to-edge support on Android and StatusBar improvements
128+
- [Jakub Piasecki](https://github.com/j-piasecki) for ShadowTree and Yoga fixes
129+
- [Nick Gerleman](https://github.com/NickGerleman) for Text rendering fixes
130+
- [Peter Abbondanzo](https://github.com/Abbondanzo) for LogBox, ScrollView and Image fixes
131+
132+
## Upgrade to 0.86
133+
134+
:::info
135+
136+
0.86 is now the latest stable version of React Native and 0.83.x moves to unsupported. For more information see [React Native's support policy](/releases).
137+
138+
:::
139+
140+
#### Upgrading
141+
142+
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).
143+
144+
#### Create a new project
145+
146+
```sh
147+
npx @react-native-community/cli@latest init MyProject --version latest
148+
```
149+
150+
#### Expo
151+
152+
For Expo projects, React Native 0.86 will be available as part of the `expo@canary` releases.
159 KB
Loading

0 commit comments

Comments
 (0)