release notes
release notes
A framework for building native applications using React
release notes
Published 3/4/2026
Pre-ReleasePre-releaserelease notes
Published 3/4/2026
Pre-ReleasePre-releasereact-native/jest-preset package (c4ae05534a by @kitten)StyleSheet.absoluteFill API (5681db09b8 by @huntie)receiveTouches to RCTEventEmitter with a default no-op implementation to avoid breaking ecosystem libraries (67db89d08a by @javache)onPressMove prop to <Pressable /> (d07318226d by @retyui)updateRuntimeShadowNodeReferencesOnCommitThread is enabled (b38428c9bc by Bartlomiej Bloniarz)Pressability onHoverOut property (de5994817d by @chicio)AnimationBackend usages to use AnimationTimestamp (2a4a54ae6c by Bartlomiej Bloniarz)std::mutex to AnimationBackend to protect start, stop and callbacks. (4064b89867 by Bartlomiej Bloniarz)RCTAnimationChoreographer to RCTScheduler (019c9a7d8f by Bartlomiej Bloniarz)EventEmitter to react-native exports. (f7cd8c4c1c by @yungsters)AnimationBackend::trigger to push updates from. events to the mounting layer (ac06f3bdc7 by Bartlomiej Bloniarz)shadowNodeFamily_ from a map in NativeAnimatedNodesManager to PropsAnimatedNode (af96497b54 by Bartlomiej Bloniarz)ReactFontManager.customFontFamilies property to query registered custom font family names (c3acbc424d by @vonovak)StateWrapper to C++ fbjni types (99b328bffa by @mrousavy)scrollsChildToFocus prop to ScrollView to control automatic scrolling when a child receives focus (d9ee4bb0aa by @johankasperi)/json/list will no longer set prefersFuseboxFrontend (421de23470 by @huntie)Pressability tests to Jest modern timers (7dd2d255de by @chicio)createDevMiddleware now accepts string | URL for serverBaseUrl (10709f427d by @emily8rown)URL constructor to accept URL as first argument, matching the second argument type (678f7a9cfb by @emily8rown)AnimationChoreographer interface with an implementation for fantom tests (f8564b47fd by Bartlomiej Bloniarz)cancelAnimationFrame, clearImmediate, clearTimeout and clearInterval do nothing If there is no callback associated the given handle (9d3cc383ba by @retyui)console.error that begin with "Warning: " will no longer be treated as warnings. These call sites should migrate to using console.warn instead. (5ab418460b by @yungsters)hairlineWidth no longer eagerly initializes the PixelRatio TurboModule. (e11a2f07e8 by @yungsters)Pressable no longer unmounts event listeners in a hidden Activity. (c295ec2261 by @yungsters)deviceName field in app metadata is now prefixed with the manufacturer (9b906753d9 by @huntie)nestedScrollEnabled prop to default to true if the ScrollView defines a refreshControl (95bac85b5a by @Abbondanzo)AccessibilityInfo.setAccessibilityFocus in favor of AccessibilityInfo.sendAccessibilityEvent (36a0d9ef63 by @Abbondanzo)RCTHostRuntimeDelegate and merge into RCTHostDelegate (4626732f5b by @tsapeta)AnimationBackendChoreographer, AndroidAnimationChoregrapher (bb7c0f7c5f by Bartlomiej Bloniarz)dev config if obsolete withDevTools is missing (c5a38ab285 by @robhogan)BABEL_ENV as a side effect (88d40dcda3 by @robhogan)cloneMultiple when families have no path to root (54b4cb5e89 by @coado)uri, width and height the default dimensions were being lost (dd3c20057b by @javache)toValue node is detached. (45de7109fe by @kmsbernard)DynamicFromArray by using ThreadLocal<SimplePool> instead of a shared SimplePool, matching the existing fix in DynamicFromMap (21fae86546 by @edwii-zhu)gradle.properties resolution for monorepos by reading from parent Gradle start parameters (projectDir/currentDir) before falling back to ../../android/gradle.properties, so hermesV1Enabled can be inherited correctly. (c5ae0c820a by @Titozzz)inspector-modern/chrome/Registration.h when HermesV1 is disabled. (5ee695ad8f by @tjzel)hermesV1Enabled to true (45896674d1 by @tjzel)<Text> props back to undefined when using enablePropsUpdateReconciliationAndroid feature flag (50289e3add by @hannojg)stylistic-{num} not being propagated correctly (9353eb55b8 by @dragoncodes)transformOrigin using stale layout dimensions from recycled views, causing incorrect transform positioning (0eb5e652a2 by Mazin Zakaria)nkf and base64 as ruby dependencies (51c965883f by @kimchi-developer)commitUpdates path. (31f215a421 by @coado)pod install --project-directory from working properly (9f686f2014 by @kitten)use_react_native! in project podfiles (33641f09fa by @kitten)chromium-edge-launcher@^0.3.0 to drop rimraf (1f2312687b by @kitten)YogaNode to Kotlin (cd27b7e1a8 by @mateoguzmana)$Values to Values (94383613d8 by @marcoww6)mixed to unknown in xplat/js (625d702fec by @marcoww6)YogaConfigJNIBase to Kotlin (9db85e7503 by @mateoguzmana)YogaProps to Kotlin (2e12cbdfb3 by @mateoguzmana)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.
react-native/jest-preset package (c4ae05534a by @kitten)StyleSheet.absoluteFill API (5681db09b8 by @huntie)receiveTouches to RCTEventEmitter with a default no-op implementation to avoid breaking ecosystem libraries (67db89d08a by @javache)onPressMove prop to <Pressable /> (d07318226d by @retyui)updateRuntimeShadowNodeReferencesOnCommitThread is enabled (b38428c9bc by Bartlomiej Bloniarz)Pressability onHoverOut property (de5994817d by @chicio)AnimationBackend usages to use AnimationTimestamp (2a4a54ae6c by Bartlomiej Bloniarz)std::mutex to AnimationBackend to protect start, stop and callbacks. (4064b89867 by Bartlomiej Bloniarz)RCTAnimationChoreographer to RCTScheduler (019c9a7d8f by Bartlomiej Bloniarz)EventEmitter to react-native exports. (f7cd8c4c1c by @yungsters)AnimationBackend::trigger to push updates from. events to the mounting layer (ac06f3bdc7 by Bartlomiej Bloniarz)shadowNodeFamily_ from a map in NativeAnimatedNodesManager to PropsAnimatedNode (af96497b54 by Bartlomiej Bloniarz)ReactFontManager.customFontFamilies property to query registered custom font family names (c3acbc424d by @vonovak)StateWrapper to C++ fbjni types (99b328bffa by @mrousavy)scrollsChildToFocus prop to ScrollView to control automatic scrolling when a child receives focus (d9ee4bb0aa by @johankasperi)/json/list will no longer set prefersFuseboxFrontend (421de23470 by @huntie)Pressability tests to Jest modern timers (7dd2d255de by @chicio)createDevMiddleware now accepts string | URL for serverBaseUrl (10709f427d by @emily8rown)URL constructor to accept URL as first argument, matching the second argument type (678f7a9cfb by @emily8rown)AnimationChoreographer interface with an implementation for fantom tests (f8564b47fd by Bartlomiej Bloniarz)cancelAnimationFrame, clearImmediate, clearTimeout and clearInterval do nothing If there is no callback associated the given handle (9d3cc383ba by @retyui)console.error that begin with "Warning: " will no longer be treated as warnings. These call sites should migrate to using console.warn instead. (5ab418460b by @yungsters)hairlineWidth no longer eagerly initializes the PixelRatio TurboModule. (e11a2f07e8 by @yungsters)Pressable no longer unmounts event listeners in a hidden Activity. (c295ec2261 by @yungsters)deviceName field in app metadata is now prefixed with the manufacturer (9b906753d9 by @huntie)nestedScrollEnabled prop to default to true if the ScrollView defines a refreshControl (95bac85b5a by @Abbondanzo)AccessibilityInfo.setAccessibilityFocus in favor of AccessibilityInfo.sendAccessibilityEvent (36a0d9ef63 by @Abbondanzo)RCTHostRuntimeDelegate and merge into RCTHostDelegate (4626732f5b by @tsapeta)AnimationBackendChoreographer, AndroidAnimationChoregrapher (bb7c0f7c5f by Bartlomiej Bloniarz)dev config if obsolete withDevTools is missing (c5a38ab285 by @robhogan)BABEL_ENV as a side effect (88d40dcda3 by @robhogan)cloneMultiple when families have no path to root (54b4cb5e89 by @coado)uri, width and height the default dimensions were being lost (dd3c20057b by @javache)toValue node is detached. (45de7109fe by @kmsbernard)DynamicFromArray by using ThreadLocal<SimplePool> instead of a shared SimplePool, matching the existing fix in DynamicFromMap (21fae86546 by @edwii-zhu)gradle.properties resolution for monorepos by reading from parent Gradle start parameters (projectDir/currentDir) before falling back to ../../android/gradle.properties, so hermesV1Enabled can be inherited correctly. (c5ae0c820a by @Titozzz)inspector-modern/chrome/Registration.h when HermesV1 is disabled. (5ee695ad8f by @tjzel)hermesV1Enabled to true (45896674d1 by @tjzel)<Text> props back to undefined when using enablePropsUpdateReconciliationAndroid feature flag (50289e3add by @hannojg)stylistic-{num} not being propagated correctly (9353eb55b8 by @dragoncodes)transformOrigin using stale layout dimensions from recycled views, causing incorrect transform positioning (0eb5e652a2 by Mazin Zakaria)nkf and base64 as ruby dependencies (51c965883f by @kimchi-developer)commitUpdates path. (31f215a421 by @coado)pod install --project-directory from working properly (9f686f2014 by @kitten)use_react_native! in project podfiles (33641f09fa by @kitten)chromium-edge-launcher@^0.3.0 to drop rimraf (1f2312687b by @kitten)YogaNode to Kotlin (cd27b7e1a8 by @mateoguzmana)$Values to Values (94383613d8 by @marcoww6)mixed to unknown in xplat/js (625d702fec by @marcoww6)YogaConfigJNIBase to Kotlin (9db85e7503 by @mateoguzmana)YogaProps to Kotlin (2e12cbdfb3 by @mateoguzmana)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.