A framework for building native applications using React
4
React Native v0.89.0-rc.0
Release date:
November 4, 2026
Previous version:
v0.88.1
(released October 27, 2026)
Magnitude:
12,763
Diff Delta
Contributors:
20 total committers
Commits:
291 Commits in this Release
Ordered by the degree to which they evolved the repo in this version.
Authored October 30, 2026
Authored October 22, 2026
Authored October 23, 2026
Authored October 26, 2026
Authored October 8, 2026
Authored September 10, 2026
Authored October 29, 2026
Authored October 23, 2026
Authored October 23, 2026
Authored October 30, 2026
Authored October 22, 2026
Authored September 10, 2026
Authored October 21, 2026
Authored October 30, 2026
Authored September 17, 2026
Authored September 10, 2026
Authored October 27, 2026
Authored October 23, 2026
Authored October 29, 2026
Authored October 28, 2026
Authored October 30, 2026
Authored October 27, 2026
Authored October 26, 2026
Authored October 30, 2026
Authored October 27, 2026
Authored October 22, 2026
Authored October 30, 2026
Authored October 30, 2026
Authored October 21, 2026
Authored October 27, 2026
Authored September 10, 2026
Authored October 23, 2026
Authored September 10, 2026
Authored October 30, 2026
Authored October 20, 2026
Authored October 23, 2026
Authored September 8, 2026
Authored October 6, 2026
Authored September 9, 2026
Authored September 10, 2026
Browse Other Releases
Latest Pending
Unreleased π
v0.89.0-rc.1
Released November 9, 2026
0 Ξ
v0.89.0-rc.0
Released November 4, 2026
12,763 Ξ
v0.88.1
Released October 27, 2026
14 Ξ
v0.88.0
Released October 15, 2026
0 Ξ
v0.88.0-rc.6
Released October 14, 2026
0 Ξ
v0.88.0-rc.5
Released October 12, 2026
0 Ξ
v0.88.0-rc.4
Released October 5, 2026
75 Ξ
v0.88.0-rc.3
Released September 28, 2026
0 Ξ
v0.88.0-rc.2
Released September 21, 2026
235 Ξ
v0.88.0-rc.1
Released September 15, 2026
0 Ξ
Top Contributors in v0.89.0-rc.0
christophpurrer
javache
robhogan
hryhoriiK97
rubennorte
Abbondanzo
zeyap
jwajgelt
huntie
generatedunixname499836121-99fa
Directory Browser for v0.89.0-rc.0
We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.
Release Notes Published
Breaking
- Accessibility:
AccessibilityState::selectedis nowstd::optional<bool>in C++ props, preserving an unsetselectedinstead of coercing it tofalse(af4d8eb08a by Calvin Liu) - Assets: Remove
react-native/assets-registry. UseAssetRegistryfromreact-nativeandreact-native/asset-utilsinstead. (56c48ac0eb by @huntie) - Babel: Turn off
babel/plugin-transform-destructuringplugin (73711b301e by @retyui) - C++: Remove deprecated
react/renderer/graphics/Geometry.handreact/renderer/graphics/conversions.h; include<React/Graphics.h>or<React/RendererCore.h>instead (1449daad5e by @j-piasecki) - CLI:
react-native/community-cli-pluginwill no longer be auto-detected fromreact-native. It must now be specified indevDependencies. (b26baaeba0 by @huntie) - CLI: Platform registration config for the Community CLI is removed from the
react-nativepackage. No breaking change withreact-native-community/cli21.x (required). (be9fbdd0d5 by @huntie) - Image: Fix explicit
fadeDurationbeing ignored on newly createdImages (98d6795e6d by @bartlomiejbloniarz) - JavaScript API: Mark
unstable_batchedUpdatesas deprecated (f6fc189b8c by @retyui) - VirtualizedList: Fix
SectionListandVirtualizedSectionListscrollToLocationto account for section headers and sticky headers correctly. (0c35f57447 by @amroaltah)
Android specific
- C++: Remove deprecated
rncore.h; includeFBReactNativeSpec.hand callFBReactNativeSpec_ModuleProviderinstead (d63648bac6 by @javache) - New Architecture: Remove
DefaultNewArchitectureEntryPoint.bridgelessEnabledand the deprecated three-argumentload(turboModulesEnabled, fabricEnabled, bridgelessEnabled)overload; bridgeless is always enabled in the New Architecture (9b18b951ea by @christophpurrer) - New Architecture: Remove
DefaultNewArchitectureEntryPoint.fabricEnabled,turboModulesEnabled,concurrentReactEnabledandisConfigurationValid(ca2e11af51 by @christophpurrer) - Text: Add
lineBreakandwordBreakprops toText(CSSline-break/word-break) for strict/loose line breaking and phrase-based breaking on Android 13+ (f736393946 by @iray-tno) - TurboModules: Libraries that ship pre-generated JNI codegen fail to build until they regenerate it with 0.89's codegen: the
JavaTurboModule::invokeJavaMethodoverload with acachedMethodIDargument is deprecated, and codegen CMake builds with-Werror. (f78bdd4aea by @hryhoriiK97)
iOS specific
- Animated: Delete legacy RCTNativeAnimatedModule from RN iOS (46662327fb by @christophpurrer)
- CocoaPods: Install
React-cxxreactheaders undercxxreact/inside its framework whenUSE_FRAMEWORKSis enabled. Pods that include<cxxreact/...>without callinginstall_modules_dependenciesmust addReact_cxxreact.framework/HeaderstoHEADER_SEARCH_PATHS. (0a92baec87 by @j-piasecki) - New Architecture: Remove the deprecated
bridgelessEnabledproperty and the deprecatedinitWithBundleURLBlock:newArchEnabled:turboModuleEnabled:bridgelessEnabled:/initWithBundleURL:newArchEnabled:turboModuleEnabled:bridgelessEnabled:initializers fromRCTRootViewFactoryConfiguration; bridgeless is always enabled (2a9eca81b8 by @christophpurrer) - TurboModules:
+moduleNameis now optional onRCTBridgeModuleinstead of required, so a TurboModule resolved via a module provider need not declare it (373385efc9 by @christophpurrer) - TurboModules:
RCTBridgeModule.hnow has nullability annotations.constantsToExportis nonnull, so a Swift override declared-> [AnyHashable : Any]!no longer compiles: declare it-> [AnyHashable : Any]. Module and view registry lookups,methodsToExport, promise resolve and reject arguments and weak module properties such asbridgeare nownullable. (08f96fefe4 by generatedunixname1608173377072046)
Added
- AppState: Add useAppState() hook for subscribing to app foreground/background state changes (7104c5ef36 by @Nedunchezhiyan-M)
- Babel:
react-native/metro-babel-transformerpasses Metro's ownbabel/runtimeand its version toreact-native/babel-preset, when Metro provides them (89db5ce049 by @robhogan) - Babel: Allow
react-native/babel-presetto readenableBabelRuntimeandbabelRuntimeModuleNamefrom Babel caller data (168a0d7b53 by @cortinico) - C++: Add
<React/ComponentRegistry.h>umbrella header as the public entry point forreact/renderer/componentregistry(2975534d8b by @j-piasecki) - C++: Added
ReactNativeVersion.hto publicreact/utilsmodule. (a35313a184 by @j-piasecki) - C++: Added an umbrella header for the
react/renderer/coremodule (dcc872ae01 by @j-piasecki) - C++: Added umbrella header for the
react/renderer/components/imagemodule (a9203b8fdd by @j-piasecki) - C++: Added umbrella header for the
react/renderer/imagemanagermodule (be53e3a9a1 by @j-piasecki) - Renderer: Allow C++ shadow node traits to be evaluated at compile time (73e3aeca88 by @javache)
- Runtime: Polyfill
Array.prototype.toSortedandArray.prototype.toReversedwhen the JavaScript runtime does not provide them (3ff956a2a2 by @javache) - Text: Add experimental longest-line width sizing for wrapped
Text(03ed284a2c by @Abbondanzo) - View: Add an
experimental_onSafeAreaInsetsChangeview prop, reporting the part of a view that is covered by the system UI, with a development warning for views that report their insets in a loop (8d658f4101 by @janicduplessis) - VirtualizedList: Export the
ViewabilityConfigandViewabilityConfigCallbackPairtypes from the package root (932b34a51c by @rubennorte) - Web APIs: Add ArrayBuffer, DataView, typed array, boxed BigInt, and Error subclass support to structuredClone (14de25bb2d by @rubennorte)
- Web APIs: Expose
structuredCloneandDOMExceptionas global Web APIs (245bbfaf0a by @rubennorte)
Android specific
- Accessibility: Add support for direct progress accessibility actions (1413a59de6 by @AndrewBlackMeta)
- Build: Introduce PCH for codegen targets to improve compilation time (7ca1b42002 by @lukmccall)
- Events: Add
eventTimeto theonHWKeyEventdevice event payload (15bb7e23f2 by @bumjung) - Gradle: Add
strictCxxApiEnabledGradle property to enforce React Native's C++ stable API in app native code (b5d9b6c03a by @j-piasecki) - Performance: C++
TraceSectionmarkers now appear in Perfetto and systrace captures (7728787c25 by @tomekzaw) - Renderer: Add
unstable_ImmediateUpdateMode support inupdateState. (0876643b91 by @intergalacticspacehighway) - Renderer: Stop re-arming the idle DISPATCH_UI Choreographer frame callback (behind feature flag) (8baeb2deeb by @capt-muji)
- Text: Log unrecognized font families, matching iOS (c1401a16a0 by @mosab-nasrallah)
- TurboModules: Add support for Activity Result API for native modules (ec2b536e14 by @matinzd)
- Yoga: Add
YogaNode.setNodeTypeto select pixel rounding for measured nodes (928fd149cb by @pentiumao)
iOS specific
- Accessibility:
AccessibilityInfo.isShowBordersEnabled()andshowBordersChanged(Show Borders, formerly Button Shapes) (62a1fc186d by @camilopires) - CocoaPods: Add
RN_STRICT_APIandRN_ALLOW_FRAMEWORKSCocoaPods opt-ins to enforce React Native's C++ stable API in app and library native code (0f1c6ae87d by @coado) - ReactHost: Add
-[RCTHost jsCallInvoker]to access the React instance'sCallInvoker(8f58866394 by @potomak) - SwiftPM: Add
RN_STRICT_APIandRN_ALLOW_FRAMEWORKSopt-ins for the Swift Package Manager setup to enforce React Native's C++ stable API in the app's native code (47f744d296 by @coado) - TurboModules: Add injectable launchOptions and performanceLogger module APIs (9d7447ab0d by @christophpurrer)
Changed
- Accessibility: Avoid VoiceOver interruptions from hidden text updates (e04aaf62f7 by @sbuggay)
- Animated: Avoid per-call allocations in Animated string and color interpolation (efc5161a8d by @shubh73)
- Babel: Hermes V1 profiles no longer lower
u-flag regexes, which Hermes compiles natively (92629fd498 by @robhogan) - Build: Changed builds to not probe Maven for
1000.0.0versioned artifacts. (b5c152237f by @coado) - C++:
RuntimeScheduler.hno longer transitively includesPerformanceEntryReporter.horShadowTreeRevisionConsistencyManager.h; include them directly where the complete types are needed (7aff51e2d1 by @j-piasecki) - C++: Expose
enableMountingCoordinatorPullModelAndroidin public C++ feature flags and moveBackgroundImagePropsConversions.hto "for frameworks" headers (fc4e7061e2 by @j-piasecki) - C++: Find a LongLivedObject in its collection without walking it (caf9cbcd63 by @hryhoriiK97)
- C++: Move
RecoverableErrorfrom private headers to "for frameworks" headers (f9c7007dc9 by @j-piasecki) - CLI: Change default transform profile to 'hermes-stable' (97bea4625d by @retyui)
- Codegen: Codegen-generated C++ includes React Native through module umbrella headers (095e563fb3 by @j-piasecki)
- Dependencies: Bump
memoize-onepackage to the latest version (adc45a8a03 by @retyui) - EventEmitter: RCTDeviceEventEmitter.emit no longer allocates closures on every emit when tracing is disabled, reducing per-event allocation on the native-to-JS event path (7f6043bdb0 by @secitr)
- Hermes: Bump Hermes to 260318099.0.6 (4eb4d2e795 by @fabriziocucci)
- Metro: Bump Metro minimum to 0.87.2 (b5c65ce265 by @robhogan)
- React Native DevTools: Upgrade the standalone app to Electron 43, add app-menu shortcuts, and add a macOS 26/27 icon (861635c35a by generatedunixname1395667395051502)
- Renderer: Building a
ShadowViewfor a View node no longer uses adynamic_castto read its layout metrics (79a562960d by @hryhoriiK97) - Renderer: Commits under a
display: 'none'view no longer re-run layout over the whole surface when something under it was created or changed while it was hidden (fe0df65653 by @mozzius) - Renderer: Compare prop name pointers before their characters in RawPropsParser (3b88cb2c67 by @hryhoriiK97)
- Renderer: Replace never-shared std::shared_mutex with std::mutex in ShadowNodeFamily (64217380a3 by @amillez)
- Renderer: The differ no longer copies its view culling context for every child when view culling is off (7230b63b3e by @hryhoriiK97)
- ShadowNode: Avoid a redundant copy of the children list in
ShadowNode::cloneTreeandUIManager::updateShadowTree(d0078c23d8 by @shubh73) - Text: Enable prepared text layout caching and Android text measurement optimizations by default (a5cb48b2fc by @Abbondanzo)
- VirtualizedList: Reduce allocations in the
VirtualizedListrender and scroll path (avoid per-renderSetallocation forstickyHeaderIndices, per-scroll-eventMapiterator for the empty nested-list collection, and per-callorientationobject allocation) (731ae45ae6 by @secitr) - VirtualizedList: Skip the cells state update when the render window doesn't change (2c635d7473 by @tomekzaw)
- Yoga: Yoga layout no longer uses
dynamic_castfor every child to check its type (392b7645b3 by @hryhoriiK97)
Android specific
- Build: Update
targetSdkto 37 (9fae71c2dd by @alanjhughes) - C++: Include React Native through module umbrella headers in app-facing JNI headers and the generated autolinking header (738e793b78 by @j-piasecki)
- Dependencies: Bump fbjni to 0.8.1 (1d13ec9889 by @cortinico)
- Dependencies: Bump NDK to r28c, fbjni 0.8.1 and fresco 3.9.0 (a948811cca by @Kudo)
- Dependencies: Upgrade AndroidX Activity to 1.10.1 (3b755040db by @Abbondanzo)
- Image: Images from the app bundle look up their resource without throwing an exception (98291bcb99 by @hryhoriiK97)
- Kotlin: Bump Kotlin to 2.2.10 to match the version required by AGP 9.2.1 (f03f6c2b85 by @lukmccall)
- Kotlin: Bumped the Gradle plugin minimum Kotlin API version to 2.1 (3cee68fa7a by @Abbondanzo)
- Kotlin: Update Kotlin to 2.3.21 (43a49f7fe3 by @cortinico)
- Renderer: Create StateWrapperImpl from C++ with its state (c48341282e by @tomekzaw)
- ScrollView: Build the scroll event payload in one JNI call (3908ef3153 by @tomekzaw)
- Text: Share one JNI global reference between copies of a prepared text layout, instead of creating one per copy (9c7b0f5faf by @hryhoriiK97)
- Text: Skip an unnecessary measuring pass when laying out
Text(3f5c2f3dbb by @tomekzaw) - Text: Text nodes cloned without changes share their measured layout instead of creating a new JNI global reference (0e041ddf8f by @hryhoriiK97)
- Touch Handling: Build touch event payloads in native code, making each touch event cheaper on the main thread (f5feafd404 by @hryhoriiK97)
- TurboModules: Parse each TurboModule method's JNI signature once instead of on every call (f7de20301c by @hryhoriiK97)
- TurboModules: Skip a redundant JNI Object.toString() call in WritableNativeMap.putString. (ba1ede621c by @riteshshukla04)
- View: Views with four equal rounded corners get their outline without building a path (42ba24ab03 by @hryhoriiK97)
iOS specific
- AppDelegate:
RCTAppSetupUtils.hno longer transitively importsHermesExecutorFactory.h(a385cecbea by @j-piasecki) - AppDelegate:
RCTAppSetupUtils.hno longer transitively importsJSIExecutor.horJSExecutor.h(3eb901e31a by @j-piasecki) - Runtime: Include
errnoand its description inRCTJavaScriptLoaderbundle open/stat errors (156a9a29a9 by generatedunixname1608173377072046) - StatusBar: Reland iOS 27 StatusBar fix with tvOS guards (edf2b86e63 by @cipolleschi)
- SwiftPM:
spm addandspm updatewrite React Native's build settings toReactNativeSPM/ReactNativeSPM.xcconfigand its build scripts toReactNativeSPM/Scripts/, so a version bump no longer changesproject.pbxproj. A configuration that uses its own xcconfig must now#includethe generated file, and a target setting that hides React Native's value must add$(inherited).spmprints the exact fix in both cases. (6a2c7c2734 by @chrfalch) - Text: Build a paragraph's NSAttributedString without copying each text fragment or re-attributing its runs (7fc58f2192 by @hryhoriiK97)
- Text: Pass
AttributedStringby const reference inRCTTextLayoutManagerand add a move constructor forAttributedStringBox. (0ffaff80a3 by @dheerajkoppu) - TurboModules: Look up each TurboModule method's signature once instead of on every call (1d1fade902 by @hryhoriiK97)
- TurboModules: Strings passed from JS to native modules convert faster (ed15270c6c by @hryhoriiK97)
Deprecated
Android specific
- UIManager: Deprecate the legacy View-based surface lifecycle methods in
UIManager. (d4d0813969 by @javache)
iOS specific
- Legacy Architecture: Deprecate
RCTBridge.bundleURL,setRCTTurboModuleRegistry:, andbridgeModuleDecorator(1eb24d4b31 by @christophpurrer) - Legacy Architecture: Deprecate never-posted invalidation notifications still observed by Skia and Reanimated (490c4023bb by @christophpurrer)
- Legacy Architecture: Deprecate unused old-architecture
RCTBridgeAPIs ahead of removal (fcb13c5171 by @christophpurrer) - Renderer: Mark
-[RCTSurfacePresenter addObserver:]as deprecated for the compiler. UseRCTMountingTransactionObserverCoordinatorinstead. (9979e142a7 by @tjzel)
Removed
- C++: Removed unused
InspectorData.h(0a9bf3292e by @j-piasecki) - ScrollView: Remove unstable_getScrollParent. Implement scroll-parent discovery in userland instead. (3818b20eed by @rubennorte)
- Text: Remove the unused
maximumFontSizeparagraph attribute (7e02fc7e68 by @conner1reimers) - TextInput: Remove deprecated
TextInputblurOnSubmitprop (usesubmitBehaviorinstead) (ab373989c3 by @zoontek) - TurboModules: Remove the sample TurboModule from React Native's public API (4ffc4a6523 by @Abbondanzo)
- View: Remove the deprecated
hasTVPreferredFocusprop (6622ee55a1 by @Abbondanzo)
Android specific
- JavaScript API: Remove experimental split-bundle loading APIs (2771618619 by @javache)
- Legacy Architecture: Remove legacy TimingModule.kt (e15b667cd3 by @christophpurrer)
iOS specific
- JavaScript API: Remove deprecated RCTProfile systrace API (d3c2bb8ed4 by @christophpurrer)
- Legacy Architecture: Remove dead
RCTBridgeflag functions,batchDidComplete, and unused callback typedef (01d55273bc by @christophpurrer) - Legacy Architecture: Remove deprecated
RCTBridgeinitializers (bfa64ad01a by @christophpurrer) - Legacy Architecture: Remove deprecated
RCTBridgeDelegatesourceURLForBridge:(34795cbc36 by @christophpurrer) - Legacy Architecture: Remove deprecated
RCTFabricSurfacebridge initializer andRCTBridgesurface-presenter category (d4fee6d983 by @christophpurrer) - Legacy Architecture: Remove deprecated
RCTModuleDataclass and its call-invoker provider protocol (f76f251b62 by @christophpurrer) - Legacy Architecture: Remove legacy RCTTimingModule (0e01003f53 by @christophpurrer)
- Legacy Architecture: Remove unused
RCTBridge (Inspector)category (e57dcb3cc4 by @christophpurrer) - Legacy Architecture: Remove unused
RCTCxxBridgeDelegateprotocol (e362239300 by @christophpurrer) - Legacy Architecture: Remove unused per-module
RCTBridgeaccessors (0c68446f08 by @christophpurrer) - Performance: Remove the non-functional Views counter from the PerfMonitor HUD (200245eb09 by @christophpurrer)
- Runtime: Remove
RCTInstanceSetRuntimeDiagnosticFlagsandRCTInstanceRuntimeDiagnosticFlags(935f73302b by @javache)
Fixed
- Animated:
Easing.bezier: fix wrong values on steep curves such as(1, 0, 0, 1); input outside [0, 1] now saturates (2ae713e898 by @greweb) - Animated: An Animated interpolation of a string that contains an
rgb(),hsl()orhwb()color, such as a box shadow, interpolates the whole string instead of collapsing to the color (1adb75ea3b by @YevheniiKotyrlo) - Animated: Fix native-driven animations stepping backward when a native event update runs between frames with the shared animated backend (dee5bb5762 by @markv)
- Animated: Non-layout props animated on the shared animation backend no longer freeze while the same view or another view on the surface animates a layout prop (14ace9beaa by @bartlomiejbloniarz)
- Babel:
experimentalImportSupportin a Metro config now takes effect whenreact-native/babel-presetis named in a project Babel config (a24bd322d7 by @shubh73) - Babel: Fix Platform.select inlining producing invalid output for object methods when discarding impure initializers is skipped (88748a7973 by @vzaidman)
- Babel: Preserve side effects from discarded Platform.select property initializers in the Babel preset. (f3fb55031d by @mfkrause)
- Blob: Fix Blob.slice end handling when start is omitted (7619e9c58b by @Shubham-Padkonde)
- C++: Fix native dispatcher callback ownership and shutdown synchronization (03355ef9a1 by @Abbondanzo)
- C++: Restore public
parseUnprocessedTransformOriginStringinreact/renderer/components/view/conversions.h(7b11d48538 by @cipolleschi) - Codegen: Codegen now also reads
react-native.config.cjs, so libraries declared in it are no longer skipped in ESM projects (583c8f3afb by @CAMOBAP) - Codegen: Reduce generated native component bundle overhead (f156ef2b02 by @rubennorte)
- Dev Menu: Toggling Touchables in the Element Inspector no longer remounts the app and resets its state (d194d8b5c6 by @LESANF)
- Dev Server: Skip HMR client setup when the JS bundle was not loaded from Metro (f109c0af86 by @javache)
- DOM API: Preserve an explicit null
thisArgin NodeList.forEach callbacks. (822cfc4e40 by @OskarEichler) - DOM API: Preserve NaN and signed zero in DOMRect values. (99aefad9fb by @OskarEichler)
- ESLint: Align the
react-native/no-deep-importsauto-fix map with the package's public API (29900fca26 by @rubennorte) - ESLint: Fixed the issue when using the flat config with ESLint v9. (099bcb444e by @tcK1)
- ESLint: Stop
no-deep-importsfrom reportingreact-native/package.json, which is a supported entry point (46d00410e8 by @ahmdshrif) - Events: Handle native component event names that shadow Object prototype properties. (665beff9df by @OskarEichler)
- Hermes: Hermes profiles no longer lower generators,
for...of, optional chaining, nullish coalescing or optional catch binding in dev, matching release (ba0b3dbd6c by @robhogan) - Hermes: Retain Unicode regex semantics while lowering property escapes for Hermes builds (6e22123d6f by @andrewdacenko)
- Image: Fix explicit
resizeMode="stretch"being ignored on newly created AndroidImages (e560782758 by @bartlomiejbloniarz) - IntersectionObserver: IntersectionObserver rootMargin now affects intersection against a clipping root (5646c31dff by @edkimmel)
- Jest: Fix
react-native/jest-presetfailing to resolvereact-nativeand to transform preset sources under pnpm and Yarn pnpm-mode installs (b71d466561 by @amroaltah) - LayoutAnimation: Fix setLayoutAnimationEnabled not applying the value parameter (550aadd200 by @Nedunchezhiyan-M)
- Metro: Scope Metro
INTERNAL_CALLSITES_REGEXto thereact-nativepackage to avoid collapsing unrelated frames (03737541b1 by @vzaidman) - Networking: WebSocket no longer dispatches
messageevents afterclose()has been called (a6c0c470ad by @lazerg) - New Architecture: Fix
minimumFontScalewithadjustsFontSizeToFitin the New Architecture (b7357896e2 by @conner1reimers) - Performance: Reject missing and non-function PerformanceObserver callbacks during construction. (c2da17514e by @OskarEichler)
- Performance: Validate invalid PerformanceObserver observe option combinations before native registration (e0224fd40b by @ya-nsh)
- React Native DevTools: Fix "Unable to fetch script source" when debugging code evaluated in the DevTools console (e8c06bb08b by @vzaidman)
- React Native DevTools: Fix launch failure when Chromium uses the SUID sandbox (Linux) (954a7c2a97 by @huntie)
- React Native DevTools: Fix React Native DevTools staying open but unresponsive after the debugged React Native instance is destroyed (eec38e3c82 by @vzaidman)
- React Native DevTools: Fix the inspector proxy leaking a pages polling timer, and sending duplicate
getPagesrequests, each time a device reconnects with the same device ID (268b3029ef by @vzaidman) - Renderer: Fix the differ creating a mounted view again, or deleting a moved view, when a child with a negative
zIndexmoves in a nested flatten/unflatten (361bc240e4 by @pawicao) - Runtime: Fix deadlock in
RuntimeSchedulerwhen a task destructor schedules work while the queues are cleared after an error (3181abc5c9 by @hcbylmz) - Runtime: Install globalEvalWithSourceUrl on bridgeless ReactInstance so debug bundle loaders can evaluate split bundles via JSI instead of eval() (2a2ccaa522 by @abzokhattab)
- Styles:
hsl()colors with an alpha, and alphas given as a percentage such asrgb(0 128 0 / 50%), are no longer rejected (3aee67bcb6 by @lazerg) - Styles: Accept unitless zero stops and reject invalid layers in backgroundImage strings (54905a2006 by @lazerg)
- Styles: Default omitted filter amounts to 1 and reject px in processFilter (888784ce89 by @lazerg)
- Styles: Keep percentages in
translateX/translateYstring transforms and parse numbers without a leading zero (bd9348a32a by @camchis) - Text:
adjustsFontSizeToFittext grows back when its container grows (db5c52de8b by @tomekzaw) - Text: Avoid state updates and re-layout of unchanged
Textsiblings when a sibling changes (e7766ab2fa by @tomekzaw) - Text: Text inside Modal now updates after a live font scale change (e8e63cf79c by @simongt)
- Touch Handling:
Pressabilitynow invokes the currentonHoverIn/onHoverOutrather than the ones captured when its event handlers were created (8a4cf38576 by @rozele) - Touch Handling: Fix lost taps after a touched view unmounts when EventTarget event dispatching is enabled (eb90a8d251 by @rubennorte)
- Touch Handling: Fix the responder not being released when a touch ends after its view unmounted (f754dbd20a by @lazerg)
- TypeScript: Fix the legacy TypeScript
ImageStyletype rejecting validViewStyleprops such asfilter,boxShadowandmixBlendMode(278e7f93c8 by @ramya-2196) - View: Reset a removed
shadowRadius,shadowOffset,editableorpersistentScrollbarprop to its default (86695d8eb6 by @YevheniiKotyrlo) - VirtualizedList: Avoid delaying urgent
VirtualizedListrendering after queued no-op updates (6dcc04bf21 by @javache) - VirtualizedList: Clear the pending batch-update timer id in componentWillUnmount so a list hidden and revived by Suspense (react-freeze / freezeOnBlur) resumes rendering new cells (381d74d788 by @twelvearrays)
- VirtualizedList: Do not report viewable items for a cross-orientation nested list while its parent row is off screen (4fec40e69d by @amroaltah)
- VirtualizedList: Fix VirtualizedSectionList._setUpdateHighlightFor deleting from wrong target (memory leak) (0941e95391 by @bl4987637-code)
- VirtualView: Fix
VirtualViewinitial mode wheninitialHiddenis not sent on creation (cf583810a1 by @bartlomiejbloniarz) - Web APIs: Sort URLSearchParams names in UTF-16 code-unit order instead of locale order. (778fef746d by @Marve10s)
- Yoga: Avoid exponential min-content measurement during automatic minimum sizing of nested flex containers (6e2edef96e by @adityasharat)
- Yoga: Fix
Style::operator==ignoringboxSizing(e0d0f011ee by Open Source Bot) - Yoga: Fix a flex line collapsing to its minimum sizes when the first item clamps to its min or max main size, behind the new
FlexFirstPassUsesRunningTotalserrata (set by default) (ca7acf62c5 by @Dagur) - Yoga: Fix stale layout when a child switches to
display: contentsafter being inserted (19a6722f91 by @kwy404)
Android specific
- Accessibility: A
Viewwitharia-liveoraccessibilityLiveRegionis no longer flattened, so the live region is announced (5e13324903 by @faciledictu) - Accessibility: Fix accessibilityState, a removed accessibilityRole, role or accessibilityValue, and role="none" with Props 2.0 (4c103143c2 by @bartlomiejbloniarz)
- Accessibility: Preserve complete text for accessibility when prepared text layouts are ellipsized (6afe9f134a by @javache)
- Accessibility: Prevent invalid
accessibilityRolevalues from crashing the app. (9a20e06f51 by @Abbondanzo) - Accessibility: Recycled views no longer keep the accessibility state of their previous props (6f73542a45 by @YevheniiKotyrlo)
- Accessibility: Removing
accessibilityValueno longer leaves its text in the content description or drops theaccessibilityLabel(25b05acd73 by @lazerg) - Build: Fix Activity Result launcher compilation across AndroidX source variants (d7ff82ebe4 by @Abbondanzo)
- Dev Menu: Pressing the menu key while the dev menu is open now closes it (0e9d314184 by @alanjhughes)
- Dev Server: Warn when dev support is enabled but packager server access is disabled (d365e6499a by @javache)
- Gradients: Stop logging "Unsupported type for radius property: Null" for gradient color stops without an explicit position (585b28c5f0 by @tshmieldev)
- Gradle: Invalidate the Android autolinking cache when
pnpm-lock.yamlchanges (cd2de187e8 by @JoelTowell) - Gradle: Re-copy the prefab headers when a header under ReactCommon changes (bf4fac3587 by @YevheniiKotyrlo)
- Hermes: Fix building Hermes from source on Windows failing on the JSI_DIR path (7b21e74587 by @YevheniiKotyrlo)
- Hermes: Fix Hermes source builds after the Hermes repository move (f6a5042c84 by @javache)
- i18n: Prevent a crash when resolving RTL layout direction on Android 6 (eaa9d7f3c8 by Shreesh Ayachit)
- Image: Avoid blocking the UI thread while selecting multi-source images (cf1fc01ce9 by @Abbondanzo)
- Image: Fix Image sources, headers and a removed tintColor with Props 2.0 (5e2f85a793 by @bartlomiejbloniarz)
- MapBuffer: Make the
React/View.h,React/Debug.handReact/MapBuffer.humbrella headers resolvable in CMake builds (b936db95db by @j-piasecki) - Modal: Fix Android navigation bar transparency for Modal (b4d57abe12 by @jasozh)
- Modal: Fix crash when dismissing a Modal whose Activity has already been destroyed (7439937ef9 by generatedunixname1608173377072046)
- Networking: Fix WebSocket cookie lookup dropping path-scoped cookies (0eb9b300b6 by @lazerg)
- PlatformColor: Fix
PlatformColortheme attributes that resolve to a ColorStateList, such as?attr/textColorPrimary(4d536fa8cd by @lazerg) - ReactHost: Fix
getCurrentActivity()staying null after the Activity is destroyed during a reload (ea5882bfb8 by @lazerg) - Renderer: Fix batches applied out of order when a surface's root view attaches (879df0514e by @bartlomiejbloniarz)
- Renderer: Fix preallocated views leaking when
enableMountingCoordinatorPullModelAndroidis enabled (7624c9cacb by @bartlomiejbloniarz) - Renderer: Mount the commits of starting and stopping surfaces, and fix a freeze when the legacy
stopSurface(int)runs on the UI thread (1423ef001d by @bartlomiejbloniarz) - Runtime: Fix crash in
UiThreadUtilwhen the main handler is first accessed from multiple threads at once (65b3e647f5 by @locnp-active) - ScrollView: Finish interrupted ScrollView drags when receiving ACTION_CANCEL. (0f17f27010 by @ddx533534)
- ScrollView: Fix crash in ScrollView accessibility delegate when
accessibilityCollectionis set and a child (e.g. a list header or footer) has noaccessibilityCollectionItem(2915fe02ca by @iray-tno) - ScrollView: Fix crash when setting a percentage borderRadius on Text, TextInput, and ScrollView (5fc6ccb165 by @sbaiahmed1)
- ScrollView: Fix mouse wheel and joystick scrolling direction in inverted
FlatList(30e2d93b40 by William Khoe) - ScrollView: Fix Text letterSpacing and ScrollView scrollsChildToFocus, snapToAlignment, decelerationRate, nestedScrollEnabled and sendMomentumEvents with Props 2.0 (973b31ba57 by @bartlomiejbloniarz)
- Styles: Preserve explicitly transparent colors during Props 2.0 reconciliation. (022458fbb6 by @ngocdevv)
- Switch: Fix
Switchlosing its outline,boxShadowandthumbColorripple color whenbackgroundColoris set (19d6d171f7 by @shubh73) - Text:
aria-liveonTextnow setsaccessibilityLiveRegion(9de6471df2 by @faciledictu) - Text: Fix
ellipsizeMode="clip"being ignored on newly createdText(8cd9b763e3 by @bartlomiejbloniarz) - Text: Fix
fontVariantbeing ignored onTextthat doesn't also setfontFamily,fontWeightorfontStyle(ababa4de06 by Bora Shim) - Text: Fix double text decorations rendering as a solid band when prepared text layout is enabled (6f6fa0ad9f by @Abbondanzo)
- Text: Fix multi-paragraph RTL
Textwith blank or LTR lines being drawn off-screen on Android 15+ (7b6516eb11 by @fkgozali) - Text: Fix single-line LTR
Textbeing ellipsized inside its measured width on Android 15+ (12e066bfbb by generatedunixname1608173377072046) - Text: Prevent RTL line-start glyph ink from clipping on Android 15 and later (57f408012d by @ngocdevv)
- Text: Respect maxFontSizeMultiplier for lineHeight and letterSpacing in Text (c93ff90778 by @sivefunc)
- Text: The last line no longer disappears on Android 15+ when a font's glyphs overhang their advance (ReactTextView now breaks lines on advances, matching measurement) (dcdb52bc80 by @idoyana)
- TextInput: Fix
TextInputoutline collapsing when its padding is below the theme default (da42db9c90 by @mehulg-meta) - TextInput: Fix TextInput crash when an Enter key-up triggers native focus search (04ccd832ab by @christophpurrer)
- TextInput: Prevent TextInput from preventing scroll gestures (99fca5fcaf by @jasozh)
- TextInput: Prevent TextInputs from interfering with nested scroll gestures (7974af7d9f by @jasozh)
- TextInput: Restore the text input class for URL keyboard types. (0ca5cec66b by @dajiaohuang)
- TextInput: Restore the text input class for visible-password keyboard types (f99303c9f5 by @YevheniiKotyrlo)
- Touch Handling: Fix Pressable and TouchableNativeFeedback losing their background color and ripple when using a borderless ripple (ca3e76a7cd by @jasozh)
- TypeScript: Export the
SafeAreaInsetstype (11f37bd6e7 by @janicduplessis) - UIManager: Avoid unnecessary getConstantsForViewManager calls during UIManager initialization. (da7c29f6d7 by @fairysword)
- View: A
NaNor infiniteelevation, or deprecatedscaleXorscaleY, no longer crashes the app on Android 9 and later (d8789c6212 by @YevheniiKotyrlo) - View: Avoid warning when clearing percentage border radii (5e6b1081bc by @Abbondanzo)
- View: Clear the border path effect when borderStyle is removed on Android (01145c9a7f by @lazerg)
- View: Correct safe-area inset measurements for scaled views and views clipped by ancestors. (9641acdf30 by @Abbondanzo)
- View: Drawing a view group no longer reads every sibling's mix-blend-mode for each child it draws (089a101544 by @YevheniiKotyrlo)
- View: Fix
getOutlineWidthreturning the outline offset (54b5f22c33 by @Abbondanzo) - View: Fix bottom-start and bottom-end border radii resolving to the wrong corners in RTL when left/right style swapping is disabled. (202d93931c by @ddx533534)
- View: Fix View background, perspective, border width, shadow and gradient props with Props 2.0 (0f03dd9a4c by @bartlomiejbloniarz)
- View: Preserve safe-area updates for cancelling transforms and match iOS notification precision. (95941fd368 by @Abbondanzo)
- ViewManagers: Fix
shadowColor,outlineOffsetandoutlineWidthnot resetting to their defaults on components with a codegen view manager delegate (dfed2d925d by @shubh73) - ViewManagers: Make the view manager prop setter caches thread-safe (3b4abb3c7a by @brownrice777)
- VirtualView: Fix VirtualView clipping on-screen content when its parent offset was not computed at attach time (f9340f07dc by generatedunixname1608173377072046)
- VirtualView: Fix visible
VirtualViewchildren being clipped when an ancestor is positioned before attachment (8c2ce771d8 by @cortinico)
iOS specific
- Accessibility:
role="slider"now gets the adjustable accessibility trait, likeaccessibilityRole="adjustable"(05f99a7d25 by @jeltehomminga) - Accessibility: Fix data race on accessibility content size multipliers in
RCTAccessibilityManager(ea2ca1b921 by @christophpurrer) - Accessibility: Prevent an accessibility module startup crash on early iOS 26.1 betas (f9855add37 by @javache)
- Accessibility: VoiceOver announces "collapsed" for
aria-expanded={false}on the new architecture (1db1d893b2 by @lazerg) - CocoaPods:
spm_dependencyembeds the dynamic frameworks of Swift packages in the app, and takesembed_frameworksfor frameworks named differently from their product (d7878263ca by @mfazekas) - CocoaPods: Apply React Native's minimum iOS deployment target to CocoaPods resource bundles. (d45fc2d289 by @Marve10s)
- CocoaPods: Fix "module map file not found" for
spm_dependencypods whose module name differs from the pod name (87c3e8f5dc by @mfazekas) - CocoaPods: Fix
'folly/coro/Coroutine.h' file not foundin libraries that set their own folly compiler flags (52efed6437 by @cipolleschi) - CocoaPods: Link
platform/iosheaders atreact/utils/β¦in non-frameworks builds instead of a duplicatedreact/utils/react/utils/β¦, restoring#include <react/utils/β¦>and<React/Utils.h>(024d5dafd5 by @zhongwuzw) - Codegen: Skip third-party components whose class is not linked instead of crashing at launch (acc0cca710 by @YevheniiKotyrlo)
- Dev Menu: Fix Cmd+D and other modifier key commands failing to open the Dev Menu when a view is the first responder (d36f77d7e1 by @vzaidman)
- Dev Server: Allow Metro reload after an initial bundle-load failure. (df86c5e2a4 by @janicduplessis)
- Dev Server: Clear the development loading banner when its React Native host is invalidated, including pending messages that could appear after teardown. (62002039c0 by @fairysword)
- Dev Server: Keep a
RCT_jsLocationpassed as a launch argument when the packager answers/statuslate, instead of switching to a guessed host (1af1186b78 by @YevheniiKotyrlo) - Hermes: Fix Hermes Debug link failures after installing another pod following a Release build. (8bfa9dd2ae by @fairysword)
- Image: Emit
Image'sonLoadStartbeforeonLoad/onLoadEndwhen the image request has already completed (5d84f62df1 by @SatyamBansal) - Image: Reuse prefetched images for subsequent sized image requests (0e87de0fd9 by @CHANDRAMOHANnegi)
- Keyboard: Report zero-height keyboard show notifications with no focused text field as
keyboardWillHide/keyboardDidHide(c99947ed4b by @ybcd00) - Modal: Fix Modal staying onscreen when dismissed while presenting a child view controller (f20f857241 by @lazerg)
- Network Inspection: Fix the
cancelledparameter type ofRCTInspectorNetworkReporter'sreportRequestFailed:cancelled:to match its declaration (3e5a624d2d by @Saadnajmi) - Networking: Fix missing nullability annotations in networking headers. (c7429b0e97 by @mrousavy)
- PushNotificationIOS: Fix remaining main-thread watchdog hang in PushNotificationIOS.setApplicationIconBadgeNumber (79adf3498f by @fkgozali)
- Renderer: Process at most one synchronous event beat per Core Animation commit, so a mount performed during the display phase cannot re-enter it without bound (c4b3894955 by @Abbondanzo)
- Runtime: Fix deadlock in
RCTInstanceinvalidation when a surface observer calls into JS (88d296713c by @zeyap) - ScrollView: Fix recycled RTL horizontal ScrollView starting at the end instead of the start (51db0e4b3a by @aljadan)
- ScrollView: Hide the misplaced iOS 26 scroll edge effects on inverted ScrollViews (3b8f1f8225 by Calvin Liu)
- SwiftPM: Scaffolded
Package.swiftwritesresources:beforepublicHeadersPath:, so libraries with podspec resources and public headers resolve (d576b40bff by @chrfalch) - SwiftPM: SwiftPM autolinking: don't warn about spm fields mirrored in swiftpmConfig (138c1a9a6e by @chrfalch)
- Switch: Fix crash in
SwitchwhenonChangefires after the view has been recycled (7612536be3 by anvarbek) - Switch: Report a disabled
Switchas disabled to VoiceOver and XCUITest (7bba6225af by @arun279) - Text: Fix
Textcontaining only "I" being measured zero wide after an emptyTextwith the same style was measured (4b0a6ebc67 by @parthematics) - Text: Fix words jumping between lines while
LayoutAnimationresizes aText(b97bd12bc4 by @tomekzaw) - Text: Natural text alignment follows the layout direction for LTR text, not the process language (a340eec183 by @qutrek)
- Text: Render selectable text when prepared text layout is enabled (099915674f by @abskmeta)
- Text: Text no longer redraws when only its position changes, such as when content above it changes height (631fd89f6a by @hryhoriiK97)
- Text: Text no longer renders clipped when mounted from a synchronous event during layout (7bee8abb69 by @janicduplessis)
- TextInput: Avoid a synchronous main-thread pasteboard query (and possible app hang) when a focused TextInput's keyboard becomes active on app foreground (79c6c23061 by generatedunixname1608173377072046)
- TextInput: Fix
TextInputdataDetectorTypes="all"having no effect on the New Architecture (0bd2cb1b42 by @Cedric921) - TextInput: Fix
TextInputplaceholder drawn below centre after its view is reused from aTextInputwithlineHeight(8f5a1c0a8f by @jkasprzyk17) - TextInput: Fix caret and text of a single-line
TextInputdrawn above center while focused, after its view was reused from aTextInputwith a larger font (e10d6ba3a6 by @jkasprzyk17) - TextInput: Preserve TextInput returnKeyType when switching between single-line and multiline backing views. (e0159c1f03 by @jamfromouterspace)
- TextInput: Preserve transformed
TextInputedits without synchronously rewriting text inside UIKit delegate callbacks (6f67e185ad by @javache) - TextInput: Reveal multi-line text inputs when using KeyboardAvoidingView with a ScrollView (7ce27d0d07 by @jasozh)
- TurboModules: Stop apps from requesting the sample TurboModule that only rn-tester provides (8f5355575a by @alanjhughes)
- TurboModules: Strings returned from native modules to JS convert faster, are no longer truncated at a
\0character, and are no longer replaced with an empty string when they contain a lone surrogate (4fac9c8f35 by @hryhoriiK97) - View:
aria-modalonViewnow setsaccessibilityViewIsModal(e3437cb8f0 by @faciledictu) - View: Apply
borderCurvechanges that are not accompanied by another border prop change (c4356db573 by @tshmieldev) - View: Opacity changes no longer rebuild a View's borders, shadows and background layers, which made opacity animations over many styled Views drop frames (51d3e67af8 by @hryhoriiK97)
- View: Prevent unsuccessful tvOS focus requests from emitting stale focus events (3e897cfdf8 by @sbuggay)
- View: RemoveClippedSubviews is kept on recycled views (ff78e95e59 by @mozzius)
- View: Render a view untransformed when its transform is not finite, instead of hiding it and the siblings drawn before it (a613baf9d1 by @YevheniiKotyrlo)
- View: Views no longer rebuild their layer styling (borders, shadows, background and mask layers) when only their position changes (c9d84b06d8 by @hryhoriiK97)
Hermes V1 dSYMS: - Debug - Release
ReactNativeDependencies dSYMs: - Debug - Release
ReactNative Core dSYMs: - Debug - Release
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.