react-native-windows 0.76.3 → 0.77.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 (367) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/animations/Animation.js +60 -25
  8. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  9. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  10. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  11. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  13. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  14. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  17. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  23. package/Libraries/Animated/useAnimatedProps.js +41 -35
  24. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  26. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  27. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  28. package/Libraries/Components/Button.js +9 -4
  29. package/Libraries/Components/Button.windows.js +19 -5
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  31. package/Libraries/Components/Glyph/Glyph.js +2 -1
  32. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  33. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  34. package/Libraries/Components/Pressable/Pressable.js +4 -4
  35. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  36. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  37. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  38. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  39. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  40. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  41. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  42. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  43. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  44. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  45. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  46. package/Libraries/Components/Switch/Switch.js +8 -6
  47. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  48. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  49. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  50. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  51. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  52. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  53. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  54. package/Libraries/Components/TextInput/TextInput.js +37 -13
  55. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  56. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  57. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  58. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  59. package/Libraries/Components/Touchable/Position.js +7 -2
  60. package/Libraries/Components/Touchable/Touchable.js +4 -0
  61. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  62. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  63. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  64. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  65. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  66. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  67. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  68. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  69. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  70. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  71. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  72. package/Libraries/Components/View/View.js +4 -4
  73. package/Libraries/Components/View/View.windows.js +12 -5
  74. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  75. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  76. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  77. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  78. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  79. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  80. package/Libraries/Core/ExceptionsManager.js +50 -29
  81. package/Libraries/Core/ReactNativeVersion.js +3 -3
  82. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  83. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  84. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  85. package/Libraries/Core/setUpErrorHandling.js +20 -18
  86. package/Libraries/Core/setUpReactDevTools.js +107 -8
  87. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  88. package/Libraries/Core/setUpTimers.js +21 -18
  89. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  90. package/Libraries/Image/AssetSourceResolver.js +12 -1
  91. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  92. package/Libraries/Image/Image.android.js +1 -5
  93. package/Libraries/Image/Image.d.ts +20 -29
  94. package/Libraries/Image/Image.ios.js +0 -2
  95. package/Libraries/Image/Image.windows.js +5 -1
  96. package/Libraries/Image/ImageBackground.js +2 -5
  97. package/Libraries/Image/ImageProps.js +7 -6
  98. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  99. package/Libraries/Image/ImageResizeMode.js +4 -1
  100. package/Libraries/Image/ImageSource.d.ts +0 -2
  101. package/Libraries/Image/ImageSource.js +0 -2
  102. package/Libraries/Image/ImageTypes.flow.js +11 -9
  103. package/Libraries/Image/ImageUtils.js +6 -3
  104. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  105. package/Libraries/Inspector/Inspector.js +1 -0
  106. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  107. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  108. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  109. package/Libraries/Interaction/InteractionManager.js +6 -1
  110. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  111. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  112. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +1 -2
  114. package/Libraries/Lists/FlatList.js +2 -2
  115. package/Libraries/Lists/SectionListModern.js +7 -7
  116. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  117. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  118. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  119. package/Libraries/LogBox/LogBox.js +18 -5
  120. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  121. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  122. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  125. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  129. package/Libraries/Modal/Modal.d.ts +12 -0
  130. package/Libraries/Modal/Modal.js +31 -4
  131. package/Libraries/Modal/Modal.windows.js +18 -0
  132. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  133. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  134. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  135. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  136. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  137. package/Libraries/Network/FormData.js +11 -3
  138. package/Libraries/Network/XHRInterceptor.js +63 -14
  139. package/Libraries/Network/XMLHttpRequest.js +26 -1
  140. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  141. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  142. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  143. package/Libraries/Pressability/HoverState.js +2 -0
  144. package/Libraries/Pressability/Pressability.js +2 -3
  145. package/Libraries/Pressability/Pressability.windows.js +2 -3
  146. package/Libraries/Pressability/usePressability.js +4 -1
  147. package/Libraries/ReactNative/AppContainer.js +1 -1
  148. package/Libraries/ReactNative/AppRegistry.js +1 -11
  149. package/Libraries/ReactNative/DisplayMode.js +1 -1
  150. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  151. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  152. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  153. package/Libraries/ReactNative/renderApplication.js +9 -8
  154. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  155. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  156. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  157. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  158. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  159. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  160. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  161. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  162. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  163. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  164. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  165. package/Libraries/StyleSheet/processTransform.js +3 -34
  166. package/Libraries/Text/Text.js +248 -249
  167. package/Libraries/Text/Text.windows.js +298 -292
  168. package/Libraries/Text/TextNativeComponent.js +0 -1
  169. package/Libraries/Text/TextProps.windows.js +2 -0
  170. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  171. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  172. package/Libraries/Types/CoreEventTypes.js +4 -6
  173. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  174. package/Libraries/Utilities/Appearance.js +3 -1
  175. package/Libraries/Utilities/BackHandler.android.js +6 -18
  176. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  177. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  178. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  179. package/Libraries/Utilities/HMRClient.js +3 -4
  180. package/Libraries/Utilities/Platform.flow.js +2 -2
  181. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  182. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  183. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  184. package/Libraries/Utilities/useMergeRefs.js +26 -7
  185. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  186. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  187. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  188. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  189. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  190. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  191. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  192. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  193. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  194. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  196. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  198. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  200. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  201. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  203. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  204. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  205. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  206. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  207. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  208. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  209. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  210. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  211. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  212. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  213. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  214. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  215. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  222. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  223. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  228. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  229. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  230. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  231. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  232. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  233. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  234. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  236. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  237. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  239. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  240. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  242. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  245. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  248. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  249. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  250. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  256. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  257. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  259. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  260. package/PropertySheets/Bundle.Common.targets +1 -1
  261. package/PropertySheets/Bundle.props +3 -0
  262. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  263. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  264. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  265. package/PropertySheets/React.Cpp.props +6 -0
  266. package/ReactCommon/ReactCommon.vcxproj +5 -0
  267. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
  275. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  276. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  277. package/Shared/InspectorPackagerConnection.cpp +3 -6
  278. package/Shared/InspectorPackagerConnection.h +2 -2
  279. package/Shared/InstanceManager.h +1 -1
  280. package/Shared/OInstance.h +1 -1
  281. package/Shared/Shared.vcxitems +17 -2
  282. package/Shared/Shared.vcxitems.filters +3 -1
  283. package/Shared/TurboModuleManager.cpp +29 -4
  284. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  285. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  286. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  287. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  288. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  289. package/codegen/NativePerformanceSpec.g.h +127 -3
  290. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  291. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  292. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  293. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  294. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  295. package/codegen/react/components/rnwcore/Props.h +1 -0
  296. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  297. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  298. package/codegen/react/components/rnwcore/States.h +0 -12
  299. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  300. package/codegen/rnwcoreJSI.h +942 -511
  301. package/index.js +10 -3
  302. package/index.windows.js +10 -3
  303. package/jest/setup.js +36 -1
  304. package/just-task.js +15 -0
  305. package/package.json +22 -22
  306. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  307. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  308. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  309. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  310. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  311. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  312. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  313. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  314. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  315. package/src/private/devmenu/DevMenu.d.ts +20 -0
  316. package/src/private/devmenu/DevMenu.js +31 -0
  317. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  318. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  319. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  320. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  321. package/src/private/setup/setUpDOM.js +14 -6
  322. package/src/private/setup/setUpMutationObserver.js +5 -0
  323. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  324. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  325. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  326. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  327. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  328. package/src/private/specs/modules/NativeAppearance.js +4 -10
  329. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  330. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  331. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  332. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  333. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  334. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  335. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  336. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  337. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  338. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  339. package/src/private/webapis/performance/EventTiming.js +13 -8
  340. package/src/private/webapis/performance/Performance.js +66 -73
  341. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  342. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  343. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  344. package/src/private/webapis/performance/UserTiming.js +11 -7
  345. package/src/private/webapis/performance/Utilities.js +18 -0
  346. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  347. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  348. package/templates/cpp-lib/template.config.js +13 -7
  349. package/templates/templateUtils.js +10 -0
  350. package/types/index.d.ts +1 -1
  351. package/types/public/ReactNativeTypes.d.ts +4 -8
  352. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  353. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  356. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  357. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  358. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  359. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  360. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  361. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  362. package/src/private/components/useSyncOnScroll.js +0 -48
  363. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  364. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  365. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  366. package/types/experimental.d.ts +0 -59
  367. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -10,113 +10,21 @@
