Warning
This is a release candidate. It is not intended for production use.
v0.86.0-rc.0
Breaking changes
✨ None ✨
Added
- Accessibility: AccessibilityInfo: added missing tests for Promise based methods, align null checks and error message code style (8fc503d780 by @chicio)
- Animated: Suspense tests for the Animation Backend (8101fc776d by Bartlomiej Bloniarz)
- Animated: Use weak_ptr when calling pullAnimationMutations in a callback scheduled with the Animation Backend (42d98b5830 by Bartlomiej Bloniarz)
- Dev Server: Call methods on
global.__BUNDLE_LOADER_REPORTER__, if given, during dev-mode bundler loads from Metro (1e0c1f886b by @robhogan) - React Native DevTools: Add new custom track for React Native Renderer operations in React Native DevTools performance traces (0b1def9ce5, 29bc8f1acb, 9130df6773, c26a4875ea by @rubennorte)
- React Native DevTools: Add support for light/dark mode emulation via
Emulation.setEmulatedMedia(11a5432cb2 by @huntie) - Runtime: Add
unstable_getViewTransitionInstanceto UIManagerBinding (d8820a403b by @zeyap) - Runtime: Add UIManagerViewTransitionDelegate interface and View Transition APIs (cdad57d8f1 by @zeyap)
- Runtime: Add viewport size to
LayoutContext(d38c756529 by @paradowstack) - Runtime: ViewTransitionModule for React Native View Transitions (f81f73e5a0 by @zeyap)
- Text: Add E2E tests for Text
boxShadowand textWithLinkRole (b172f46f0d by @NickGerleman) - View: Add E2E tests for Filter blur-with-overflow, drop-shadow, and animated-blur (66975aa3d5 by @NickGerleman)
- View: Add
mixBlendModeplus-lighter (aaa0684045 by @bigcupcoffee)
Android specific
- Events: Channel play/pause hardware events. (5087aa0dba by Nishil Shah)
- Events: Pass event object to
BackHandlerhardwareBackPressevents to access timeStamp from native event. (bf277cb6d4 by @rubennorte) - LogBox: Allow LogBox notification toasts and inspector overlay to be dismissed via Android back button (6530092162 by @Abbondanzo)
- Runtime: Add
ExtraWindowEventListenerinterface to allow native modules to react to window creation / destruction (e.g. Modal dialogs) (58fec1fa8d by @zoontek) - Runtime: Add test for synchronous mount props override behavior (a25e0fdddf by @zeyap)
- Text: Add E2E tests for Text visual examples (batch 1) (b53b228673 by @NickGerleman)
- Text: Add E2E tests for Text visual examples (batch 2) (d5a271dd05 by @NickGerleman)
- TextInput: Add extended Android
TextInputautoCompleteautofill hint support and bumpandroidx.autofillto1.3.0. (ac598aff2b by @radko93) - View: Add E2E tests for Filter static visual examples (d18d9a4046 by @NickGerleman)
iOS specific
- Build: Add privacy manifest to declare the use of
mach_absolute_time()API in the React-timing module (2ae6c8940d by @rubennorte) - Dev Server: Introduce
isPackagerRunningAsyncthat does not block the UI thread waiting on the request to DevServer ("Packager") validating that it is running (dd056d9b4c by @vzaidman) - Image: Add E2E tests for Image visual examples (48b6f2dcc9 by @NickGerleman)
- Networking: Add
RCTSetCustomMultipartDataTaskRequestInterceptorAPI to allow custom modification of multipart data task requests before they are sent (59b8886bb8 by @cipolleschi)
Changed
- Build: Update Metro to ^0.84.2 (57d4b6b350 by @robhogan)
- Dev Server: LoadBundleFromServer test: remove legacy Jest timers, increased coverage and improved assertions (a19d98e542 by @chicio)
- Hermes: Bump hermes-compiler dependency (031168013e by @robhogan)
- Hermes: Bump hermes version (89a2a20739 by @robhogan)
- LogBox: Migrated
LogBoxDatatests to Jest modern timers (dea2136a49 by @chicio) - React: Make React Native consume 250829098.0.11 (26953d8343 by @alanleedev)
- React Native DevTools: Derive WebSocket scheme and port from dev server URL for React DevTools connections, supporting HTTPS dev servers (ca4173701d by @cipolleschi)
- Runtime: Measure node instance during
applyViewTransitionName(d17ecca3c9 by @zeyap) - Runtime: Move ViewTransition APIs not for react reconciler to its own TurboModule (0e65df9152 by @zeyap)
- Runtime: Setting
reportErrorsAsExceptionsto anything other thanfalseno longer does anything. (Previously, setting it to a falsey value would be similar to setting it tofalse.) (f0748a6387 by @yungsters) - Runtime: Use
getNullableViewStateinSurfaceMountingManager::updatePropsand log a soft exception instead (bbf7004935 by Bartlomiej Bloniarz) - TurboModules: Move
DefaultTurboModules::getto end ofTurboModuleManager(6b32971f46 by @zeyap)
Android specific
- Animated:
AnimationBackendChoreographerdoesn't guard theReactChoreographerpost/remove withsynchronized(paused)(22d327595d by Bartlomiej Bloniarz) - Build: Changed foojay-resolver-convention version to 1.0.0 (664acaf441 by @TheNerdGuyLulu)
- StatusBar: Respect theme
enforceNavigationBarContrastattribute (dfddcc9796 by @zoontek)
iOS specific
- Networking: Add
RCTHTTPRequestInterceptorfor selective HTTP request modification (0c7d780aa0 by @cipolleschi) - Networking: Add
SRWebSocketProviderfor selective WebSocket header injection (f3aa8c21d1 by @cipolleschi) - React Native DevTools: Derive inspector and debugger URL scheme from bundle URL to support HTTPS dev servers (36dfcef023 by @cipolleschi)
Deprecated
- JavaScript API: Deprecated second argument for hook function passed to
AppRegistry.setComponentProviderInstrumentationHookas it's not usable by apps. Passed stub that warns when used. (64116117c0 by @rubennorte)
Fixed
- Accessibility: Fix
AccessibilityInfo.isDarkerSystemColorsEnabledunresolved (never ending) promise (8fbf2fab47 by @chicio) - Accessibility: Fix
AccessibilityInfo.isHighTextContrastEnabledunresolved (never ending) promise (5c9a5717c1 by @chicio) - Accessibility: Fix
AccessibilityInfo.prefersCrossFadeTransitionsunresolved (never ending) promise (57c073f0d7 by @chicio) - Animated: Fix 1-frame latency in C++
NativeAnimatedNodesManagerfor event-driven animations by processing the animation graph synchronously on every scroll event, matching the Java implementation behavior (0517fb552d by Mark Verlingieri) - Animated: Fix typo "interpolation" to "interpolate" and add missing space in
AnimatedInterpolationerror messages (a8b39a237c by @Nedunchezhiyan-M) - Babel: Prevent errors by handling contexts where the Babel API object is not provided (63796a9160 by On Saint Tiong)
- Build: Fix incorrect package name and output filename in
scripts/js-api/README.md(d823f5b1cc by @Nedunchezhiyan-M) - Codegen: Respect enum values for TurboModule c++ codegen (56129fedcb by @akawrykow)
- Documentation: Correct the v0.85.0 changelog entry for the removal of
StyleSheet.absoluteFillObject. (fdbe0d0b63 by @jingjing2222) - Modal: Forward
styleprop to Modal's inner container View with correct precedence so consumer styles are applied without overridingtransparentorbackdropColor(f8fa76f94c by @AnuMessi10) - React Native DevTools: Add exponential backoff and exception handling to
InspectorPackagerConnectionreconnect loop to prevent heap fragmentation crashes (32d3eafdc4 by @shubhamksavita) - Runtime: Add missing
VIEW_EVENT_CASEentries inBaseViewProps::setPropfor Click, PointerDown, PointerUp, GotPointerCapture, LostPointerCapture and their Capture variants (offsets 30-37) (8d5482dd94 by Harini Malothu) - Runtime: Fix crash in Performance API when sorting entries (81c99682a4 by @Abbondanzo)
- Runtime: Fix event timestamp injection overriding native timestamps with lowercase property name (68debb27ff by @fkgozali)
- Runtime: Fix event timestamp propagation from host platforms to JS (aa51746b87 by @rubennorte)
- Runtime: Link VirtualView component (de78906391 by @j-piasecki)
- Runtime:
PerformanceObserver:observe({type: 'event'})now correctly defaultsdurationThresholdto 104ms per the W3C Event Timing spec instead of reporting all events. (65c561e195 by @rubennorte) - Runtime: Prevent Scheduler use-after-free crash when surfaces tear down with pending rendering updates (aadbe96579 by @fkgozali)
- Runtime: Prevent updates to mounted flag on the React revision (7ee893d3be by @j-piasecki)
- Runtime: Support multiple old pseudo elements for same name but different source node (370606dc5b by @zeyap)
- Runtime: Use relevant revision as base for mounted flag updates (4b954e14c8 by @j-piasecki)
- Runtime: Views with a non-invertible transform (e.g.
scaleX: 0orscaleY: 0) no longer receive touches on Android or iOS. (1e8e182410 by @qflen) - TurboModules: Bring back C++ Turbo Module example in RN Tester (1c2cddad1a by @christophpurrer)
- VirtualizedList: Improve render area change with initialScrollIndex non zero test in VirtualizedList to avoid magic numbers timers (9b966d1d8f by @chicio)
- Yoga: Fixed Yoga node ownership when
display: contentsis used in absolutely positioned subtrees (f2f92098dd by @j-piasecki)
Android specific
- Accessibility: Guard
ReactViewGroup.addChildrenForAccessibilityagainst transient non-descendant accessibility traversal crashes. (e681736e18 by @erickreutz) - Build: Fix build regression by using
rootProject.file(8a8f1b801c by @etodanik) - Hermes: Fix
HermesSamplingProfiler.disable()JNI registration callingenable()instead ofdisable()(7f2a58e46c by @elirangoshen) - Hermes: Use Hermes V1 stable release instead of legacy nightly to fix startup crash caused by JSI ABI mismatch (45ceacc08f by @cipolleschi)
- Image: Fix image content disappearing on API 24 (Nougat) when antialiased border radius clipping is applied (fdd6ca5bb1 by @Abbondanzo)
- Image: Make sure view width and height are non 0 before calling
createBitmap()(c20a58ab6b by @zeyap) - Legacy Architecture: Fix
onHostPausecrash inReactInstanceManagerwithout feature flag (3aa8a043de by @shubhamksavita) - LogBox: Fixed activity context memory leak in
LogBoxDialogSurfaceDelegatewhen using bridgeless mode (f10cded1f8 by Ilya Kovalyov) - Networking: Blob content provider did not work in new arch (05ea94c441 by @javache)
- Networking: Catch
OutOfMemoryErrorinNetworkingModuleresponse processing to prevent app crashes (0c153e2971 by @shubhamksavita) - Networking: WebSocketModule no longer strips a
Cookieheader passed via the WebSocket constructor'sheadersoption (24b51db75b by @psjostrom) - Runtime: Fix
Dimensionswindowvalues on Android < 15 when edge-to-edge is enabled (44a4b1ba5d by @zoontek) - Runtime: Fix
KeyboardAvoidingViewon Android 15+ / withedgeToEdgeEnabled(4a6c933cce by @zoontek) - Runtime: Fix
measureInWindowreturning incorrect coordinates when edge-to-edge is enabled (9d183675e9 by @zoontek) - Runtime: Fix crash from stale preallocated view registry after concurrent render cancellation (97cf2202ee by @javache)
- Runtime: Gate diagnostic
printMountItemcalls inMountItemDispatchererror handlers behindenableFabricLogs()to prevent OOM crash (7a546f98a7 by @JakobFelixJulius) - Runtime: Handle edge-to-edge when it's not enabled by the
edgeToEdgeEnabledgradle property but enforced by the OS (Android 15+) (c2280e3201 by @zoontek) - Runtime: Register
HeadlessJsTaskSupportModuleinCoreReactPackage(2d78a39b3e by 贾太滨) - Runtime: Schedule React revision merge to happen on
DISPATCH_UIchoreographer queue, before dispatching events (b63efbfc6b by @j-piasecki) - ScrollView: Dispatch FPS performance events for mouse wheel and trackpad scroll interactions in ScrollView (e0a453c603 by @Abbondanzo)
- ScrollView: Fix FPS performance listener being cleared on ScrollView recycle (59ac1db76e by @Abbondanzo)
- StatusBar: StatusBar configuration now applies to Modal windows, fixing visual inconsistencies (6614fe7f2b by @zoontek)
- Text: Fix 1px text wrapping in absolutely positioned elements caused by fractional Yoga widths (90c2c595da by @clocksarestupid)
- Text: Fix BoringLayout crash when
isBoring()returns negative width (d527f2d663 by @NickGerleman) - Text: Fix crash when measuring text in a stopped surface (f71ec1a24e by @NickGerleman)
- TextInput: Fix
setAutoCapitalizestripping numericTextInputflags (TYPE_NUMBER_FLAG_SIGNED/DECIMAL), affecting minus sign input on Samsung keyboards (863f76bd49 by @lukeharvey) - TextInput: KeyboardAvoidingView and TextInput auto-scroll not responding to IME height changes (e.g., when toggling emoji panel or predictive bar) (ee1d067692 by @alanleedev)
- View: Fixed a crash when clearing
zIndexwith props 2.0 enabled (93b37350af by @hannojg) - View: Fixed crash when enabling props 2.0 and setting
borderStyletoundefined(9e058db4c8 by @hannojg) - View: Unsupported background size value leading to crash (fe046dc782 by @intergalacticspacehighway)
iOS specific
- Build: Addressed -Wunreachable-code-return violations (9172bfe647 by @ingridwang)
- Build: Addressing -Wunreachable-code-return issues. (722623aaeb by @ingridwang)
- Build: Fixing unreachable-code-break (795d902270 by @ingridwang)
- Build: Made
ReactInternalcompatible with Swift (fc5cc2821f by @rmaz) - Build: Removing unused ivars (3d2d14df16 by @ingridwang)
- CocoaPods: Fix
REACT_NATIVE_PATHresolution whenPods/is a symlink (ea383822b7 by @huntie) - CocoaPods: Fix React-CoreModules failing to compile with
use_frameworks!due to missing React-featureflags header path (fb0d28c6fd by @radko93) - CocoaPods: Preserve Expo-generated
React-use-frameworks.modulemapacrossreplace-rncore-version.jsruns (ada39220a0 by @Insik-Han) - Dev Server: Fix iOS dev-support IPv6 handling for packager and inspector connections. (4a59f90c22 by @hannojg)
- Hermes: Fix compilation error in
createJSRuntimeFactoryand skip Hermes pods whenUSE_THIRD_PARTY_JSCis enabled (2d8143794d by @tux2nicolae) - Networking: Fix crash in
RCTWebSocketModulewhen delegate callbacks fire after module invalidation (587ef059a2 by @lukeharvey) - React Native DevTools: Fix inspector server host resolution for HTTPS bundle URLs by omitting default port (3582a8b2b5 by @cipolleschi)
- TextInput: Fix
NSRangeExceptioncrash inRCTBackedTextInputDelegateAdapterwhen text range is out of bounds (19350b1c8c by @lukeharvey) - View: Fixes crash when changing the value of
removeClippedSubviews(91e3f773b7 by @javache)
Security
- Dependencies: Bumped
fast-xml-parserfrom 4.5.0 to 4.5.4 to fix CVE-2026-25896 (56908a74c7 by @balajacatherin) - Dependencies: Bumped
minimatchto fix CVE-2026-27903, CVE-2026-27904 (c019a50a4c by @balajacatherin)
Hermes dSYMS:
Hermes V1 dSYMS:
ReactNativeDependencies dSYMs:
ReactNative Core dSYMs:
You can file issues or pick requests against this release here.
To help you upgrade to this version, you can use the Upgrade Helper ⚛️.
View the whole changelog in the CHANGELOG.md file.