react-native-windows 0.74.12 → 0.75.0-preview.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Utilities.cpp +2 -2
  3. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  4. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  5. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  6. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  7. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  8. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  9. package/Libraries/Animated/useAnimatedProps.js +56 -28
  10. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  11. package/Libraries/Components/Button.js +10 -5
  12. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  13. package/Libraries/Components/Flyout/Flyout.js +10 -10
  14. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  15. package/Libraries/Components/Pressable/Pressable.js +13 -6
  16. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  17. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  18. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  19. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  20. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  21. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  22. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  23. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  24. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  25. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  26. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  27. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  28. package/Libraries/Components/TextInput/TextInput.js +14 -70
  29. package/Libraries/Components/TextInput/TextInput.windows.js +15 -72
  30. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  31. package/Libraries/Components/Touchable/Touchable.js +2 -2
  32. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  33. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  34. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  35. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  36. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  37. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  39. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  40. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  41. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  42. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  43. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  44. package/Libraries/Components/View/View.js +0 -11
  45. package/Libraries/Components/View/View.windows.js +0 -11
  46. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  47. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  48. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  49. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  50. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  51. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  52. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  53. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  54. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  55. package/Libraries/Core/ErrorHandlers.js +116 -0
  56. package/Libraries/Core/ExceptionsManager.js +2 -2
  57. package/Libraries/Core/ReactNativeVersion.js +3 -3
  58. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  59. package/Libraries/Core/setUpPerformance.js +6 -4
  60. package/Libraries/Core/setUpReactDevTools.js +70 -10
  61. package/Libraries/Core/setUpTimers.js +50 -31
  62. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  63. package/Libraries/Image/Image.android.js +23 -13
  64. package/Libraries/Image/Image.d.ts +14 -15
  65. package/Libraries/Image/Image.ios.js +21 -11
  66. package/Libraries/Image/Image.windows.js +21 -11
  67. package/Libraries/Image/ImageProps.js +16 -5
  68. package/Libraries/Image/ImageTypes.flow.js +7 -2
  69. package/Libraries/Image/ImageUtils.js +1 -0
  70. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  71. package/Libraries/Inspector/ElementBox.js +6 -3
  72. package/Libraries/Inspector/ElementProperties.js +1 -1
  73. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  74. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  75. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  76. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  77. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  78. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  79. package/Libraries/LogBox/LogBox.js +29 -12
  80. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  81. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  82. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  83. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  84. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  85. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  86. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  87. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  88. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  89. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  90. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  91. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  92. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  93. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  94. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  95. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  96. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  97. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  98. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  99. package/Libraries/Network/XMLHttpRequest.js +5 -1
  100. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  101. package/Libraries/Pressability/Pressability.js +3 -51
  102. package/Libraries/Pressability/Pressability.windows.js +3 -51
  103. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  104. package/Libraries/ReactNative/AppRegistry.js +2 -4
  105. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  106. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  107. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  108. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  109. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  110. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  111. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  112. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  113. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  114. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  115. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  116. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  117. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  118. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  119. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  120. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  121. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  122. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  123. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  124. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  125. package/Libraries/Share/Share.d.ts +16 -10
  126. package/Libraries/Share/Share.js +14 -15
  127. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  128. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  129. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  130. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  131. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  132. package/Libraries/StyleSheet/processFilter.js +132 -0
  133. package/Libraries/StyleSheet/processTransform.js +18 -3
  134. package/Libraries/Text/Text.js +151 -128
  135. package/Libraries/Text/Text.windows.js +144 -128
  136. package/Libraries/Text/TextNativeComponent.js +5 -4
  137. package/Libraries/Text/TextProps.js +6 -6
  138. package/Libraries/Text/TextProps.windows.js +6 -6
  139. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  140. package/Libraries/Types/CodegenTypes.js +3 -0
  141. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  142. package/Libraries/Utilities/Dimensions.js +1 -0
  143. package/Libraries/Utilities/HMRClient.js +36 -8
  144. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  145. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  146. package/Libraries/Utilities/Platform.android.js +4 -4
  147. package/Libraries/Utilities/RCTLog.js +1 -0
  148. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  149. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  150. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  151. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  152. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  153. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  154. package/Microsoft.ReactNative/Composition.Input.idl +3 -3
  155. package/Microsoft.ReactNative/CompositionSwitcher.idl +0 -1
  156. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  157. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  158. package/Microsoft.ReactNative/Fabric/Composition/ComponentViewRegistry.cpp +0 -3
  159. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +2 -2
  160. package/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +4 -4
  161. package/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +0 -10
  162. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +27 -16
  163. package/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +48 -85
  165. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.h +0 -4
  166. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +24 -24
  167. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +6 -8
  168. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +0 -10
  169. package/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +0 -3
  170. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +29 -45
  171. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.h +1 -3
  172. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +6 -43
  173. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +23 -34
  174. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  175. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  176. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  177. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +17 -48
  178. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -7
  179. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -16
  180. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  181. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  182. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  183. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  184. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  185. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  186. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  187. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  188. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  189. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  190. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  191. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +13 -20
  192. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  193. package/Microsoft.ReactNative/Timer.idl +1 -3
  194. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  195. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  196. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  197. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  198. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  199. package/Microsoft.ReactNative/packages.lock.json +41 -78
  200. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  201. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  202. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  203. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  204. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  205. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  206. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  207. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  208. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  209. package/README.md +21 -21
  210. package/ReactCommon/ReactCommon.vcxproj +2 -0
  211. package/ReactCommon/ReactCommon.vcxproj.filters +3 -0
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  224. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  225. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  226. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  227. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  228. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +4 -0
  229. package/Scripts/rnw-dependencies.ps1 +36 -23
  230. package/Shared/HermesRuntimeHolder.cpp +19 -1
  231. package/Shared/HermesRuntimeHolder.h +8 -1
  232. package/Shared/HermesSamplingProfiler.cpp +1 -2
  233. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  234. package/Shared/OInstance.cpp +1 -2
  235. package/Shared/Shared.vcxitems +21 -15
  236. package/Shared/Shared.vcxitems.filters +8 -3
  237. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  238. package/Shared/Threading/BatchingQueueThread.h +2 -2
  239. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  240. package/codegen/NativeAppStateSpec.g.h +8 -8
  241. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  242. package/codegen/NativeDOMSpec.g.h +136 -0
  243. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  244. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  245. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  246. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  247. package/codegen/NativePerformanceSpec.g.h +35 -7
  248. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  249. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  250. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  251. package/codegen/NativeUIManagerSpec.g.h +5 -17
  252. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  253. package/codegen/react/components/rnwcore/Props.h +16 -12
  254. package/codegen/react/components/rnwcore/States.h +0 -26
  255. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  256. package/codegen/rnwcoreJSI.h +1374 -2867
  257. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  258. package/fmt/fmt.vcxproj +1 -1
  259. package/jest/mockComponent.js +7 -0
  260. package/jest/renderer.js +25 -14
  261. package/jest/setup.js +19 -13
  262. package/package.json +29 -27
  263. package/rn-get-polyfills.js +1 -0
  264. package/src/private/core/composeStyles.js +27 -0
  265. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  266. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  267. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  268. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  269. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  270. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  271. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  272. package/src/private/specs/modules/NativeUIManager.js +0 -7
  273. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  274. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  275. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  276. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  277. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  278. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  279. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  280. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  281. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  282. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  283. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  284. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  285. package/src/private/webapis/performance/EventCounts.js +1 -1
  286. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  287. package/src/private/webapis/performance/Performance.js +10 -56
  288. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  289. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  290. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  291. package/src/private/webapis/performance/UserTiming.js +63 -0
  292. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  293. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  294. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  295. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  296. package/stubs/glog/logging.h +1 -0
  297. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  298. package/template/cs-lib/proj/MyLib.csproj +1 -1
  299. package/template/metro.config.js +13 -2
  300. package/templates/cpp-app/template.config.js +1 -1
  301. package/templates/cpp-lib/example/metro.config.js +2 -2
  302. package/templates/cpp-lib/template.config.js +1 -1
  303. package/templates/old/generateWrapper.js +4 -1
  304. package/types/modules/globals.d.ts +4 -0
  305. package/Libraries/Lists/FlatList.windows.js +0 -717
  306. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  307. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  308. package/Libraries/Utilities/LoadingView.js +0 -16
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  312. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  313. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2377
  314. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.cpp +0 -140
  315. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/config/Config.h +0 -92
  316. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  317. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.cpp +0 -48
  318. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/LayoutResults.h +0 -122
  319. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/node/Node.cpp +0 -366
  320. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  321. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  322. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  323. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  324. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  325. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  326. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  327. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  328. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  329. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  330. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  331. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  332. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  333. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  334. package/template/metro.devMode.config.js +0 -56
  335. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