10
10
 
11
11
  import type {
12
12
  HostComponent,
13
- PartialViewConfig,
13
+ HostInstance,
14
14
  } from '../../Renderer/shims/ReactNativeTypes';
15
15
 
16
16
  import * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';
17
17
  import codegenNativeCommands from '../../Utilities/codegenNativeCommands';
18
- import Platform from '../../Utilities/Platform';
19
18
  import {type ViewProps as Props} from './ViewPropTypes';
20
- import * as React from 'react';
21
-
22
- export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
23
- Platform.OS === 'android'
24
- ? {
25
- uiViewClassName: 'RCTView',
26
- validAttributes: {
27
- // ReactClippingViewManager @ReactProps
28
- removeClippedSubviews: true,
29
-
30
- // ReactViewManager @ReactProps
31
- accessible: true,
32
- hasTVPreferredFocus: true,
33
- nextFocusDown: true,
34
- nextFocusForward: true,
35
- nextFocusLeft: true,
36
- nextFocusRight: true,
37
- nextFocusUp: true,
38
-
39
- borderRadius: true,
40
- borderTopLeftRadius: true,
41
- borderTopRightRadius: true,
42
- borderBottomRightRadius: true,
43
- borderBottomLeftRadius: true,
44
- borderTopStartRadius: true,
45
- borderTopEndRadius: true,
46
- borderBottomStartRadius: true,
47
- borderBottomEndRadius: true,
48
- borderEndEndRadius: true,
49
- borderEndStartRadius: true,
50
- borderStartEndRadius: true,
51
- borderStartStartRadius: true,
52
- borderStyle: true,
53
- hitSlop: true,
54
- pointerEvents: true,
55
- nativeBackgroundAndroid: true,
56
- nativeForegroundAndroid: true,
57
- needsOffscreenAlphaCompositing: true,
58
-
59
- borderWidth: true,
60
- borderLeftWidth: true,
61
- borderRightWidth: true,
62
- borderTopWidth: true,
63
- borderBottomWidth: true,
64
- borderStartWidth: true,
65
- borderEndWidth: true,
66
-
67
- borderColor: {
68
- process: require('../../StyleSheet/processColor').default,
69
- },
70
- borderLeftColor: {
71
- process: require('../../StyleSheet/processColor').default,
72
- },
73
- borderRightColor: {
74
- process: require('../../StyleSheet/processColor').default,
75
- },
76
- borderTopColor: {
77
- process: require('../../StyleSheet/processColor').default,
78
- },
79
- borderBottomColor: {
80
- process: require('../../StyleSheet/processColor').default,
81
- },
82
- borderStartColor: {
83
- process: require('../../StyleSheet/processColor').default,
84
- },
85
- borderEndColor: {
86
- process: require('../../StyleSheet/processColor').default,
87
- },
88
- borderBlockColor: {
89
- process: require('../../StyleSheet/processColor').default,
90
- },
91
- borderBlockEndColor: {
92
- process: require('../../StyleSheet/processColor').default,
93
- },
94
- borderBlockStartColor: {
95
- process: require('../../StyleSheet/processColor').default,
96
- },
97
- focusable: true,
98
- overflow: true,
99
- backfaceVisibility: true,
100
- experimental_layoutConformance: true,
101
- },
102
- }
103
- : {
104
- uiViewClassName: 'RCTView',
105
- };
106
19
 
