Breaking
- Deprecated usage of
HERMES_ENABLE_DEBUGGER
build-time flag for enabling React Native debugger in favour ofREACT_NATIVE_DEBUGGER_ENABLED
andREACT_NATIVE_DEBUGGER_ENABLED_DEVONLY
. (5fcb69e8b7 by @hoxyq) - Deep imports to modules inside
Libraries/DevMenu
usingrequire
may need to be appended with.default
(ce84922236 by @j-piasecki) - Remove deprecated
unstable_enableLogBox
function. LogBox is enabled by default. (7368265107 by @huntie) - Remove com.facebook.react.modules.network.TLSSocketFactory class (e065411c91 by @mateoguzmana)
- Deep imports to
Utilities/dismissKeyboard.js
,Utilities/GlobalPerformanceLogger.js
orUtilities/SceneTracker.js
withrequire
syntax need to be appended with '.default'. (fc6ca26d3f by @iwoplaza) - Deep imports to
Utilities/deepFreezeAndThrowOnMutationInDev
,Utilities/defineLazyObjectProperty
,Utilities/DeviceInfo
orUtilities/FeatureDetection
withrequire
syntax may need to be appended with '.default'. (028c0b36f6 by @iwoplaza) - Deep imports to
Libraries/Utilities/Platform
withrequire
syntax needs to be appended with '.default'. (d98116aa44 by @iwoplaza) - Deep imports to
Utilities/infoLog
,Utilities/logError
,Utilities/mapWithSeparator
orUtilities/warnOnce
withrequire
syntax need to be appended with '.default'. (7aef81b984 by @iwoplaza) - Deep imports to
Utilities/binaryToBase64
,Utilities/DevSettings
,Utilities/PolyfillFunctions
orUtilities/RCTLog
withrequire
syntax need to be appended with '.default'. (152587cda0 by @iwoplaza) - Deep imports to
Libraries/Utilities/BackHandler
,Utilities/DevLoadingView.js
orUtilities/HMRClient*.js
withrequire
syntax needs to be appended with '.default'. (827a847791 by @iwoplaza) - Deep imports to modules inside
Libraries/StyleSheet
usingrequire
may need to be appended with.default
(4f20362b07 by @j-piasecki) - Deep imports to
Libraries/Utilities/differ/...
withrequire
syntax need to be appended with '.default'. (2b30aa5cc8 by @iwoplaza) - Deep imports into
react-native/virtualized-lists
with require syntax may need to be appended with.default
(1cf4c84ba0 by @j-piasecki) - Deep imports to modules inside
Libraries/Modal
andLibraries/Network
withrequire
syntax may need to be appended with '.default'. (28945c68da by @iwoplaza) - Deep imports to modules inside
Libraries/PermissionsAndroid
andLibraries/PushNotificationIOS
withrequire
syntax has to be appended with '.default'. (e74246bd66 by @iwoplaza) - Disallow invalid unitless lengths in filters (b34e63539d by @NickGerleman)
- Remove legacy Libraries/JSInspector modules (9ba4dd81db by @huntie)
- Deep imports to modules inside
Libraries/EventEmitter
andLibraries/Image/*.js
withrequire
syntax need to be appended with '.default'. (8783196ee5 by @iwoplaza) - Deep imports to modules inside
Libraries/LayoutAnimation
andLibraries/Linking
withrequire
syntax need to be appended with '.default'. (4d6785bdb5 by @iwoplaza) - Remove deprecated
YellowBox
andconsole.ignoredYellowBox
APIs. UseLogBox
. (45a2d9c5a8 by @huntie) - Move
XHRInterceptor
API tosrc/private/
(389779c348 by @huntie) - Move
Libraries/Inspector/
modules tosrc/private/
(0bde08fe67 by @huntie) - Deep imports to modules inside
Libraries/Lists
withrequire
syntax may need to be appended with '.default'. (e767dc3458 by @iwoplaza) - Disallow invalid unitless lengths in box shadows (8e2de303e3 by @NickGerleman)
- Deep imports to modules inside
Libraries/ReactNative
withrequire
syntax need to be appended with '.default'. (c93bd436a5 by @iwoplaza) - Files inside
Libraries/Text
,Libraries/Share
andLibraries/Settings
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (156ee5bee7 by @iwoplaza) - Files inside
Libraries/Components
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (aac312da8e by @iwoplaza) - Files inside
Libraries/Inspector
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (48d900b703 by @iwoplaza) - Remove some web debugging remnants (9aae84a688 by @NickGerleman)
- Remove incorrect hwb() syntax support from normalize-color (676359efd9 by @NickGerleman)
- Files inside
Libraries/Interaction
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (bdc23fa2b4 by @iwoplaza) - Files inside
Libraries/Utilities
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (52ffda7e55 by @iwoplaza) - Files inside
Libraries/Text
,Libraries/Share
andLibraries/Settings
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (1be7e1a95f by @iwoplaza) Libraries/Core/ExceptionsManager
now exports a defaultExceptionsManager
object, andSyntheticError
as a secondary export. (e5818d92a8 by @iwoplaza)- Removed a long-running loop causing the app to lag while attempting a connection to Metro (9b977def6c by @EdmondChuiHW)
- Removed
Libraries/Animated/AnimatedWeb.js
file. (ecae8a2908 by @iwoplaza) - Files inside
Libraries/Components
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (da695f3a20 by @iwoplaza) - Files inside
Libraries/WebSocket
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (7df73eebdc by @iwoplaza) - Removed a long-running loop causing the app to lag while attempting a connection to Metro (0e5adb9128 by @EdmondChuiHW)
- Files inside
Libraries/Components
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (ce412746b1 by @iwoplaza) - Files inside
Libraries/Components
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (9eeef22a67 by @iwoplaza) - Files inside
Libraries/BugReporting
,Libraries/vendor
,Libraries/Vibration
andLibraries/YellowBox
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (09700327f7 by @iwoplaza) - Files inside
Libraries/Blob
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (9a70bc0418 by @iwoplaza) - Files inside
Libraries/BatchedBridge
andLibraries/AppState
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (135277ace1 by @iwoplaza) - Files inside
Libraries/Alert
andLibraries/ActionSheetIOS
useexport
syntax, which requires the addition of.default
when imported with the CJSrequire
syntax. (c89c5d7e3d by @iwoplaza) - Deep imports from some files in
StyleSheet/
can break when using therequire()
syntax, but can be easily fixed by appending.default
(e4d969a4ab by @iwoplaza)
Android specific
- Make com.facebook.react.modules.network.ResponseUtil internal (360cbf7433 by @mateoguzmana)
- Removed
RuntimeConfig
class for Hermes which was unused. (08ddc11269 by @cortinico) - Reduce visibility of FabricUIManager.setBinding() method, unused outside of react native (2a9a13d567 by @mdvacca)
Added
- Add inspector proxy events for debugger heartbeat (sampled) and abandoned connections (84f3cf95ea by @vzaidman)
- Add inspector proxy info logs in regards to CDP connection to device and DevTools (29419ce8f0 by @vzaidman)
- Open Sourcing React Native's Compatibility Check (60e3921f9c by @elicwhite)
- Add opt in for legacy Metro log streaming via
--client-logs
flag (0d66c524cf by @huntie) - Open Sourcing React Native's Compatibility Check (6590bb3e14 by @elicwhite)
- (abd7259de4 by @javache)
- Added a new workflow to monitor new issue in repo. (ea876054cf by @shubhamguptadream11)
- Added explicit type for Symbol.iterator in URLSearchParams (89af3e804f by @coado)
- Added explicit type for argument in _captureRef in SectionList (e31ff4212b by @coado)
- Added explicit type for _lastNativeRefreshing and changed React import syntax in RefreshControl (a24f9ef825 by @coado)
- Added explicit type for _memoizedRenderer and changed React and View import in FlatList (b634fa1edb by @coado)
- Added type for exported object in AssetRegistry (44d84f2af6 by @coado)
- Add owner stack code frames to LogBox (0affa544c3 by @rickhanlonii)
- Add full owner stack support to React Native (967ef32154 by @rickhanlonii)
- Added types in TouchHistoryMath (b9df812b67 by @coado)
- Linear gradient color transition hint syntax and
px
unit support. (cc89ddd50b by @intergalacticspacehighway) - Adds the escape key to the key press event handler payload. (e566c1ec06 by @sbuggay)
- Added explicit type to supported commands in TextInputNativeCommands (1126bbb149 by @coado)
- Support stylistic sets for fontVariant (c09b71b990 by @LeviWilliams)
Android specific
- On
DefaultNewArchitectureEntryPoint
class add property to specify the desired release level for an application (19c18eb995 by @jorge-cab) - Add support for Gradle Configuration caching (e41887e62f by @cortinico)
- Feature flags for recycling View, Text components separately (ca5ce205f7 by Thomas Nardone)
- Set ReactSurface and ReactRootView to ReactDelegate when created via ReactNavigationActivityDelegate (a302fbcaaf by Maddie Lord)
iOS specific
- Inform users about JSC being moved to a different repo (13177b3025 by @okwasniewski)
- Added the React-SwiftCompatibleNativeModules pod (5d5d3708df by @cipolleschi)
- Js runtime C API for Swift (a6607c07cd by @okwasniewski)
- Add support for
numberOfLines
prop onTextInput
(dcaa33e6d9 by @j-piasecki) - Encapsulate device info listeners (7dc85d0e97 by @okwasniewski)
- Added custom load js block in bridge mode (1e9ac296a5 by @zhongwuzw)
- Add feature flag to enable running JS GC on iOS memory pressure with Bridgeless (6cbdc94456 by @lyahdav)
- Missing nonnull annotations for RCTArchConfiguratorProtocol, RCTUIConfiguratorProtocol.h (0141a44026 by @okwasniewski)
Changed
- Bump Node 18 -> 20 to build React Native in OSS (1fd3806ee9 by @cortinico)
- Improve TypeScript types for
global
objects (094c5be42e by @coado) - Increase minimum typescript version in index.d.ts (721f85adf7 by @coado)
- Changed cron timings to run at fix schedule and upgraded action for better debugging (dc02c53c16 by @shubhamguptadream11)
- Upgrade React DevTools to 6.1.1. (5c88633035 by @hoxyq)
- Move view flattening props to cross platform type interface (ecad90ad8b by @okwasniewski)
- Introduced a feature flag to test an optimization in
Animated
to reduce memory usage. (fb8a6a5bb0 by @yungsters) - Removed
RawProps::operator=
(e4d1cf8ce9 by @javache) Debugger.scriptParsed
now includes the fieldsourceMapURL
as a (rewritten) remote url as opposed to base64 data url (ff2e40371e by @vzaidman)- Upgrade React DevTools to 6.1.0. (07860545f5 by @hoxyq)
- When an Animated component is updated or unmounted,
AnimatedNode
instances will now detach in a microtask instead of synchronously in the commit phase of React. This will cause the completion callback of finished animations to execute after the commit phase instead of during it. (50b75a74d1 by @yungsters) - Improved types in WebSockertInterceptor callbacks (d2adb976ab by @coado)
- Replaced $FlowFixMe with PressEvent in ScrollViewNativeComponentType (8befab1760 by @coado)
- Improved types in ScrollView (1be2ba4597 by @coado)
- Improved Props type in UnimplementedView (b200c7cb2f by @coado)
- Replaced $FlowFixMe in InteractionManager to Function type (cd7a30ce48 by @coado)
- Improve ToastAndroid jsdocs (299a7a959d by @mateoguzmana)
- Removed context from addEventListener arguments in Linking (1536a7f196 by @coado)
- Improved types for exported Types and Properties in LayoutAnimation (3c02738ec4 by @coado)
- Replaced $FlowFixMe in CodegenTypes with Object type (812c3b33cd by @coado)
- Replaced $FlowFixMe in RCTDeviceEventEmitter with any (8df6cfa56b by @coado)
- Replaced $FlowFixMe in NativeModules with any type (286a360d9b by @coado)
- Refactored StaticRenderer syntax (0e6cb590ec by @coado)
- Improved eventInitDict type in WebSocketEvent class (fa2fac1372 by @coado)
- Improved types in TextAncestor (df9d43f02b by @coado)
- (Reapply) The
AnimatedNode
graph will not occur during the insertion effect phase, which means animations can now be reliably started during layout effects. (e0c0476553 by @yungsters) - Mark intersectionRect required in NativeIntersectionObserverEntry (e3c63cfd34 by @lunaleaps)
- Improved types in StatusBar by adding StackProps (48cafc0b69 by @coado)
- Improved types in AnimatedWeb (647ca90a30 by @coado)
Android specific
- Bump AGP to 8.8.2 (2062defb2d by @cortinico)
- Add a build time JSC lean core warning (90e27c2b4f by @Kudo)
- Gradle to 8.13 (b95424d159 by @cortinico)
- Update androidx app compat to 1.7.0 (b0fd9c1556 by @janicduplessis)
- Add option to disable bundle compression to improve startup time (778382ad3d by @mrousavy)
- Allow passing custom JSRuntimeFactory to DefaultReactHost (cdc166709d by @Kudo)
- Exclude
jsctooling
whenuseThirdPartyJSC
gradle property is true (66032f22b8 by @Kudo) - Introduces BuildConfig.UNSTABLE_ENABLE_MINIFY_LEGACY_ARCHITECTURE to determine if the new architecture is fully enabled into an Android app (b45a3e5cd8 by @mdvacca)
- Avoid
ConcurrentModificationException
when iterating overmListeners
TextWatcher
array (243aecc095 by @kirillzyusko) - Deprecated ViewManagerDelegate#setProperty and ViewManagerDelegate#receiveCommand (5a290c4cab by @javache)
iOS specific
- Moved workaround for multiline text measurement with
maximumNumberOfLines
earlier in the pipeline (167a1a30da by @j-piasecki) - Decouple JSC when
USE_THIRD_PARTY_JSC=1
(176bed79b4 by @Kudo) - Properly handle
null
values coming from NativeModules. (d4236791e2 by @cipolleschi) - Change prime constants to have prefix in order to avoid any potential conflicts (2ed0ba0722 by Nolan O'Brien)
- Ignore deprecation warning when calling pod install through core-cli-utils (4141560afc by @cipolleschi)
- Invoke Codegen as part of the Core-cli-utils package (cc1e8d1523 by @cipolleschi)
- Fix Gemfile versions (2527d29a96 by @cipolleschi)
- Stop running codegen when running pod install (f15094ef88 by @cipolleschi)
- Generate the ReactCodegen.podspec as part of codegen instead of as part of pod install. (dab9b3b440 by @cipolleschi)
Deprecated
- Update deprecated enums in RCTTextPrimitivesConversions.h (4121d24454 by @joannaquu)
iOS specific
- Deprecate RCTAppDelegate (74de9526ab by @okwasniewski)
- Deprecate calling
pod install
directly (e3def00d7a by @cipolleschi)
Android specific
RuntimeExecutor
andRuntimeScheduler
constructors are now private,MapBufferSoLoader
was removed as no longer required. (6c8ace9b05 by @javache)- Remove
DevSupportManagerFactory.launchJSDevtools
API (514ec4192f by @huntie) - Stable API - Make
AnimatedNodeWithUpdateableConfig
internal as it was not used in OSS (54e0b69e7e by @cortinico) ViewManagerPropertyUpdater.updateProps
is deprected, use the related ViewManager APIs instead (a18bc58645 by @javache)
iOS specific
- Remove no longer needed UISceneDelegate (a033cf9d5e by @okwasniewski)
- Clean up RCTBridgeDelegate to remove shouldBridgeUseCustomJSC method (c8f1506f13 by @zhongwuzw)
Fixed
- FindNodeAtPoint now considers overflow area of the parent node (d8bc7c68c0 by @hoxyq)
- Add explicit casts for pointerIds for PointerEvents in NativeDOM (94ea10c693 by @jonthysell)
- Fix registering of
start
andbundle
commands with community CLI and isolated node_modules. (cdaa1aa9aa by @robhogan) - Fix
react-native-community/cli
not being found in pnpm setups (a672a4d007 by @tido64) - Disconnections of DevTools when the network is under significant strain. (b0974135bf by @vzaidman)
- Fix
react-native-community/cli-platform-*
packages not being found in monorepos (7926d656b3 by @tido64) - Fix Turbo Module example in RNTester in bridgeless mode (67981efa14 by @christophpurrer)
- Update tests to support new
didOpen
delegate fn (46e86dca87 by @EdmondChuiHW) - Always patch React DevTools first so StrictMode dim chars are excluded from logs/logbox. (e015d1b19a by @rickhanlonii)
- Add default case to
displayModeToInt()
function (8c06f57860 by @Yajur-Grover)
Android specific
- Fix text link accessibility on state update removal (c9e6567881 by @joevilches)
- Fix inset boxShadow when blur < spread (a3b29e1441 by @joevilches)
- GetAndroidResourceFolderName() should return raw folder for svg file (3a4798cc30 by @sunnylqm)
- Fix issue where boxShadow crashes with small blur radius (103f8b3885 by @joevilches)
- Fixed crash with Modal when trying to call syncSystemBarsVisibility() (141fb23bba by @alanleedev)
- Improve input files for codegen gradle task (e9e0d8c2f7 by @janicduplessis)
- Fix react-native/popup-menu-android not building for 3rd party developers (e96396bd18 by @cortinico)
- Fix Image defaultSource runtime error (1c51b77868 by @mateoguzmana)
- Sync Modal system bars visibility with current activity (7016225062 by @mateoguzmana)
- Elevation prop on android has incorrect border-radius (f7d78f81cc by @jorge-cab)
- Pass the bundle URL protocol when setting up HMR client on Android (ba894c908a by @byCedric)
- Fixed anti-aliasing not showing on older Android versions (6c6e0a9085 by @jorge-cab)
- Allow text links to be navigable via keyboard by default (98b0991128 by @joevilches)
- Make
setLayoutAnimationEnabledExperimental
a no-op in Bridgeless (44da5d2ee0 by @arushikesarwani94) - Scroll view throttle no longer impacts events other than
onScroll
(bc810e5115 by @Abbondanzo) - TextInputs can now receive focus via external keyboard (3420eb87b0 by @joevilches)
- Make DefaultReactNativeHost.clear() also invalidate DefaultReactHost (07769d4d7e by @WoLewicki)
iOS specific
- Return nullptr when USE_THIRD_PARTY_JSC is set to true (515ff1e626 by @okwasniewski)
- Avoid race condition crash in [RCTDataRequestHandler invalidate] (6bc5ddea3e by @Saadnajmi)
- Make React Native work without AppDelegate window property (ae7bbe06c9 by @okwasniewski)
- Add guard for custom module provider lookup in TMManager (d0a101fbea by @shwanton)
- Fixed TextInput's
onContentSizeChange
event being dispatched multiple times with the same size (2bb65717b7 by @j-piasecki) - Fix new arch recycled RefreshControl was missing its title (e3d607fc2e by @High5Apps)
- Fix selection makes TextInput clear its content when using children (e3b176a598 by Olivier Bouillet)
- Layout direction changes are now honored on bundle reload. (36f29beac4 by @chrsmys)
- App crash caused by the
[RCTFileRequestHanlder invalidate]
method (789ed7d5ad by @zhouzh1) - Fixed onPress for Text with nested View. (6b2c40c64f by @coado)
- RNTester: Fixes turbo module examples error in bridgeless mode (6a3e275d14 by @zhongwuzw)
- RNTester: Fixes turbo module examples error in bridgeless mode (62831e740c by @zhongwuzw)
- Suppressed iOS 13 deprecation warnings in RCTStatusBarManager (fffd6d75b4 by Ingrid Wang)
- Fix cases where background color, filter, and background image were sized incorrectly if there was a scaling transform (f835b824f4 by @joevilches)
- Fix cases where background color, filter, and background image were sized incorrectly if there was a scaling transform (acaf94dc21 by @joevilches)
- Issue where performance monitor would be hidden under newly presented views. (e7556e921c by @chrsmys)
- Compatibility with Ruby 3.4.0 (b1735bc593 by @okwasniewski)
- Remove private symbols for non-simulator and non-catalyst builds. (9350d6f2f5 by @EvanBacon)
- Re-enable enableFixForViewCommandRace feature flag (ae59702f8e by @okwasniewski)
- Implement
dataDetectorTypes
in the same way as the old architecture (2ae45ec3ce by @VidocqH) - Fix wrong cocoapods script on new_architecture.rb (541e655832 by @CHOIMINSEOK)
- Bridge: Fixes HostTarget use after free when deallocated bridge (3e2e8ec757 by @zhongwuzw)
- Data race related to read/write of RCTDeviceInfo._invalidated. (2a18d83521 by @hakonk)
- Improve detached keyboard detection, support Stage Manager on iOS (c499ae1192 by @mhoran)
- Workaround for a iOS build app running on Apple Silicon Mac(in Xcode Destination: "Mac(Designed for iPad)") TextInput crash due to serialization attempt of WeakEventEmitter (0511e2e49a by @iwater)
Hermes 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.