package/fmt/fmt.vcxproj CHANGED
@@ -156,6 +156,6 @@
156
156
  <!-- Allow temporary patches if needed, while we wait for PRs to land in fmt -->
157
157
  <Target Name="ApplyFmtTemporaryPatch" BeforeTargets="PrepareForBuild" DependsOnTargets="UnzipFmt">
158
158
  <Message Importance="High" Text="Applying temporary patches to fmt." />
159
- <Copy DestinationFiles="@(TemporaryFmtPatchFiles->'$(FmtDir)fmt\%(RecursiveDir)%(Filename)%(Extension)')" SourceFiles="@(TemporaryFmtPatchFiles)" />
159
+ <Copy DestinationFiles="@(TemporaryFmtPatchFiles->'$(FmtDir)\include\fmt\%(RecursiveDir)%(Filename)%(Extension)')" SourceFiles="@(TemporaryFmtPatchFiles)" />
160
160
  </Target>
161
161
  </Project>
@@ -50,6 +50,13 @@ module.exports = (moduleName, instanceMethods, isESModule) => {
50
50
  }
51
51
  };
52
52
 
53
+ Object.defineProperty(Component, 'name', {
54
+ value: name,
55
+ writable: false,
56
+ enumerable: false,
57
+ configurable: true,
58
+ });
59
+
53
60
  Component.displayName = nameWithoutPrefix;
54
61
 
