Breaking
- Bump minimum Node.js version to v22.11 (8f10b339d4 by @robhogan)
- Make the TurboModuleBinding constructor private. (53944eaa6c by @RSNara)
- Remove TurboCxxModule (2d6a3236ed by @christophpurrer)
- Removed microtask API from JSTimerManager (60471cb268 by @javache)
- Remove CxxModule 2/2 C++ part (a945cd99fa by @christophpurrer)
- Remove CxxModule 1/2 Java/Kotlin part (75a11703a0 by @christophpurrer)
- Remove CxxModule support from CatalystInstance (c726c27537 by @christophpurrer)
- Remove RCTCxxModule (2c8a376c47 by @christophpurrer)
Android specific
- Remove unstable_shouldEnableLegacyModuleInterop() (e4eb64d6cc by @RSNara)
- Delete deprecated NativeKind class from React Native Android (284d841b3d by @mdvacca)
- Remove unnecessary classes inside
com.facebook.react.uimanager.layoutanimationused in legacy architecture (0b09e6f696 by @cortinico) - Remove unnecessary
LazyReactPackageused in legacy architecture (2b09ae8992 by @cortinico) - Remove unused internal
NotThreadSafeBridgeIdleDebugListener(0ee4a2d01a by @cortinico) - Remove unused internal
NotThreadSafeViewHierarchyUpdateDebugListener(991dff2322 by @cortinico)
iOS specific
- Remove legacy arch by default (c7f433a413 by @cipolleschi)
- Make
RCTPackagerConnectioninstance of theRCTDevSettingsand use bundle config. (cf92cade49 by @coado)
Added
- A new test for the AnimationBackend (8bc6214284 by Bartlomiej Bloniarz)
- Added support for
maxWidth,maxHeight,minWidth, andminHeightprops to the AnimationBackend. (3650ae3d08 by @coado) - Added support for flex props to the AnimationBackend. (33b2d6d367 by @coado)
- Support parsing
Readonlyfor the new Flow utility types (a6b76c0c51 by @marcoww6) - Support parsing
ReadonlyArrayfor the new Flow utility types (3bf7a09ecb by @marcoww6) - Added support for outline props to the AnimationBackend. (4de9242e80 by @coado)
- Added support for filter props to Animation Backend (e744329c3d by @coado)
- Added support for border width props to the animation backend. (782dc0e038 by @coado)
- Add ResourceReceivedData trace events for network data chunks in Performance timeline (c400b88ebf by @emily8rown)
- Added support for positional
left,top,right,bottomprops to the animation backend. (9931aeb830 by @coado) - Added support for margin and padding props to AnimationBackend. (cd4744cb98 by @coado)
- Added missing
experimental_backgroundSize,experimental_backgroundPosition,experimental_backgroundRepeatto manually written types. (37bf285836 by @tjzel) - Added support for
shadowColor,shadowOffset,shadowOpacity, andshadowRadiusprops to the animation backend. (c31a5a8896 by @coado) - Export
usePressabilityhook andPressabilityConfig/PressabilityEventHandlerstypes from the public API (d0e9b9c078 by @natew) - Added missing standard properties to
URL(hash, host, pathname, etc.) and methods toURLSearchParams(get, set, delete, etc.). (f97b9a521d by Manish Balayan) - Use the commit hook to reconcile the UI updates with react (d04e1528da by Bartlomiej Bloniarz)
- Add
connectAnimatedNodeToShadowNodeFamilymethod toNativeAnimatedModuleandNativeAnimatedTurboModule(d7ef651c5c by Bartlomiej Bloniarz) - Added support for transform, border radius, and background color props to Animation Backend. (e167faa449 by @coado)
- Bundle support for heic and heif files (f472ef980a by @anthonybajoua)
- Thread down rootTag/surfaceId to AnimatedInterpolation node (b46427a673 by @zeyap)
- DevServer fast refresh banners now have a dismiss button but still tap anywhere to dismiss. (fcd63032d0 by @emily8rown)
- Jest tests for PlatformColor support (cbbba7b9a5 by @zeyap)
- (js part) Support PlatformColor type of toValue and interpolation outputRange (8b6b47bd57 by @zeyap)
- Expose methods for registering packager connection handlers. (d9842fdbe3 by @coado)
- Add support for Flat Config (eslint v9) (18592451de by @pipopotamasu)
- UIManagerNativeAnimatedDelegateBackendImpl for running animation frame updates on android (219c2b84c2 by Bartlomiej Bloniarz)
Android specific
- Add
{add|remove}SchemeChangeListener()function toOverrideColorSchemeinterface to support dynamic appearance updates via override (80e384a801 by @alanleedev) - Include activeHitPath in payload when it's PointerUp/Down (1d6d8fc058 by @zeyap)
- Add onKeyDown/onKeyUp support to Android (79b09ce9c4 by @Abbondanzo)
- Add c++ animated support for PlatformColor type of toValue and interpolation outputRange (7941a621f9 by @zeyap)
iOS specific
- Allow invalidateDisplayLink on RCTAnimatedModuleProvider (7c603ee261 by @zeyap)
- Add support for UIAccessibilityPriority in announcements (4851fb2fc3 by @maxencehenneron)
- Added documentation for the prebuild scripts for precompiling React Native Core and React Native Dependencies. (7a66582f60 by @chrfalch)
- Add new
RCTBundleConfigurationfor modifying bundle URL onRCTReactNativeFactory. (6fa75cce48 by @coado)
Changed
- Sync React 19.2.3 into React Native (e6923dd1e1 by @cipolleschi)
- AnimatedPropsRegistry now also receive the updates from the synchronous updates that bypass the ShadowTree, so that these updates are not overwritten by React commits (c52d30e79b by Bartlomiej Bloniarz)
- C++ animated now passes the calculated
folly::dynamicdirectly to the backend, without repacking it intoAnimatedProp(84e408cf89 by Bartlomiej Bloniarz) - Extracted
clonePropfromAnimationBackend.cpptoAnimatedProps.h(33f783ae23 by Bartlomiej Bloniarz) - CloneMultiple now invokes the callback for every cloned node, instead of doing that only for the nodes in
familiesToUpdate(976c849057 by Bartlomiej Bloniarz) - Text components with onPress or onLongPress now automatically get accessibilityRole='link' for proper accessibility support (4c732b4ccf by @fabriziocucci)
- Split the families by
SurfaceIdinonAnimationFrame(5c078bd490 by Bartlomiej Bloniarz) - Move the animation backend callback scheduling, behind the
isRenderCallbackStartedcheck. (8b95fce84e by Bartlomiej Bloniarz) - JSBigString mutable data accessor has been renamed to mutableData (3012aac2ad by @javache)
Android specific
VirtualViewnot clips subviews even if its parentScrollViewdoes not haveremoveClippedSubviewsenabled. (b0e754bc7f by @yungsters)- Set isClickable=true by default or based on the pointerEvents value for all views to improve accessibility tool detection while maintaining the configured focusable state (427995858d by @fabriziocucci)
- Enabled shouldUseLinkRoleForPressableText and shouldSetEnabledBasedOnAccessibilityState feature flags by default to improve accessibility behavior. (38e3075310 by @fabriziocucci)
iOS specific
- Use prebuild by default (df9d31b243 by @cipolleschi)
- Add
RCTBundleConfigurationproperty onRCTReactNativeFactoryand pass it down toRCTHost. (5465a511f4 by @coado) - Allow linking local SPM packages in CocoaPods (d31fc32882 by @sbuggay)
Deprecated
- Deprecate TurboModuleProviderFunctionType (7a6a6ae2e6 by @RSNara)
- Deprecate
XHRInterceptorandWebSocketInterceptorAPIs. Developer tools should use the CDPNetworkdomain instead. (41380f39ab by @huntie)
Removed
- Remove Babel preset transforms for already-unsupported non-Hermes engines (07bd24ed0d by @robhogan)
- Legacy Arch: Remove Perf and Network tabs from in-app Element Inspector. See RFC0777 (b7ca04844d by @huntie)
Android specific
- Remove unnecessary
OnBatchCompleteListenerused in Legacy Architecture (1bdd2a0aba by @cortinico) - Remove unnecessary and unused BridgeDevSupportManager (13da82a337 by @cortinico)
Fixed
- Added handling of missing props to
AnimatedPropsRegistry(31a9eeeba4 by @j-piasecki) - Handle
Object.create(null)correctly in AnimatedObject.js'isPlainObjectfunction (4e0b9233c0 by @maman) - Hash generation includes
declare consttypes in API snapshot (c36665f7c6 by @emily8rown) - Nullcheck result of getAnimatedNode in NativeAnimatedNodesManager::updateNodes (3e9083b423 by @zeyap)
- React Native DevTools: Fix a bug where we would incorrectly flag apps using additonal Hermes runtimes (e.g. Reanimated) as being multi-host (c800503214 by @huntie)
- Fixed
hermes-compilernot being resolved correctly when your repo is set up as a monorepo using pnpm. (e23e9add80 by @tido64) - Ensure codegen CLI supports unspecified
--outputPathargument and respectscodegenConfig.outputDirconfigurations (716303362a by @kitten) - Fixed an
ENOENTexception when a dependency does not exportpackage.json, and your repo is set up as a monorepo using pnpm (20550c45d2 by @tido64) - Fixed URLSearchParams duplicate issue. (1e06c92404 by @riteshshukla04)
- Check nodesManager_ in AnimatedModule::executeOperation (199b8982de by @zeyap)
colorandblurRadiusof BoxShadowValue mistakenly swapped (8fa8fb7a52 by @Phecda)
Android specific
- Fix BackHandler callbacks not working after app resume on API 36+ (fef5b84996 by @anferrat)
- Fix
ReactModalHostViewhover interception to callsuper.onInterceptHoverEventinstead ofsuper.onHoverEvent. (0fe23d7066 by @MegaManSec) - DevSupport - fix small bugs with Host change dialog (c4c587e5c3 by @cortinico)
- Fix jni aborts when turbomodule constructors throw (d67fc70497 by @RSNara)
- Make ReactDelegate.onBackPressed() return correct status (17b3c1c698 by @RSNara)
- RNGP using node invocation non-compatible with Gradle Compilation Cache (dd1f83e616 by @tjzel)
- RNGP using node invocation non-compatible with Gradle Compilation Cache (dc73ec438a by @tjzel)
- Fix text clipping on Android 15+ due to useBoundsForWidth change (8347cc4b50 by @chrfalch)
- A11y: Mark virtual views for links as [
clickable](https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setClickable(boolean%29) (a9a0268953 by Tom Scallon) - Fixed
adjustsFontSizeToFitscaling the font size too much down (253fdf4753 by @j-piasecki) - Use FQCN to avoid collisions (5bb3a6d68d by @riteshshukla04)
- Allow nullable
codeinPromise.rejectto prevent NPEs from Java modules (47c45688c7 by @ramanverse) - A11y: prevent redundant double screen reader focus steps on
<Text role="link">(06786a8afa by @mdjastrzebski) - Emit scroll event once on overscrolled (f60789abac by @zeyap)
- Fix isClickable state for TextViews after recycling (cf3af8bf4a by @fabriziocucci)
- Fix isClickable state for TextViews based on onClickListener (9ec41774b9 by @fabriziocucci)
- Fixed recycled TextViews incorrectly appearing as clickable to accessibility systems (b34e9c542d by @fabriziocucci)
- – Enabled shouldResetOnClickListenerWhenRecyclingView by default to reset OnClickListener to null when recycling views and prevent accessibility tools from detecting incorrect states. (21b93d82df by @fabriziocucci)
- Enabled shouldResetClickableWhenRecyclingView by default to reset isClickable to false when recycling views and prevent accessibility tools from detecting incorrect clickable states. (a2e8bac60f by @fabriziocucci)
- Fix NPE on ReactAccessibilityDelegate.performAccessibilityAction (cf6de77408 by @cortinico)
- Reset isClickable when recycling views to prevent accessibility tools from detecting incorrect state (d553c31160 by @fabriziocucci)
- Reset OnClickListener when recycling views to prevent accessibility tools from detecting incorrect state (52a4f4b83d by @fabriziocucci)
- Fixed antialiasing issues from border radius usage in API <= 28 (e08abbcb99 by @Abbondanzo)
- View.setEnabled() now properly reflects accessibilityState.disabled (6fbe284082 by @fabriziocucci)
- Fix android_ripple not working with foreground: false in Pressable components (ca077c6bf8 by @ish1416)
- Fix keyboard navigation through items in horizontal ScrollView with snapToInterval enabled (a460df2165 by @jgryko5)
iOS specific
- Moved setting xcconfig to after
add_rn_corepod function is called. (73d3429a44 by @chrfalch) - Fix listenerCount not resetting for RCTEventEmitter (ac8fa25147 by @brainbicycle)
- Fix legacy module interop not handling hitTest correctly (700d320a5f by @kruczy)
- Accessibility actions labels are not read by VoiceOver (602a2d213a by @maxencehenneron)
- Respect
cancelsTouchesInViewwhen canceling touches inRCTSurfaceTouchHandler(5634e8a601 by @intmain) - Remove redundant gesture to tap button when the layer beneath is already tappable (8b8cceac89 by @emily8rown)
- Make rest of app responsive whilst dev loading banner present (f97354368c by @emily8rown)
- Fixed dismiss button not appearing consistently in dev loading view (336042ccb3 by @emily8rown)
- Fixed copying symbol bundles into correct slice folder (ac31e96e49 by @chrfalch)
- Fixed crash from dismiss button in DevLoadingView (6793f5cc51 by @emily8rown)
- Address
-Wswitch-defaultwarnings for projects that use that compiler flag (4c560b118c by @NSProgrammer) - Avoid reallocating views on RCTDevLoadingView progress updates (55a5b6b015 by @shirakaba)
- Fix missing default statements for projects that have
-Wswitch-defaultenabled (along with-Wswitch-enum). (a210409e03 by @NSProgrammer) - Fix crash in RCTEnhancedScrollView when scrollViewDidScroll is called (5f14001e92 by Gabriel Cadden)
- Fix undefined behavior for values outside of enum range in generated
switchmethods in Objective-C. (4bf8204391 by @NSProgrammer) - A Crash when some error information are nil (efd2f679f2 by @cipolleschi)
- Improve -Wswitch-default support (8f91076397 by @NSProgrammer)
- Improve -Wswitch-default support (fedd1cfbda by @NSProgrammer)
- Fix duplicate shadow bug during component recycling by cleaning up visual layers in prepareForRecycle (7dcedf1def by Atharv Soni)
- Make sure to only call onRender when NativeAnimatedNodesManagerProvider is not destroyed (d8f9b3f1f5 by @zeyap)
- Fix rounding error occurring randomly in iOS text line height calculation (581d643a9e by @soutua)
- Fix incorrect source path resolution in dSYM remapping in precompiled framework scripts (f383241b19 by @chrfalch)
- Message (b78099b821 by @ISeekTruth)
- Fixed build with dynamic frameworks (1033dbd1da by @cipolleschi)
- Improve support for projects with
-Wswitch-enumcompiler error (f687292aad by @NSProgrammer)
Fixed
Android specific
- Fix Network error that could occur for
FormDatauploads with binary data (471ef7212e by @huntie)
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.