React Native 0.86 – Edge-to-Edge and DevTools Improvements, no breaking changes

joeyespo1 pts0 comments

React Native 0.86 - Edge-to-Edge and DevTools Improvements, no breaking changes · React Native

Skip to main content<br>Re-watch the latest React Native Keynote from React Conf 2025

Today we are excited to release React Native 0.86!

This release includes comprehensive edge-to-edge support on Android 15+ and improvements in React Native DevTools.

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.

Highlights​

A New Home for React Native

Edge-to-Edge on Android

React Native DevTools Improvements

A New Home for React Native​

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, an independent foundation dedicated to the long-term stewardship of the React ecosystem.

GitHub will automatically redirect all existing URLs, issues and PRs to the new location, so no action is required on your part.

Edge-to-Edge on Android​

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.

Key fixes include:

measureInWindow now returns correct coordinates when edge-to-edge is enabled.

KeyboardAvoidingView works correctly on Android 15+ with edgeToEdgeEnabled.

Dimensions window values are accurate on Android versions prior to 15 when edge-to-edge is enabled.

StatusBar now supports updating status bar style and visibility while a Modal is open.

Navigation bar contrast respects the theme's enforceNavigationBarContrast attribute.

React Native DevTools Improvements​

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.

As with the web, this is a temporary switch that will reset when DevTools is disconnected.

Breaking Changes​

React Native 0.86 has no user-facing breaking changes .

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.

To learn more about what we consider a breaking change, have a look at this article.

Deprecations​

The following APIs have been deprecated and are due for removal in a future release of React Native:

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.

AppRegistry : The second argument of AppRegistry.setComponentProviderInstrumentationHook is now deprecated and will warn if used.

Other Changes​

Runtime & Web Spec Alignment​

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.

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.

Rendering, Layout & Animation​

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.

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.

Text measurement crash : Fixed a crash when measuring text on a surface that had already been stopped.

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.

Yoga Layout fixes : Fixed several layout regressions related to Yoga such as text wrapping in absolutely positioned elements on Android (#56651), a crash with Android's BoringLayout.isBoring() with a negative width (#56007) and fixed ownership of nodes with display: contents nodes (#56422).

Accessibility​

Unresolved promises : Fixed AccessibilityInfo.isDarkerSystemColorsEnabled, isHighTextContrastEnabled and prefersCrossFadeTransitions returning promises that never resolved on unsupported platforms. They now resolve to false instead of hanging...

react native edge android devtools changes

Related Articles