55
62
  Object.keys(RealComponent).forEach(classStatic => {
package/jest/renderer.js CHANGED
@@ -9,22 +9,33 @@
9
9
  * @oncall react_native
10
10
  */
11
11
 
12
+ import type {ReactTestRenderer} from 'react-test-renderer';
13
+
14
+ import nullthrows from 'nullthrows';
12
15
  import * as React from 'react';
13
- import ShallowRenderer from 'react-shallow-renderer';
14
16
  import TestRenderer from 'react-test-renderer';
15
17
 
16
- const renderer = new ShallowRenderer();
17
-
18
- export const shallow = (Component: React.Element<any>): any => {
19
- const Wrapper = (): React.Element<any> => Component;
20
-
21
- return renderer.render(<Wrapper />);
22
- };
18
+ export async function create(
19
+ Component: React.Element<any>,
20
+ ): Promise<ReactTestRenderer> {
21
+ let component;
22
+ await TestRenderer.act(async () => {
23
+ component = TestRenderer.create(Component);
24
+ });
25
+ return nullthrows(component);
26
+ }
23
27
 
24
- export const shallowRender = (Component: React.Element<any>): any => {
25
- return renderer.render(Component);
26
- };
28
+ export async function unmount(testRenderer: ReactTestRenderer) {
29
+ await TestRenderer.act(async () => {
30
+ testRenderer.unmount();
31
+ });
32
+ }
27
33
 
28
- export const create = (Component: React.Element<any>): any => {
29
- return TestRenderer.create(Component);
30
- };
34
+ export async function update(
35
+ testRenderer: ReactTestRenderer,
36
+ element: React.Element<any>,
37
+ ) {
38
+ await TestRenderer.act(async () => {
39
+ testRenderer.update(element);
40
+ });
41
+ }
package/jest/setup.js CHANGED
@@ -9,6 +9,11 @@
9
9
 
10
10
  'use strict';
11
11
 
12
+ global.IS_REACT_ACT_ENVIRONMENT = true;
13
+ // Suppress the `react-test-renderer` warnings until New Architecture and legacy
14
+ // mode are no longer supported by React Native.
15
+ global.IS_REACT_NATIVE_TEST_ENVIRONMENT = true;
16
+
12
17
  const MockNativeMethods = jest.requireActual('./MockNativeMethods');
13
18
  const mockComponent = jest.requireActual('./mockComponent');
14
19
 
@@ -112,17 +117,9 @@ jest
112
117
  Constants: {},
113
118
  },
114
119
  }))
115
- .mock('../Libraries/Image/Image', () => {
116
- const Image = mockComponent('../Libraries/Image/Image');
117
- Image.getSize = jest.fn();
118
- Image.getSizeWithHeaders = jest.fn();
119
- Image.prefetch = jest.fn();
120
- Image.prefetchWithMetadata = jest.fn();
121
- Image.queryCache = jest.fn();
122
- Image.resolveAssetSource = jest.fn();
123
-
124
- return Image;
125
- })
120
+ .mock('../Libraries/Image/Image', () =>
121
+ mockComponent('../Libraries/Image/Image'),
122
+ )
126
123
  .mock('../Libraries/Text/Text', () =>
127
124
  mockComponent('../Libraries/Text/Text', MockNativeMethods),
128
125
  )
@@ -145,7 +142,9 @@ jest
145
142
  .mock('../Libraries/Components/AccessibilityInfo/AccessibilityInfo', () => ({
146
143
  __esModule: true,
147
144
  default: {
148
- addEventListener: jest.fn(),
145
+ addEventListener: jest.fn(() => ({
146
+ remove: jest.fn(),
147
+ })),
149
148
  announceForAccessibility: jest.fn(),
150
149
  isAccessibilityServiceEnabled: jest.fn(),
151
150
  isBoldTextEnabled: jest.fn(),
@@ -208,7 +207,9 @@ jest
208
207
  openURL: jest.fn(),
209
208
  canOpenURL: jest.fn(() => Promise.resolve(true)),
210
209
  openSettings: jest.fn(),
211
- addEventListener: jest.fn(),
210
+ addEventListener: jest.fn(() => ({
211
+ remove: jest.fn(),
212
+ })),
212
213
  getInitialURL: jest.fn(() => Promise.resolve()),
213
214
  sendIntent: jest.fn(),
214
215
  }))
@@ -261,7 +262,12 @@ jest
261
262
  },
262
263
  ImageLoader: {
263
264
  getSize: jest.fn(url => Promise.resolve([320, 240])),
265
+ getSizeWithHeaders: jest.fn((url, headers) =>
266
+ Promise.resolve({height: 222, width: 333}),
267
+ ),
264
268
  prefetchImage: jest.fn(),
269
+ prefetchImageWithMetadata: jest.fn(),
270
+ queryCache: jest.fn(),
265
271
  },