107
20
  const ViewNativeComponent: HostComponent<Props> =
108
- NativeComponentRegistry.get<Props>('RCTView', () => __INTERNAL_VIEW_CONFIG);
21
+ NativeComponentRegistry.get<Props>('RCTView', () => ({
22
+ uiViewClassName: 'RCTView',
23
+ }));
109
24
 
110
25
  interface NativeCommands {
111
- +hotspotUpdate: (
112
- viewRef: React.ElementRef<HostComponent<mixed>>,
113
- x: number,
114
- y: number,
115
- ) => void;
116
- +setPressed: (
117
- viewRef: React.ElementRef<HostComponent<mixed>>,
118
- pressed: boolean,
119
- ) => void;
26
+ +hotspotUpdate: (viewRef: HostInstance, x: number, y: number) => void;
27
+ +setPressed: (viewRef: HostInstance, pressed: boolean) => void;
120
28
  }
121
29
 
122
30
  export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
@@ -318,4 +318,11 @@ export interface ViewProps
318
318
  * Used to reference react managed views from native code.
319
319
  */
320
320
  nativeID?: string | undefined;
321
+
322
+ /**
323
+ * Contols whether this view, and its transitive children, are laid in a way
324
+ * consistent with web browsers ('strict'), or consistent with existing
325
+ * React Native code which may rely on incorrect behavior ('classic').
326
+ */
327
+ experimental_layoutConformance?: 'strict' | 'classic' | undefined;
321
328
  }