266
272
  ImageViewManager: {
267
273
  getSize: jest.fn((uri, success) =>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-windows",
3
- "version": "0.74.12",
3
+ "version": "0.75.0-preview.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,18 +23,18 @@
23
23
  "dependencies": {
24
24
  "@babel/runtime": "^7.0.0",
25
25
  "@jest/create-cache-key-function": "^29.6.3",
26
- "@react-native-community/cli": "13.6.9",
27
- "@react-native-community/cli-platform-android": "13.6.9",
28
- "@react-native-community/cli-platform-ios": "13.6.9",
29
- "@react-native-windows/cli": "0.74.1",
26
+ "@react-native-community/cli": "14.0.0-alpha.11",
27
+ "@react-native-community/cli-platform-android": "14.0.0-alpha.11",
28
+ "@react-native-community/cli-platform-ios": "14.0.0-alpha.11",
29
+ "@react-native-windows/cli": "0.75.0-preview.1",
30
30
  "@react-native/assets": "1.0.0",
31
- "@react-native/assets-registry": "0.74.85",
32
- "@react-native/codegen": "0.74.85",
33
- "@react-native/community-cli-plugin": "0.74.85",
34
- "@react-native/gradle-plugin": "0.74.85",
35
- "@react-native/js-polyfills": "0.74.85",
36
- "@react-native/normalize-colors": "0.74.85",
37
- "@react-native/virtualized-lists": "0.74.85",
31
+ "@react-native/assets-registry": "0.75.0-rc.3",
32
+ "@react-native/codegen": "0.75.0-rc.3",
33
+ "@react-native/community-cli-plugin": "0.75.0-rc.3",
34
+ "@react-native/gradle-plugin": "0.75.0-rc.3",
35
+ "@react-native/js-polyfills": "0.75.0-rc.3",
36
+ "@react-native/normalize-colors": "0.75.0-rc.3",
37
+ "@react-native/virtualized-lists": "0.75.0-rc.3",
38
38
  "abort-controller": "^3.0.0",
39
39
  "anser": "^1.4.9",
40
40
  "ansi-regex": "^5.0.0",
@@ -42,6 +42,7 @@
42
42
  "chalk": "^4.0.0",
43
43
  "event-target-shim": "^5.0.1",
44
44
  "flow-enums-runtime": "^0.0.6",
45
+ "glob": "^7.1.1",
45
46
  "invariant": "^2.2.4",
46
47
  "jest-environment-node": "^29.6.3",
47
48
  "jsc-android": "^250231.0.0",
@@ -52,11 +53,12 @@
52
53
  "nullthrows": "^1.1.1",
53
54
  "pretty-format": "^26.5.2",
54
55
  "promise": "^8.3.0",
55
- "react-devtools-core": "^5.0.0",
56
+ "react-devtools-core": "5.1.0",
56
57
  "react-refresh": "^0.14.0",
57
58
  "react-shallow-renderer": "^16.15.0",
58
59
  "regenerator-runtime": "^0.13.2",
59
- "scheduler": "0.24.0-canary-efb381bbf-20230505",
60
+ "scheduler": "0.25.0-rc-fb9a90fa48-20240614",
61
+ "semver": "^7.1.3",
60
62
  "source-map-support": "^0.5.19",
61
63
  "stacktrace-parser": "^0.1.10",
62
64
  "whatwg-fetch": "^3.0.0",
@@ -64,14 +66,14 @@
64
66
  "yargs": "^17.6.2"
65
67
  },
66
68
  "devDependencies": {
67
- "@react-native-windows/codegen": "0.74.1",
68
- "@react-native/metro-config": "0.74.85",
69
+ "@react-native-windows/codegen": "0.75.0-preview.1",
70
+ "@react-native/metro-config": "0.75.0-rc.3",
69
71
  "@rnw-scripts/babel-react-native-config": "0.0.0",
70
- "@rnw-scripts/eslint-config": "1.2.9",
71
- "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.13",
72
- "@rnw-scripts/just-task": "2.3.25",
72
+ "@rnw-scripts/eslint-config": "1.2.23",
73
+ "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.27",
74
+ "@rnw-scripts/just-task": "2.3.40",
73
75
  "@rnw-scripts/metro-dev-config": "0.0.0",
74
- "@rnx-kit/jest-preset": "^0.1.0",
76
+ "@rnx-kit/jest-preset": "^0.1.17",
75
77
  "@types/node": "^18.0.0",
76
78
  "@types/react": "^18.2.6",
77
79
  "eslint": "^8.19.0",
@@ -80,23 +82,23 @@
80
82
  "jscodeshift": "^0.14.0",
81
83
  "just-scripts": "^1.3.3",
82
84
  "prettier": "2.8.8",
83
- "react": "18.2.0",
84
- "react-native": "0.74.3",
85
- "react-native-platform-override": "^1.9.25",
85
+ "react": "19.0.0-rc-fb9a90fa48-20240614",
86
+ "react-native": "0.75.0-rc.3",
87
+ "react-native-platform-override": "^1.9.42",
86
88
  "react-refresh": "^0.14.0",
87
89
  "typescript": "5.0.4"
88
90
  },
89
91
  "peerDependencies": {
90
92
  "@types/react": "^18.2.6",
91
- "react": "18.2.0",
92
- "react-native": "^0.74.0"
93
+ "react": "^19.0.0-rc-fb9a90fa48-20240614",
94
+ "react-native": "0.75.0-rc.3"
93
95
  },
94
96
  "beachball": {
95
- "defaultNpmTag": "latest",
97
+ "defaultNpmTag": "preview",
96
98
  "disallowedChangeTypes": [
97
99
  "major",
98
100
  "minor",
99
- "prerelease",
101
+ "patch",
100
102
  "premajor",
101
103
  "preminor",
102
104
  "prepatch"
@@ -4,6 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
+ * @flow strict-local
7
8
  * @format
8
9
  */
9
10
 
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ /**
12
+ * Combines two styles such that `style2` will override any styles in `style1`.
13
+ * If either style is null or undefined, the other one is returned without
14
+ * allocating an array, saving allocations and enabling memoization.
15
+ */
16
+ export default function composeStyles<T1, T2>(
17
+ style1: ?T1,
18
+ style2: ?T2,
19
+ ): ?(T1 | T2 | $ReadOnlyArray<T1 | T2>) {
20
+ if (style1 == null) {
21
+ return style2;
22
+ }
23
+ if (style2 == null) {
24
+ return style1;
25
+ }
26
+ return [style1, style2];
27
+ }
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<b7ebc6e4360a4b7733335f283300a4bb>>
7
+ * @generated SignedSource<<870e25c844e692bb04ee49fe20cd3baf>>
8
8
  * @flow strict-local
9
9
  */
10
10
 
@@ -27,13 +27,13 @@ import {
27
27
 
28
28
  export type ReactNativeFeatureFlagsJsOnly = {
29
29
  jsOnlyTestFlag: Getter<boolean>,
30
- isLayoutAnimationEnabled: Getter<boolean>,
31
30
  animatedShouldDebounceQueueFlush: Getter<boolean>,
32
31
  animatedShouldUseSingleOp: Getter<boolean>,
33
32
  enableAccessToHostTreeInFabric: Getter<boolean>,
33
+ isLayoutAnimationEnabled: Getter<boolean>,
34
34
  shouldUseAnimatedObjectForTransform: Getter<boolean>,
35
- shouldUseSetNativePropsInFabric: Getter<boolean>,
36
35
  shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean>,
36
+ shouldUseSetNativePropsInFabric: Getter<boolean>,
37
37
  };
38
38
 
39
39
  export type ReactNativeFeatureFlagsJsOnlyOverrides = Partial<ReactNativeFeatureFlagsJsOnly>;
@@ -41,17 +41,29 @@ export type ReactNativeFeatureFlagsJsOnlyOverrides = Partial<ReactNativeFeatureF
41
41
  export type ReactNativeFeatureFlags = {
42
42
  ...ReactNativeFeatureFlagsJsOnly,
43
43
  commonTestFlag: Getter<boolean>,
44
- androidEnablePendingFabricTransactions: Getter<boolean>,
44
+ allowCollapsableChildren: Getter<boolean>,
45
+ allowRecursiveCommitsWithSynchronousMountOnAndroid: Getter<boolean>,
45
46
  batchRenderingUpdatesInEventLoop: Getter<boolean>,
46
47
  destroyFabricSurfacesInReactInstanceManager: Getter<boolean>,
47
48
  enableBackgroundExecutor: Getter<boolean>,
48
- useModernRuntimeScheduler: Getter<boolean>,
49
+ enableCleanTextInputYogaNode: Getter<boolean>,
50
+ enableGranularShadowTreeStateReconciliation: Getter<boolean>,
49
51
  enableMicrotasks: Getter<boolean>,
50
- enableSpannableBuildingUnification: Getter<boolean>,
51
- enableCustomDrawOrderFabric: Getter<boolean>,
52
- enableFixForClippedSubviewsCrash: Getter<boolean>,
53
- inspectorEnableCxxInspectorPackagerConnection: Getter<boolean>,
54
- inspectorEnableModernCDPRegistry: Getter<boolean>,
52
+ enableSynchronousStateUpdates: Getter<boolean>,
53
+ enableUIConsistency: Getter<boolean>,
54
+ fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak: Getter<boolean>,
55
+ forceBatchingMountItemsOnAndroid: Getter<boolean>,
56
+ fuseboxEnabledDebug: Getter<boolean>,
57
+ fuseboxEnabledRelease: Getter<boolean>,
58
+ lazyAnimationCallbacks: Getter<boolean>,
59
+ preventDoubleTextMeasure: Getter<boolean>,
60
+ setAndroidLayoutDirection: Getter<boolean>,
61
+ useImmediateExecutorInAndroidBridgeless: Getter<boolean>,
62
+ useModernRuntimeScheduler: Getter<boolean>,
63
+ useNativeViewConfigsInBridgelessMode: Getter<boolean>,
64
+ useRuntimeShadowNodeReferenceUpdate: Getter<boolean>,
65
+ useRuntimeShadowNodeReferenceUpdateOnLayout: Getter<boolean>,
66
+ useStateAlignmentMechanism: Getter<boolean>,
55
67
  }
56
68
 
57
69
  /**
@@ -59,11 +71,6 @@ export type ReactNativeFeatureFlags = {
59
71
  */
60
72
  export const jsOnlyTestFlag: Getter<boolean> = createJavaScriptFlagGetter('jsOnlyTestFlag', false);
61
73
 
62
- /**
63
- * Function used to enable / disabled Layout Animations in React Native.
64
- */
65
- export const isLayoutAnimationEnabled: Getter<boolean> = createJavaScriptFlagGetter('isLayoutAnimationEnabled', true);
66
-
67
74
  /**
68
75
  * Enables an experimental flush-queue debouncing in Animated.js.
69
76
  */
@@ -80,28 +87,37 @@ export const animatedShouldUseSingleOp: Getter<boolean> = createJavaScriptFlagGe
80
87
  export const enableAccessToHostTreeInFabric: Getter<boolean> = createJavaScriptFlagGetter('enableAccessToHostTreeInFabric', false);
81
88
 
82
89
  /**
83
- * Enables use of AnimatedObject for animating transform values.
90
+ * Function used to enable / disabled Layout Animations in React Native.
84
91
  */
85
- export const shouldUseAnimatedObjectForTransform: Getter<boolean> = createJavaScriptFlagGetter('shouldUseAnimatedObjectForTransform', false);
92
+ export const isLayoutAnimationEnabled: Getter<boolean> = createJavaScriptFlagGetter('isLayoutAnimationEnabled', true);
86
93
 
87
94
  /**
88
- * Enables use of setNativeProps in JS driven animations.
95
+ * Enables use of AnimatedObject for animating transform values.
89
96
  */
90
- export const shouldUseSetNativePropsInFabric: Getter<boolean> = createJavaScriptFlagGetter('shouldUseSetNativePropsInFabric', true);
97
+ export const shouldUseAnimatedObjectForTransform: Getter<boolean> = createJavaScriptFlagGetter('shouldUseAnimatedObjectForTransform', false);
91
98
 
92
99
  /**
93
100
  * removeClippedSubviews prop will be used as the default in FlatList on iOS to match Android
94
101
  */
95
102
  export const shouldUseRemoveClippedSubviewsAsDefaultOnIOS: Getter<boolean> = createJavaScriptFlagGetter('shouldUseRemoveClippedSubviewsAsDefaultOnIOS', false);
96
103
 
104
+ /**
105
+ * Enables use of setNativeProps in JS driven animations.
106
+ */
107
+ export const shouldUseSetNativePropsInFabric: Getter<boolean> = createJavaScriptFlagGetter('shouldUseSetNativePropsInFabric', true);
108
+
97
109
  /**
98
110
  * Common flag for testing. Do NOT modify.
99
111
  */
100
112
  export const commonTestFlag: Getter<boolean> = createNativeFlagGetter('commonTestFlag', false);
101
113
  /**
102
- * To be used with batchRenderingUpdatesInEventLoop. When enbled, the Android mounting layer will concatenate pending transactions to ensure they're applied atomatically
114
+ * Enables the differentiator to understand the "collapsableChildren" prop
115
+ */
116
+ export const allowCollapsableChildren: Getter<boolean> = createNativeFlagGetter('allowCollapsableChildren', true);
117
+ /**
118
+ * Adds support for recursively processing commits that mount synchronously (Android only).
103
119
  */
104
- export const androidEnablePendingFabricTransactions: Getter<boolean> = createNativeFlagGetter('androidEnablePendingFabricTransactions', false);
120
+ export const allowRecursiveCommitsWithSynchronousMountOnAndroid: Getter<boolean> = createNativeFlagGetter('allowRecursiveCommitsWithSynchronousMountOnAndroid', false);
105
121
  /**
106
122
  * When enabled, the RuntimeScheduler processing the event loop will batch all rendering updates and dispatch them together at the end of each iteration of the loop.
107
123
  */
@@ -115,33 +131,77 @@ export const destroyFabricSurfacesInReactInstanceManager: Getter<boolean> = crea
115
131
  */
116
132
  export const enableBackgroundExecutor: Getter<boolean> = createNativeFlagGetter('enableBackgroundExecutor', false);
117
133
  /**
118
- * When enabled, it uses the modern fork of RuntimeScheduler that allows scheduling tasks with priorities from any thread.
134
+ * Clean yoga node when <TextInput /> does not change.
119
135
  */
120
- export const useModernRuntimeScheduler: Getter<boolean> = createNativeFlagGetter('useModernRuntimeScheduler', false);
136
+ export const enableCleanTextInputYogaNode: Getter<boolean> = createNativeFlagGetter('enableCleanTextInputYogaNode', false);
137
+ /**
138
+ * When enabled, the renderer would only fail commits when they propagate state and the last commit that updated state changed before committing.
139
+ */
140
+ export const enableGranularShadowTreeStateReconciliation: Getter<boolean> = createNativeFlagGetter('enableGranularShadowTreeStateReconciliation', false);
121
141
  /**
122
142
  * Enables the use of microtasks in Hermes (scheduling) and RuntimeScheduler (execution).
123
143
  */
124
144
  export const enableMicrotasks: Getter<boolean> = createNativeFlagGetter('enableMicrotasks', false);
125
145
  /**
126
- * Uses new, deduplicated logic for constructing Android Spannables from text fragments
146
+ * Dispatches state updates synchronously in Fabric (e.g.: updates the scroll position in the shadow tree synchronously from the main thread).
147
+ */
148
+ export const enableSynchronousStateUpdates: Getter<boolean> = createNativeFlagGetter('enableSynchronousStateUpdates', false);
149
+ /**
150
+ * Ensures that JavaScript always has a consistent view of the state of the UI (e.g.: commits done in other threads are not immediately propagated to JS during its execution).
151
+ */
152
+ export const enableUIConsistency: Getter<boolean> = createNativeFlagGetter('enableUIConsistency', false);
153
+ /**
154
+ * Fixes a leak in SurfaceMountingManager.mRemoveDeleteTreeUIFrameCallback
155
+ */
156
+ export const fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak: Getter<boolean> = createNativeFlagGetter('fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak', false);
157
+ /**
158
+ * Forces the mounting layer on Android to always batch mount items instead of dispatching them immediately. This might fix some crashes related to synchronous state updates, where some views dispatch state updates during mount.
159
+ */
160
+ export const forceBatchingMountItemsOnAndroid: Getter<boolean> = createNativeFlagGetter('forceBatchingMountItemsOnAndroid', false);
161
+ /**
162
+ * Flag determining if the React Native DevTools (Fusebox) CDP backend should be enabled in debug builds. This flag is global and should not be changed across React Host lifetimes.
163
+ */
164
+ export const fuseboxEnabledDebug: Getter<boolean> = createNativeFlagGetter('fuseboxEnabledDebug', false);
165
+ /**
166
+ * Flag determining if the React Native DevTools (Fusebox) CDP backend should be enabled in release builds. This flag is global and should not be changed across React Host lifetimes.
167
+ */
168
+ export const fuseboxEnabledRelease: Getter<boolean> = createNativeFlagGetter('fuseboxEnabledRelease', false);
169
+ /**
170
+ * Only enqueue Choreographer calls if there is an ongoing animation, instead of enqueueing every frame.
171
+ */
172
+ export const lazyAnimationCallbacks: Getter<boolean> = createNativeFlagGetter('lazyAnimationCallbacks', false);
173
+ /**
174
+ * When enabled, ParagraphShadowNode will no longer call measure twice.
175
+ */
176
+ export const preventDoubleTextMeasure: Getter<boolean> = createNativeFlagGetter('preventDoubleTextMeasure', true);
177
+ /**
178
+ * Propagate layout direction to Android views.
127
179
  */
128
- export const enableSpannableBuildingUnification: Getter<boolean> = createNativeFlagGetter('enableSpannableBuildingUnification', false);
180
+ export const setAndroidLayoutDirection: Getter<boolean> = createNativeFlagGetter('setAndroidLayoutDirection', false);
181
+ /**
182
+ * Invoke callbacks immediately on the ReactInstance rather than going through a background thread for synchronization
183
+ */
184
+ export const useImmediateExecutorInAndroidBridgeless: Getter<boolean> = createNativeFlagGetter('useImmediateExecutorInAndroidBridgeless', false);
185
+ /**
186
+ * When enabled, it uses the modern fork of RuntimeScheduler that allows scheduling tasks with priorities from any thread.
187
+ */
188
+ export const useModernRuntimeScheduler: Getter<boolean> = createNativeFlagGetter('useModernRuntimeScheduler', false);
129
189
  /**
130
- * When enabled, Fabric will use customDrawOrder in ReactViewGroup (similar to old architecture).
190
+ * When enabled, the native view configs are used in bridgeless mode.
131
191
  */
132
- export const enableCustomDrawOrderFabric: Getter<boolean> = createNativeFlagGetter('enableCustomDrawOrderFabric', false);
192
+ export const useNativeViewConfigsInBridgelessMode: Getter<boolean> = createNativeFlagGetter('useNativeViewConfigsInBridgelessMode', false);
133
193
  /**
134
- * Attempt at fixing a crash related to subview clipping on Android. This is a kill switch for the fix
194
+ * When enabled, cloning shadow nodes within react native will update the reference held by the current JS fiber tree.
135
195
  */
136
- export const enableFixForClippedSubviewsCrash: Getter<boolean> = createNativeFlagGetter('enableFixForClippedSubviewsCrash', false);
196
+ export const useRuntimeShadowNodeReferenceUpdate: Getter<boolean> = createNativeFlagGetter('useRuntimeShadowNodeReferenceUpdate', false);
137
197
  /**
138
- * Flag determining if the C++ implementation of InspectorPackagerConnection should be used instead of the per-platform one. This flag is global and should not be changed across React Host lifetimes.
198
+ * When enabled, cloning shadow nodes during layout will update the reference held by the current JS fiber tree.
139
199
  */
140
- export const inspectorEnableCxxInspectorPackagerConnection: Getter<boolean> = createNativeFlagGetter('inspectorEnableCxxInspectorPackagerConnection', false);
200
+ export const useRuntimeShadowNodeReferenceUpdateOnLayout: Getter<boolean> = createNativeFlagGetter('useRuntimeShadowNodeReferenceUpdateOnLayout', false);
141
201
  /**
142
- * Flag determining if the modern CDP backend should be enabled. This flag is global and should not be changed across React Host lifetimes.
202
+ * When enabled, it uses optimised state reconciliation algorithm.
143
203
  */
144
- export const inspectorEnableModernCDPRegistry: Getter<boolean> = createNativeFlagGetter('inspectorEnableModernCDPRegistry', false);
204
+ export const useStateAlignmentMechanism: Getter<boolean> = createNativeFlagGetter('useStateAlignmentMechanism', false);
145
205
 
146
206
  /**
147
207
  * Overrides the feature flags with the provided methods.
@@ -13,7 +13,7 @@ import type {
13
13
  ReactNativeFeatureFlagsJsOnlyOverrides,
14
14
  } from './ReactNativeFeatureFlags';
15
15
 
16
- import NativeReactNativeFeatureFlags from './NativeReactNativeFeatureFlags';
16
+ import NativeReactNativeFeatureFlags from './specs/NativeReactNativeFeatureFlags';
17
17
 
18
18
  const accessedFeatureFlags: Set<string> = new Set();
19
19
  let overrides: ?ReactNativeFeatureFlagsJsOnlyOverrides;
@@ -29,7 +29,6 @@ function createGetter<T: boolean | number | string>(
29
29
 
30
30
  return () => {
31
31
  if (cachedValue == null) {
32
- accessedFeatureFlags.add(configName);
33
32
  cachedValue = customValueGetter() ?? defaultValue;
34
33
  }
35
34
  return cachedValue;
@@ -44,7 +43,10 @@ export function createJavaScriptFlagGetter<
44
43
  ): Getter<ReturnType<ReactNativeFeatureFlagsJsOnly[K]>> {
45
44
  return createGetter(
46
45
  configName,
47
- () => overrides?.[configName]?.(),
46
+ () => {
47
+ accessedFeatureFlags.add(configName);
48
+ return overrides?.[configName]?.();
49
+ },
48
50
  defaultValue,
49
51
  );
50
52
  }
@@ -57,7 +59,13 @@ export function createNativeFlagGetter<K: $Keys<NativeFeatureFlags>>(
57
59
  ): Getter<ReturnType<$NonMaybeType<NativeFeatureFlags[K]>>> {
58
60
  return createGetter(
59
61
  configName,
60
- () => NativeReactNativeFeatureFlags?.[configName]?.(),
62
+ () => {
63
+ const valueFromNative = NativeReactNativeFeatureFlags?.[configName]?.();
64
+ if (valueFromNative == null) {
65
+ logUnavailableNativeModuleError(configName);
66
+ }
67
+ return valueFromNative;
68
+ },
61
69
  defaultValue,
62
70
  );
63
71
  }
@@ -82,3 +90,14 @@ export function setOverrides(
82
90
 
83
91
  overrides = newOverrides;
84
92
  }
93
+
94
+ const reportedConfigNames: Set<string> = new Set();
95
+
96
+ function logUnavailableNativeModuleError(configName: string): void {
97
+ if (!reportedConfigNames.has(configName)) {
98
+ reportedConfigNames.add(configName);
99
+ console.error(
100
+ `Could not access feature flag '${configName}' because native module method was not available`,
101
+ );
102
+ }
103
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @generated SignedSource<<6922b452333fc62a263bd77d42afbbbe>>
8
+ * @flow strict-local
9
+ */
10
+
11
+ /**
12
+ * IMPORTANT: Do NOT modify this file directly.
13
+ *
14
+ * To change the definition of the flags, edit
15
+ * packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js.
16
+ *
17
+ * To regenerate this code, run the following script from the repo root:
18
+ * yarn featureflags-update
19
+ */
20
+
21
+ import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';
22
+
23
+ import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';
24
+
25
+ export interface Spec extends TurboModule {
26
+ +commonTestFlag?: () => boolean;
27
+ +allowCollapsableChildren?: () => boolean;
28
+ +allowRecursiveCommitsWithSynchronousMountOnAndroid?: () => boolean;
29
+ +batchRenderingUpdatesInEventLoop?: () => boolean;
30
+ +destroyFabricSurfacesInReactInstanceManager?: () => boolean;
31
+ +enableBackgroundExecutor?: () => boolean;
32
+ +enableCleanTextInputYogaNode?: () => boolean;
33
+ +enableGranularShadowTreeStateReconciliation?: () => boolean;
34
+ +enableMicrotasks?: () => boolean;
35
+ +enableSynchronousStateUpdates?: () => boolean;
36
+ +enableUIConsistency?: () => boolean;
37
+ +fixStoppedSurfaceRemoveDeleteTreeUIFrameCallbackLeak?: () => boolean;
38
+ +forceBatchingMountItemsOnAndroid?: () => boolean;
39
+ +fuseboxEnabledDebug?: () => boolean;
40
+ +fuseboxEnabledRelease?: () => boolean;
41
+ +lazyAnimationCallbacks?: () => boolean;
42
+ +preventDoubleTextMeasure?: () => boolean;
43
+ +setAndroidLayoutDirection?: () => boolean;
44
+ +useImmediateExecutorInAndroidBridgeless?: () => boolean;
45
+ +useModernRuntimeScheduler?: () => boolean;
46
+ +useNativeViewConfigsInBridgelessMode?: () => boolean;
47
+ +useRuntimeShadowNodeReferenceUpdate?: () => boolean;
48
+ +useRuntimeShadowNodeReferenceUpdateOnLayout?: () => boolean;
49
+ +useStateAlignmentMechanism?: () => boolean;
50
+ }
51
+
52
+ const NativeReactNativeFeatureFlags: ?Spec = TurboModuleRegistry.get<Spec>(
53
+ 'NativeReactNativeFeatureFlagsCxx',
54
+ );
55
+
56
+ export default NativeReactNativeFeatureFlags;