@@ -567,9 +567,6 @@ export type ViewProps = $ReadOnly<{|
567
567
  * optimization. Set this property to `false` to disable this optimization and
568
568
  * ensure that this `View` exists in the native view hierarchy.
569
569
  *
570
- * @platform android
571
- * In Fabric, this prop is used in ios as well.
572
- *
573
570
  * See https://reactnative.dev/docs/view#collapsable
574
571
  */
575
572
  collapsable?: ?boolean,
@@ -626,6 +626,8 @@ export type ViewProps = $ReadOnly<{|
626
626
  * See https://reactnative.dev/docs/view#aria-hidden
627
627
  */
628
628
  'aria-hidden'?: ?boolean,
629
+ 'aria-multiselectable'?: ?boolean, // Windows
630
+ 'aria-required'?: ?boolean, // Windows
629
631
 
630
632
  /**
631
633
  * Views that are only used to layout their children or otherwise don't draw
@@ -633,9 +635,6 @@ export type ViewProps = $ReadOnly<{|
633
635
  * optimization. Set this property to `false` to disable this optimization and
634
636
  * ensure that this `View` exists in the native view hierarchy.
635
637
  *
636
- * @platform android
637
- * In Fabric, this prop is used in ios as well.
638
- *
639
638
  * See https://reactnative.dev/docs/view#collapsable
640
639
  */
641
640
  collapsable?: ?boolean,
@@ -22,10 +22,11 @@ type ExceptionDecorator = ExceptionData => ExceptionData;
22
22
  let userExceptionDecorator: ?ExceptionDecorator;
23
23
  let inUserExceptionDecorator = false;
24
24
 
25
- // This Symbol is used to decorate an ExtendedError with extra data in select usecases.
25
+ // This string is used to decorate an ExtendedError with extra data in select usecases.
26
26
  // Note that data passed using this method should be strictly contained,
27
27
  // as data that's not serializable/too large may cause issues with passing the error to the native code.
28
- const decoratedExtraDataKey: symbol = Symbol('decoratedExtraDataKey');
28
+ // TODO(T204185517): We should use a Symbol for this, but jsi through jsc doesn't support it yet.
29
+ const decoratedExtraDataKey = 'RN$ErrorExtraDataKey';
29
30
 
30
31
  /**
31
32
  * Allows the app to add information to the exception report before it is sent
@@ -120,6 +121,12 @@ function reportException(
120
121
  const NativeExceptionsManager =
121
122
  require('./NativeExceptionsManager').default;
122
123
  if (NativeExceptionsManager) {
124
+ if (isFatal) {
125
+ if (global.RN$hasHandledFatalException?.()) {
126
+ return;
127
+ }
128
+ global.RN$notifyOfFatalException?.();
129
+ }
123
130
  NativeExceptionsManager.reportException(data);
124
131
  }
125
132
  }
@@ -140,24 +147,31 @@ let inExceptionHandler = false;
140
147
  * Logs exceptions to the (native) console and displays them
141
148
  */
142
149
  function handleException(e: mixed, isFatal: boolean) {
143
- let error: Error;
144
- if (e instanceof Error) {
145
- error = e;
146
- } else {
147
- // Workaround for reporting errors caused by `throw 'some string'`
148
- // Unfortunately there is no way to figure out the stacktrace in this
149
- // case, so if you ended up here trying to trace an error, look for
150
- // `throw '<error message>'` somewhere in your codebase.
151
- error = new SyntheticError(e);
152
- }
153
- try {
154
- inExceptionHandler = true;
155
- /* $FlowFixMe[class-object-subtyping] added when improving typing for this
156
- * parameters */
157
- // $FlowFixMe[incompatible-call]
158
- reportException(error, isFatal, /*reportToConsole*/ true);
159
- } finally {
160
- inExceptionHandler = false;
150
+ // TODO(T196834299): We should really use a c++ turbomodule for this
151
+ const reportToConsole = true;
152
+ if (
153
+ !global.RN$handleException ||
154
+ !global.RN$handleException(e, isFatal, reportToConsole)
155
+ ) {
156
+ let error: Error;
157
+ if (e instanceof Error) {
158
+ error = e;
159
+ } else {
160
+ // Workaround for reporting errors caused by `throw 'some string'`
161
+ // Unfortunately there is no way to figure out the stacktrace in this
162
+ // case, so if you ended up here trying to trace an error, look for
163
+ // `throw '<error message>'` somewhere in your codebase.
164
+ error = new SyntheticError(e);
165
+ }
166
+ try {
167
+ inExceptionHandler = true;
168
+ /* $FlowFixMe[class-object-subtyping] added when improving typing for this
169
+ * parameters */
170
+ // $FlowFixMe[incompatible-call]
171
+ reportException(error, isFatal, reportToConsole);
172
+ } finally {
173
+ inExceptionHandler = false;
174
+ }
161
175
  }
162
176
  }
163
177
 
@@ -169,7 +183,7 @@ function reactConsoleErrorHandler(...args) {
169
183
  if (!console.reportErrorsAsExceptions) {
170
184
  return;
171
185
  }
172
- if (inExceptionHandler) {
186
+ if (inExceptionHandler || global.RN$inExceptionHandler?.()) {
173
187
  // The fundamental trick here is that are multiple entry point to logging errors:
174
188
  // (see D19743075 for more background)
175
189
  //
@@ -223,14 +237,21 @@ function reactConsoleErrorHandler(...args) {
223
237
  error.name = 'console.error';
224
238
  }
225
239
 
226
- reportException(
227
- /* $FlowFixMe[class-object-subtyping] added when improving typing for this
228
- * parameters */
229
- // $FlowFixMe[incompatible-call]
230
- error,
231
- false, // isFatal
232
- false, // reportToConsole
233
- );
240
+ const isFatal = false;
241
+ const reportToConsole = false;
242
+ if (
243
+ !global.RN$handleException ||
244
+ !global.RN$handleException(error, isFatal, reportToConsole)
245
+ ) {
246
+ reportException(
247
+ /* $FlowFixMe[class-object-subtyping] added when improving typing for this
248
+ * parameters */
249
+ // $FlowFixMe[incompatible-call]
250
+ error,
251
+ isFatal,
252
+ reportToConsole,
253
+ );
254
+ }
234
255
  }
235
256
 
236
257
  /**
@@ -15,9 +15,9 @@ const version: $ReadOnly<{
15
15
  prerelease: string | null,
16
16
  }> = {
17
17
  major: 0,
18
- minor: 76,
19
- patch: 2,
20
- prerelease: null,
18
+ minor: 77,
19
+ patch: 0,
20
+ prerelease: 'rc.4',
21
21
  };
22
22
 
23
23
  module.exports = {version};
@@ -14,7 +14,6 @@ import typeof NativeExceptionsManager from '../NativeExceptionsManager';
14
14
  export default ({
15
15
  reportFatalException: jest.fn(),
16
16
  reportSoftException: jest.fn(),
17
- updateExceptionMessage: jest.fn(),
18
17
  dismissRedbox: jest.fn(),
19
18
  reportException: jest.fn(),
20
19
  }: NativeExceptionsManager);
@@ -16,16 +16,7 @@ if (global.RN$Bridgeless === true && global.RN$registerCallableModule) {
16
16
  } else {
17
17
  const BatchedBridge = require('../BatchedBridge/BatchedBridge');
18
18
  registerModule = (
19
- moduleName:
20
- | $TEMPORARY$string<'GlobalPerformanceLogger'>
21
- | $TEMPORARY$string<'HMRClient'>
22
- | $TEMPORARY$string<'HeapCapture'>
23
- | $TEMPORARY$string<'JSTimers'>
24
- | $TEMPORARY$string<'RCTDeviceEventEmitter'>
25
- | $TEMPORARY$string<'RCTLog'>
26
- | $TEMPORARY$string<'RCTNativeAppEventEmitter'>
27
- | $TEMPORARY$string<'SamplingProfiler'>
28
- | $TEMPORARY$string<'Systrace'>,
19
+ moduleName: string,
29
20
  /* $FlowFixMe[missing-local-annot] The type annotation(s) required by
30
21
  * Flow's LTI update could not be added via codemod */
31
22
  factory,
@@ -42,13 +42,9 @@ if (__DEV__) {
42
42
  if (!Platform.isTesting) {
43
43
  const HMRClient = require('../Utilities/HMRClient');
44
44
 
45
- // [0.76 only] When under React Native DevTools, log "JavaScript logs will
46
- // be removed from Metro..." warning, and continue to forward logs.
47
45
  if (global.__FUSEBOX_HAS_FULL_CONSOLE_SUPPORT__) {
48
46
  HMRClient.unstable_notifyFuseboxConsoleEnabled();
49
- }
50
-
51
- if (console._isPolyfilled) {
47
+ } else if (console._isPolyfilled) {
52
48
  // We assume full control over the console and send JavaScript logs to Metro.
53
49
  [
54
50
  'trace',
@@ -10,24 +10,26 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- /**
14
- * Sets up the console and exception handling (redbox) for React Native.
15
- * You can use this module directly, or just require InitializeCore.
16
- */
17
- const ExceptionsManager = require('./ExceptionsManager');
18
- ExceptionsManager.installConsoleErrorReporter();
13
+ if (global.RN$useAlwaysAvailableJSErrorHandling !== true) {
14
+ /**
15
+ * Sets up the console and exception handling (redbox) for React Native.
16
+ * You can use this module directly, or just require InitializeCore.
17
+ */
18
+ const ExceptionsManager = require('./ExceptionsManager');
19
+ ExceptionsManager.installConsoleErrorReporter();
19
20
 
20
- // Set up error handler
21
- if (!global.__fbDisableExceptionsManager) {
22
- const handleError = (e: mixed, isFatal: boolean) => {
23
- try {
24
- ExceptionsManager.handleException(e, isFatal);
25
- } catch (ee) {
26
- console.log('Failed to print error: ', ee.message);
27
- throw e;
28
- }
29
- };
21
+ // Set up error handler
22
+ if (!global.__fbDisableExceptionsManager) {
23
+ const handleError = (e: mixed, isFatal: boolean) => {
24
+ try {
25
+ ExceptionsManager.handleException(e, isFatal);
26
+ } catch (ee) {
27
+ console.log('Failed to print error: ', ee.message);
28
+ throw e;
29
+ }
30
+ };
30
31
 
31
- const ErrorUtils = require('../vendor/core/ErrorUtils');
32
- ErrorUtils.setGlobalHandler(handleError);
32
+ const ErrorUtils = require('../vendor/core/ErrorUtils');
33
+ ErrorUtils.setGlobalHandler(handleError);
34
+ }
33
35
  }
@@ -10,14 +10,44 @@
10
10
 
11
11
  'use strict';
12
12
 
13
- import type {Domain} from '../../src/private/fusebox/setUpFuseboxReactDevToolsDispatcher';
13
+ import type {Domain} from '../../src/private/debugging/setUpFuseboxReactDevToolsDispatcher';
14
+ import type {Spec as NativeReactDevToolsRuntimeSettingsModuleSpec} from '../../src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule';
14
15
 
15
16
  if (__DEV__) {
16
17
  // Register dispatcher on global, which can be used later by Chrome DevTools frontend
17
- require('../../src/private/fusebox/setUpFuseboxReactDevToolsDispatcher');
18
+ require('../../src/private/debugging/setUpFuseboxReactDevToolsDispatcher');
19
+ const {
20
+ initialize,
21
+ connectToDevTools,
22
+ connectWithCustomMessagingProtocol,
23
+ } = require('react-devtools-core');
24
+
25
+ const reactDevToolsSettingsManager = require('../../src/private/debugging/ReactDevToolsSettingsManager');
26
+ const serializedHookSettings =
27
+ reactDevToolsSettingsManager.getGlobalHookSettings();
28
+ const maybeReactDevToolsRuntimeSettingsModuleModule =
29
+ require('../../src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule').default;
30
+
31
+ let hookSettings = null;
32
+ if (serializedHookSettings != null) {
33
+ try {
34
+ const parsedSettings = JSON.parse(serializedHookSettings);
35
+ hookSettings = parsedSettings;
36
+ } catch {
37
+ console.error(
38
+ 'Failed to parse persisted React DevTools hook settings. React DevTools will be initialized with default settings.',
39
+ );
40
+ }
41
+ }
42
+
43
+ const {
44
+ isProfiling: shouldStartProfilingNow,
45
+ profilingSettings: initialProfilingSettings,
46
+ } = readReloadAndProfileConfig(maybeReactDevToolsRuntimeSettingsModuleModule);
18
47
 
19
48
  // Install hook before React is loaded.
20
- const reactDevTools = require('react-devtools-core');
49
+ initialize(hookSettings, shouldStartProfilingNow, initialProfilingSettings);
50
+
21
51
  // This should be defined in DEV, otherwise error is expected.
22
52
  const fuseboxReactDevToolsDispatcher =
23
53
  global.__FUSEBOX_REACT_DEVTOOLS_DISPATCHER__;
@@ -25,9 +55,14 @@ if (__DEV__) {
25
55
  fuseboxReactDevToolsDispatcher.BINDING_NAME;
26
56
 
27
57
  const ReactNativeStyleAttributes = require('../Components/View/ReactNativeStyleAttributes');
28
- const devToolsSettingsManager = require('../DevToolsSettings/DevToolsSettingsManager');
29
58
  const resolveRNStyle = require('../StyleSheet/flattenStyle');
30
59
 
60
+ function handleReactDevToolsSettingsUpdate(settings: Object) {
61
+ reactDevToolsSettingsManager.setGlobalHookSettings(
62
+ JSON.stringify(settings),
63
+ );
64
+ }
65
+
31
66
  let disconnect = null;
32
67
  function disconnectBackendFromReactDevToolsInFuseboxIfNeeded() {
33
68
  if (disconnect != null) {
@@ -37,7 +72,15 @@ if (__DEV__) {
37
72
  }
38
73
 
39
74
  function connectToReactDevToolsInFusebox(domain: Domain) {
40
- disconnect = reactDevTools.connectWithCustomMessagingProtocol({
75
+ const {
76
+ isReloadAndProfileSupported,
77
+ isProfiling,
78
+ onReloadAndProfile,
79
+ onReloadAndProfileFlagsReset,
80
+ } = readReloadAndProfileConfig(
81
+ maybeReactDevToolsRuntimeSettingsModuleModule,
82
+ );
83
+ disconnect = connectWithCustomMessagingProtocol({
41
84
  onSubscribe: listener => {
42
85
  domain.onMessage.addEventListener(listener);
43
86
  },
@@ -47,9 +90,13 @@ if (__DEV__) {
47
90
  onMessage: (event, payload) => {
48
91
  domain.sendMessage({event, payload});
49
92
  },
50
- settingsManager: devToolsSettingsManager,
51
93
  nativeStyleEditorValidAttributes: Object.keys(ReactNativeStyleAttributes),
52
94
  resolveRNStyle,
95
+ onSettingsUpdated: handleReactDevToolsSettingsUpdate,
96
+ isReloadAndProfileSupported,
97
+ isProfiling,
98
+ onReloadAndProfile,
99
+ onReloadAndProfileFlagsReset,
53
100
  });
54
101
  }
55
102
 
@@ -101,14 +148,26 @@ if (__DEV__) {
101
148
  isWebSocketOpen = true;
102
149
  });
103
150
 
104
- reactDevTools.connectToDevTools({
151
+ const {
152
+ isReloadAndProfileSupported,
153
+ isProfiling,
154
+ onReloadAndProfile,
155
+ onReloadAndProfileFlagsReset,
156
+ } = readReloadAndProfileConfig(
157
+ maybeReactDevToolsRuntimeSettingsModuleModule,
158
+ );
159
+ connectToDevTools({
105
160
  isAppActive,
106
161
  resolveRNStyle,
107
162
  nativeStyleEditorValidAttributes: Object.keys(
108
163
  ReactNativeStyleAttributes,
109
164
  ),
110
165
  websocket: ws,
111
- devToolsSettingsManager,
166
+ onSettingsUpdated: handleReactDevToolsSettingsUpdate,
167
+ isReloadAndProfileSupported,
168
+ isProfiling,
169
+ onReloadAndProfile,
170
+ onReloadAndProfileFlagsReset,
112
171
  });
113
172
  }
114
173
  }
@@ -140,3 +199,43 @@ if (__DEV__) {
140
199
  );
141
200
  connectToWSBasedReactDevToolsFrontend(); // Try connecting once on load
142
201
  }
202
+
203
+ function readReloadAndProfileConfig(
204
+ maybeModule: ?NativeReactDevToolsRuntimeSettingsModuleSpec,
205
+ ) {
206
+ const isReloadAndProfileSupported = maybeModule != null;
207
+ const config = maybeModule?.getReloadAndProfileConfig();
208
+ const isProfiling = config?.shouldReloadAndProfile === true;
209
+ const profilingSettings = {
210
+ recordChangeDescriptions: config?.recordChangeDescriptions === true,
211
+ recordTimeline: false,
212
+ };
213
+ const onReloadAndProfile = (recordChangeDescriptions: boolean) => {
214
+ if (maybeModule == null) {
215
+ return;
216
+ }
217
+
218
+ maybeModule.setReloadAndProfileConfig({
219
+ shouldReloadAndProfile: true,
220
+ recordChangeDescriptions,
221
+ });
222
+ };
223
+ const onReloadAndProfileFlagsReset = () => {
224
+ if (maybeModule == null) {
225
+ return;
226
+ }
227
+
228
+ maybeModule.setReloadAndProfileConfig({
229
+ shouldReloadAndProfile: false,
230
+ recordChangeDescriptions: false,
231
+ });
232
+ };
233
+
234
+ return {
235
+ isReloadAndProfileSupported,
236
+ isProfiling,
237
+ profilingSettings,
238
+ onReloadAndProfile,
239
+ onReloadAndProfileFlagsReset,
240
+ };
241
+ }
@@ -42,6 +42,7 @@ function __fetchSegment(
42
42
  const error = new Error(errorObject.message);
43
43
  (error: any).code = errorObject.code; // flowlint-line unclear-type: off
44
44
  callback(error);
45
+ return;
45
46
  }
46
47
 
47
48
  callback(null);
@@ -21,6 +21,17 @@ if (__DEV__) {
21
21
  }
22
22
  }
23
23
 
24
+ const isEventLoopEnabled = (() => {
25
+ if (NativeReactNativeFeatureFlags == null) {
26
+ return false;
27
+ }
28
+
29
+ return (
30
+ ReactNativeFeatureFlags.enableBridgelessArchitecture() &&
31
+ !ReactNativeFeatureFlags.disableEventLoopOnBridgeless()
32
+ );
33
+ })();
34
+
24
35
  // In bridgeless mode, timers are host functions installed from cpp.
25
36
  if (global.RN$Bridgeless !== true) {
26
37
  /**
@@ -29,14 +40,14 @@ if (global.RN$Bridgeless !== true) {
29
40
  */
30
41
  const defineLazyTimer = (
31
42
  name:
32
- | $TEMPORARY$string<'cancelAnimationFrame'>
33
- | $TEMPORARY$string<'cancelIdleCallback'>
34
- | $TEMPORARY$string<'clearInterval'>
35
- | $TEMPORARY$string<'clearTimeout'>
36
- | $TEMPORARY$string<'requestAnimationFrame'>
37
- | $TEMPORARY$string<'requestIdleCallback'>
38
- | $TEMPORARY$string<'setInterval'>
39
- | $TEMPORARY$string<'setTimeout'>,
43
+ | 'cancelAnimationFrame'
44
+ | 'cancelIdleCallback'
45
+ | 'clearInterval'
46
+ | 'clearTimeout'
47
+ | 'requestAnimationFrame'
48
+ | 'requestIdleCallback'
49
+ | 'setInterval'
50
+ | 'setTimeout',
40
51
  ) => {
41
52
  polyfillGlobal(name, () => require('./Timers/JSTimers')[name]);
42
53
  };
@@ -48,12 +59,7 @@ if (global.RN$Bridgeless !== true) {
48
59
  defineLazyTimer('cancelAnimationFrame');
49
60
  defineLazyTimer('requestIdleCallback');
50
61
  defineLazyTimer('cancelIdleCallback');
51
- } else if (
52
- // TODO remove this condition when bridgeless == modern scheduler everywhere.
53
- NativeReactNativeFeatureFlags != null &&
54
- // eslint-disable-next-line react-hooks/rules-of-hooks -- false positive due to `use` prefix
55
- ReactNativeFeatureFlags.useModernRuntimeScheduler()
56
- ) {
62
+ } else if (isEventLoopEnabled) {
57
63
  polyfillGlobal(
58
64
  'requestIdleCallback',
59
65
  () =>
@@ -72,10 +78,7 @@ if (global.RN$Bridgeless !== true) {
72
78
  // We need to check if the native module is available before accessing the
73
79
  // feature flag, because otherwise the API would throw an error in the legacy
74
80
  // architecture in OSS, where the native module isn't available.
75
- if (
76
- NativeReactNativeFeatureFlags != null &&
77
- ReactNativeFeatureFlags.enableMicrotasks()
78
- ) {
81
+ if (isEventLoopEnabled) {
79
82
  // This is the flag that tells React to use `queueMicrotask` to batch state
80
83
  // updates, instead of using the scheduler to schedule a regular task.
81
84
  // We use a global variable because we don't currently have any other
@@ -102,10 +102,9 @@ const styles = StyleSheet.create({
102
102
  },
103
103
  });
104
104
 
105
- const DebuggingOverlayWithForwardedRef: React.AbstractComponent<
106
- {},
107
- DebuggingOverlayHandle,
108
- React.Node,
109
- > = React.forwardRef(DebuggingOverlay);
105
+ const DebuggingOverlayWithForwardedRef: component(
106
+ ref: React.RefSetter<DebuggingOverlayHandle>,
107
+ ...props: {}
108
+ ) = React.forwardRef(DebuggingOverlay);
110
109
 
111
110
  export default DebuggingOverlayWithForwardedRef;
@@ -53,6 +53,13 @@ function getAssetPathInDrawableFolder(asset: PackagerAsset): string {
53
53
  return drawableFolder + '/' + fileName + '.' + asset.type;
54
54
  }
55
55
 
56
+ /**
57
+ * Returns true if the asset can be loaded over the network.
58
+ */
59
+ function assetSupportsNetworkLoads(asset: PackagerAsset): boolean {
60
+ return !(asset.type === 'xml' && Platform.OS === 'android');
61
+ }
62
+
56
63
  class AssetSourceResolver {
57
64
  serverUrl: ?string;
58
65
  // where the jsbundle is being run from
@@ -67,7 +74,11 @@ class AssetSourceResolver {
67
74
  }
68
75
 
69
76
  isLoadedFromServer(): boolean {
70
- return !!this.serverUrl;
77
+ return (
78
+ this.serverUrl != null &&
79
+ this.serverUrl !== '' &&
80
+ assetSupportsNetworkLoads(this.asset)
81
+ );
71
82
  }
72
83
 
73
84
  isLoadedFromFileSystem(): boolean {