react-native-tvos 0.83.2-0 → 0.84.0-0

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 (576) hide show
  1. package/Libraries/Animated/AnimatedEvent.js +2 -2
  2. package/Libraries/Animated/animations/Animation.js +1 -3
  3. package/Libraries/Animated/createAnimatedComponent.js +8 -5
  4. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  5. package/Libraries/Animated/nodes/AnimatedInterpolation.js +40 -4
  6. package/Libraries/Animated/nodes/AnimatedNode.js +3 -3
  7. package/Libraries/Animated/nodes/AnimatedObject.js +16 -11
  8. package/Libraries/Animated/nodes/AnimatedProps.js +43 -12
  9. package/Libraries/Animated/nodes/AnimatedStyle.js +12 -12
  10. package/Libraries/Animated/nodes/AnimatedValue.js +6 -3
  11. package/Libraries/Animated/nodes/AnimatedValueXY.js +1 -1
  12. package/Libraries/AppDelegate/RCTReactNativeFactory.h +3 -0
  13. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +33 -31
  14. package/Libraries/AppDelegate/RCTRootViewFactory.h +10 -4
  15. package/Libraries/AppDelegate/RCTRootViewFactory.mm +21 -5
  16. package/Libraries/BatchedBridge/MessageQueue.js +24 -22
  17. package/Libraries/Blob/RCTBlobPlugins.mm +14 -14
  18. package/Libraries/Blob/URL.js +34 -3
  19. package/Libraries/Blob/URLSearchParams.js +1 -0
  20. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +9 -1
  21. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +6 -1
  22. package/Libraries/Components/Button.js +2 -5
  23. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +1 -1
  24. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroidTypes.js +4 -4
  25. package/Libraries/Components/Keyboard/Keyboard.js +2 -2
  26. package/Libraries/Components/Pressable/Pressable.js +8 -8
  27. package/Libraries/Components/TextInput/TextInput.flow.js +13 -13
  28. package/Libraries/Components/TextInput/TextInput.js +33 -34
  29. package/Libraries/Components/Touchable/PooledClass.js +2 -2
  30. package/Libraries/Components/Touchable/TouchableBounce.js +6 -6
  31. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  32. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +9 -9
  33. package/Libraries/Components/View/ViewPropTypes.js +16 -6
  34. package/Libraries/Core/Devtools/loadBundleFromServer.js +6 -3
  35. package/Libraries/Core/Devtools/symbolicateStackTrace.js +1 -1
  36. package/Libraries/Core/ExceptionsManager.js +3 -3
  37. package/Libraries/Core/RawEventEmitter.js +1 -1
  38. package/Libraries/Core/ReactFiberErrorDialog.js +1 -1
  39. package/Libraries/Core/ReactNativeVersion.js +2 -2
  40. package/Libraries/Core/setUpDeveloperTools.js +1 -1
  41. package/Libraries/Core/setUpErrorHandling.js +1 -1
  42. package/Libraries/EventEmitter/NativeEventEmitter.js +2 -2
  43. package/Libraries/Image/Image.android.js +2 -2
  44. package/Libraries/Image/Image.ios.js +2 -2
  45. package/Libraries/Image/ImageProps.js +1 -1
  46. package/Libraries/Image/ImageTypes.flow.js +2 -2
  47. package/Libraries/Image/RCTImagePlugins.h +1 -0
  48. package/Libraries/Image/RCTImagePlugins.mm +30 -17
  49. package/Libraries/Interaction/InteractionManager.js +3 -3
  50. package/Libraries/Interaction/PanResponder.js +1 -1
  51. package/Libraries/LayoutAnimation/LayoutAnimation.js +1 -1
  52. package/Libraries/Linking/Linking.js +1 -1
  53. package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +10 -13
  54. package/Libraries/Lists/FlatList.js +2 -2
  55. package/Libraries/LogBox/Data/LogBoxData.js +31 -4
  56. package/Libraries/LogBox/Data/LogBoxLog.js +2 -2
  57. package/Libraries/LogBox/Data/LogBoxSymbolication.js +1 -1
  58. package/Libraries/LogBox/Data/parseLogBoxLog.js +5 -5
  59. package/Libraries/LogBox/LogBox.js +7 -7
  60. package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +14 -14
  61. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +7 -0
  62. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +1 -0
  63. package/Libraries/NativeComponent/BaseViewConfig.android.js +12 -0
  64. package/Libraries/NativeComponent/StaticViewConfigValidator.js +4 -4
  65. package/Libraries/NativeComponent/ViewConfigIgnore.js +1 -1
  66. package/Libraries/Network/RCTInspectorNetworkReporter.mm +26 -3
  67. package/Libraries/Network/RCTNetworkPlugins.mm +22 -16
  68. package/Libraries/Network/RCTNetworking.android.js +3 -3
  69. package/Libraries/Network/RCTNetworking.ios.js +2 -2
  70. package/Libraries/Network/RCTNetworking.js.flow +2 -2
  71. package/Libraries/Pressability/Pressability.js +9 -9
  72. package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +10 -13
  73. package/Libraries/ReactNative/AppRegistry.flow.js +1 -1
  74. package/Libraries/ReactNative/BridgelessUIManager.js +1 -1
  75. package/Libraries/ReactNative/FabricUIManager.js +1 -1
  76. package/Libraries/ReactNative/PaperUIManager.js +1 -1
  77. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +1 -1
  78. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +2 -2
  79. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +1 -1
  80. package/Libraries/ReactNative/RendererImplementation.js +1 -1
  81. package/Libraries/ReactNative/getNativeComponentAttributes.js +1 -1
  82. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +1 -2
  83. package/Libraries/Renderer/implementations/ReactFabric-dev.js +3 -3
  84. package/Libraries/Renderer/implementations/ReactFabric-prod.js +3 -3
  85. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3 -3
  86. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +11 -4
  87. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +11 -4
  88. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +11 -4
  89. package/Libraries/Renderer/shims/ReactFabric.js +3 -1
  90. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
  91. package/Libraries/Renderer/shims/ReactNative.js +2 -2
  92. package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
  93. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  94. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
  95. package/Libraries/Settings/RCTSettingsManager.mm +1 -1
  96. package/Libraries/Settings/RCTSettingsPlugins.mm +10 -13
  97. package/Libraries/Settings/Settings.ios.js +1 -1
  98. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  99. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +1 -1
  100. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +4 -2
  101. package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
  102. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +99 -4
  103. package/Libraries/StyleSheet/StyleSheetTypes.js +6 -8
  104. package/Libraries/StyleSheet/processFilter.js +1 -1
  105. package/Libraries/Text/Text.js +46 -6
  106. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +3 -2
  107. package/Libraries/Text/TextNativeComponent.js +1 -1
  108. package/Libraries/Text/TextProps.js +7 -7
  109. package/Libraries/TypeSafety/RCTTypedModuleConstants.h +36 -1
  110. package/Libraries/Types/CodegenTypes.js +1 -1
  111. package/Libraries/Types/CoreEventTypes.js +31 -0
  112. package/Libraries/Types/ReactDevToolsTypes.js +2 -2
  113. package/Libraries/Utilities/Appearance.js +2 -2
  114. package/Libraries/Utilities/DevLoadingView.js +8 -1
  115. package/Libraries/Utilities/DevSettings.js +3 -3
  116. package/Libraries/Utilities/HMRClient.js +4 -3
  117. package/Libraries/Utilities/RCTLog.js +3 -3
  118. package/Libraries/Utilities/ReactNativeTestTools.js +1 -1
  119. package/Libraries/Utilities/SceneTracker.js +1 -1
  120. package/Libraries/Utilities/codegenNativeCommands.js +1 -1
  121. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +3 -3
  122. package/Libraries/Utilities/logError.js +1 -1
  123. package/Libraries/Utilities/stringifySafe.js +7 -7
  124. package/Libraries/Utilities/useRefEffect.js +1 -1
  125. package/Libraries/Vibration/RCTVibrationPlugins.mm +10 -13
  126. package/Libraries/WebSocket/WebSocketInterceptor.js +3 -3
  127. package/Libraries/promiseRejectionTrackingOptions.js +8 -8
  128. package/Libraries/vendor/core/ErrorUtils.js +10 -10
  129. package/Libraries/vendor/emitter/EventEmitter.js +6 -6
  130. package/README.md +56 -18
  131. package/React/Base/RCTAssert.m +2 -2
  132. package/React/Base/RCTBridge.h +0 -4
  133. package/React/Base/RCTBridge.mm +1 -12
  134. package/React/Base/RCTBundleManager.h +59 -7
  135. package/React/Base/RCTBundleManager.m +112 -1
  136. package/React/Base/RCTBundleURLProvider.h +24 -0
  137. package/React/Base/RCTBundleURLProvider.mm +49 -4
  138. package/React/Base/RCTConvert.mm +2 -0
  139. package/React/Base/RCTModuleData.mm +2 -2
  140. package/React/Base/RCTUtils.h +4 -0
  141. package/React/Base/RCTUtils.mm +60 -3
  142. package/React/Base/RCTVersion.m +2 -2
  143. package/React/CoreModules/CoreModulesPlugins.mm +97 -35
  144. package/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +1 -1
  145. package/React/CoreModules/RCTAccessibilityManager.mm +18 -1
  146. package/React/CoreModules/RCTAppState.mm +1 -1
  147. package/React/CoreModules/RCTDevLoadingView.mm +116 -36
  148. package/React/CoreModules/RCTDevSettings.h +36 -1
  149. package/React/CoreModules/RCTDevSettings.mm +44 -8
  150. package/React/CoreModules/RCTExceptionsManager.mm +5 -2
  151. package/React/CoreModules/RCTPlatform.mm +3 -2
  152. package/React/CoreModules/RCTStatusBarManager.mm +1 -1
  153. package/React/CxxBridge/RCTCxxBridge.mm +1 -2
  154. package/React/CxxModule/RCTCxxMethod.mm +1 -1
  155. package/React/CxxModule/RCTCxxUtils.mm +2 -12
  156. package/React/DevSupport/RCTDevLoadingViewProtocol.h +4 -1
  157. package/React/DevSupport/RCTPackagerConnection.h +4 -2
  158. package/React/DevSupport/RCTPackagerConnection.mm +30 -33
  159. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm +9 -2
  160. package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +62 -17
  161. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +529 -494
  162. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/EventEmitters.h +1 -0
  163. package/React/FBReactNativeSpec/react/renderer/components/FBReactNativeSpec/Props.h +14 -0
  164. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropComponentView.mm +11 -0
  165. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTEnhancedScrollView.mm +6 -0
  166. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm +2 -0
  167. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +39 -2
  168. package/React/Fabric/Mounting/ComponentViews/VirtualView/RCTVirtualViewComponentView.mm +5 -7
  169. package/React/Fabric/Mounting/ComponentViews/VirtualViewExperimental/RCTVirtualViewExperimentalComponentView.mm +5 -7
  170. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -1
  171. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -1
  172. package/React/Inspector/RCTCxxInspectorWebSocketAdapter.mm +6 -2
  173. package/React/Modules/RCTEventEmitter.m +1 -0
  174. package/React/Views/RCTModalHostView.h +2 -0
  175. package/React/Views/RCTTVView.m +2 -0
  176. package/ReactAndroid/api/ReactAndroid.api +14 -73
  177. package/ReactAndroid/build.gradle.kts +2 -0
  178. package/ReactAndroid/gradle.properties +1 -1
  179. package/ReactAndroid/hermes-engine/build.gradle.kts +97 -29
  180. package/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.kt +1 -4
  181. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivity.java +3 -0
  182. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +10 -13
  183. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +1 -119
  184. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.kt +0 -10
  185. package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageHelper.kt +1 -1
  186. package/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt +4 -29
  187. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +43 -2
  188. package/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.kt +53 -4
  189. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.kt +0 -18
  190. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +6 -96
  191. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +17 -2
  192. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.kt +2 -2
  193. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.kt +1 -33
  194. package/ReactAndroid/src/main/java/com/facebook/react/bridge/Promise.kt +6 -6
  195. package/ReactAndroid/src/main/java/com/facebook/react/bridge/PromiseImpl.kt +6 -6
  196. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReadableNativeArray.kt +1 -12
  197. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgelessDevSupportManager.kt +4 -5
  198. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/ChangeBundleLocationDialog.kt +11 -10
  199. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +99 -9
  200. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevLoadingViewImplementation.kt +58 -13
  201. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt +10 -60
  202. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.kt +7 -7
  203. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerFactory.kt +1 -4
  204. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +17 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +144 -0
  206. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkHelper.kt +1 -1
  207. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/TracingState.kt +17 -0
  208. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/TracingStateListener.kt +15 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/{interfaces → inspector}/TracingStateProvider.kt +1 -1
  210. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevLoadingViewManager.kt +6 -1
  211. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt +2 -2
  212. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/RedBoxHandler.kt +2 -2
  213. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorInspectorTargetBinding.kt +1 -1
  214. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +31 -6
  215. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +7 -6
  216. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorUpdateListener.kt +1 -1
  217. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +1 -1
  218. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.java +2 -1
  219. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +63 -45
  220. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +106 -76
  221. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +22 -16
  222. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +23 -17
  223. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +117 -84
  224. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -1
  225. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +0 -2
  226. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +22 -16
  227. package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt +5 -43
  228. package/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt +0 -3
  229. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +36 -1
  230. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/FpsDebugFrameCallback.kt +3 -27
  231. package/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.kt +7 -2
  232. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +23 -0
  233. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +1 -1
  234. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
  235. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +15 -8
  236. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +0 -9
  237. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +46 -12
  238. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +3 -3
  239. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +11 -17
  240. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +52 -0
  241. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +92 -3
  242. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +62 -8
  243. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSKeyDispatcher.kt +65 -0
  244. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +19 -2
  245. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +1 -2
  246. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +5 -36
  247. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +9 -91
  248. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +1 -1
  249. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt +47 -0
  250. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +0 -2
  251. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +4 -23
  252. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +1 -7
  253. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +1 -11
  254. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -47
  255. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +0 -16
  256. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutlineDrawable.kt +1 -1
  257. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +3 -36
  258. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyDownEvent.kt +23 -0
  259. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyEvent.kt +156 -0
  260. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyUpEvent.kt +24 -0
  261. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +29 -4
  262. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +12 -9
  263. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +1 -1
  264. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +36 -3
  265. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +21 -11
  266. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +7 -0
  267. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewAccessibilityDelegate.kt +31 -15
  268. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +127 -32
  269. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +11 -1
  270. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +3 -11
  271. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/viewexperimental/ReactVirtualViewExperimental.kt +3 -12
  272. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionWebSocket.cpp +29 -2
  273. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +98 -3
  274. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +62 -26
  275. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +145 -103
  276. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +31 -22
  277. package/ReactAndroid/src/main/jni/react/hermes/reactexecutor/CMakeLists.txt +0 -4
  278. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +1 -3
  279. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +5 -23
  280. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +2 -7
  281. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapperBase.h +0 -24
  282. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  283. package/ReactAndroid/src/main/jni/react/jni/JSLoader.h +2 -1
  284. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +0 -1
  285. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.cpp +1 -29
  286. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.h +1 -2
  287. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +0 -4
  288. package/ReactAndroid/src/main/jni/react/runtime/hermes/jni/CMakeLists.txt +0 -4
  289. package/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +0 -4
  290. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +145 -17
  291. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +193 -19
  292. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +2 -1
  293. package/ReactAndroid/src/main/jni/react/tracing/PerformanceTracerCxxInterop.cpp +1 -1
  294. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +62 -63
  295. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +5 -7
  296. package/ReactAndroid/src/main/jni/third-party/folly/CMakeLists.txt +1 -0
  297. package/ReactAndroid/src/main/res/devsupport/drawable/ic_perf_issue.xml +10 -0
  298. package/ReactAndroid/src/main/res/devsupport/layout/dev_loading_view.xml +41 -15
  299. package/ReactAndroid/src/main/res/devsupport/layout/fps_view.xml +1 -1
  300. package/ReactAndroid/src/main/res/devsupport/values/strings.xml +1 -0
  301. package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +16 -0
  302. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.h +2 -0
  303. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.mm +38 -5
  304. package/ReactCommon/cmake-utils/react-native-flags.cmake +3 -0
  305. package/ReactCommon/cxxreact/JSBigString.h +14 -5
  306. package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +4 -5
  307. package/ReactCommon/cxxreact/ReactMarker.cpp +0 -1
  308. package/ReactCommon/cxxreact/ReactNativeVersion.h +4 -4
  309. package/ReactCommon/devtoolsruntimesettings/DevToolsRuntimeSettings.cpp +1 -1
  310. package/ReactCommon/hermes/React-hermes.podspec +1 -0
  311. package/ReactCommon/hermes/executor/CMakeLists.txt +0 -4
  312. package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +2 -0
  313. package/ReactCommon/hermes/inspector-modern/CMakeLists.txt +0 -4
  314. package/ReactCommon/jsi/jsi/jsi.cpp +6 -1
  315. package/ReactCommon/jsi/jsi/jsi.h +73 -0
  316. package/ReactCommon/jsi/jsi/test/testlib.cpp +2 -2
  317. package/ReactCommon/jsiexecutor/CMakeLists.txt +3 -1
  318. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +3 -0
  319. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +2 -43
  320. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +3 -8
  321. package/ReactCommon/jsinspector-modern/ConsoleTask.cpp +27 -0
  322. package/ReactCommon/jsinspector-modern/ConsoleTask.h +38 -0
  323. package/ReactCommon/jsinspector-modern/ConsoleTaskContext.cpp +46 -0
  324. package/ReactCommon/jsinspector-modern/ConsoleTaskContext.h +102 -0
  325. package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.cpp +55 -0
  326. package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.h +48 -0
  327. package/ReactCommon/jsinspector-modern/HostAgent.cpp +9 -10
  328. package/ReactCommon/jsinspector-modern/HostAgent.h +2 -2
  329. package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -6
  330. package/ReactCommon/jsinspector-modern/HostTarget.h +73 -16
  331. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.cpp +40 -8
  332. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.h +42 -5
  333. package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +54 -21
  334. package/ReactCommon/jsinspector-modern/InstanceAgent.cpp +2 -11
  335. package/ReactCommon/jsinspector-modern/InstanceTarget.h +2 -2
  336. package/ReactCommon/jsinspector-modern/PerfMonitorV2.cpp +9 -1
  337. package/ReactCommon/jsinspector-modern/PerfMonitorV2.h +4 -1
  338. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +3 -2
  339. package/ReactCommon/jsinspector-modern/RuntimeAgent.h +1 -1
  340. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +12 -0
  341. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +16 -13
  342. package/ReactCommon/jsinspector-modern/RuntimeTargetConsole.cpp +106 -1
  343. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +30 -18
  344. package/ReactCommon/jsinspector-modern/TracingAgent.h +5 -4
  345. package/ReactCommon/jsinspector-modern/tests/ConsoleCreateTaskTest.cpp +131 -0
  346. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +53 -0
  347. package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +20 -0
  348. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +25 -55
  349. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +1 -0
  350. package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +116 -0
  351. package/ReactCommon/jsinspector-modern/tests/TracingTest.h +95 -0
  352. package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +60 -0
  353. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +43 -0
  354. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +144 -0
  355. package/ReactCommon/jsinspector-modern/tracing/{TraceRecordingStateSerializer.h → HostTracingProfileSerializer.h} +16 -8
  356. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +67 -16
  357. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +21 -2
  358. package/ReactCommon/jsinspector-modern/tracing/TargetTracingAgent.h +5 -0
  359. package/ReactCommon/jsinspector-modern/tracing/TimeWindowedBuffer.h +158 -0
  360. package/ReactCommon/jsinspector-modern/tracing/TraceEvent.h +2 -1
  361. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +104 -0
  362. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +59 -0
  363. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +2 -1
  364. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +18 -7
  365. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +139 -0
  366. package/ReactCommon/jsinspector-modern/tracing/tests/TimeWindowedBufferTest.cpp +352 -0
  367. package/ReactCommon/jsitooling/React-jsitooling.podspec +4 -0
  368. package/ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.cpp +54 -0
  369. package/{ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h → ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.h} +4 -6
  370. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +43 -31
  371. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +55 -40
  372. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +234 -180
  373. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +24 -18
  374. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +43 -31
  375. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +91 -64
  376. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +5 -1
  377. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -4
  378. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +12 -9
  379. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +7 -2
  380. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +30 -10
  381. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +17 -6
  382. package/ReactCommon/react/nativemodule/core/iostests/RCTTurboModuleTests.mm +0 -1
  383. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +1 -4
  384. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +0 -4
  385. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +43 -60
  386. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +11 -36
  387. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +53 -38
  388. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +22 -16
  389. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -0
  390. package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +24 -3
  391. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +76 -13
  392. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +74 -64
  393. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +17 -13
  394. package/ReactCommon/react/networking/NetworkReporter.cpp +26 -22
  395. package/ReactCommon/react/networking/React-networking.podspec +0 -1
  396. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.cpp +4 -2
  397. package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
  398. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +10 -2
  399. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
  400. package/ReactCommon/react/renderer/animated/AnimatedModule.cpp +104 -78
  401. package/ReactCommon/react/renderer/animated/AnimatedModule.h +10 -2
  402. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +174 -75
  403. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +19 -1
  404. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +68 -46
  405. package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.cpp +1 -0
  406. package/ReactCommon/react/renderer/animated/internal/AnimatedMountingOverrideDelegate.cpp +1 -1
  407. package/ReactCommon/react/renderer/animated/nodes/ColorAnimatedNode.cpp +0 -1
  408. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.cpp +103 -4
  409. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +9 -0
  410. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +5 -1
  411. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +9 -0
  412. package/ReactCommon/react/renderer/animated/nodes/RoundAnimatedNode.cpp +1 -1
  413. package/ReactCommon/react/renderer/animated/nodes/ValueAnimatedNode.cpp +1 -1
  414. package/ReactCommon/react/renderer/animated/tests/AnimatedNodeTests.cpp +67 -0
  415. package/ReactCommon/react/renderer/animated/tests/AnimationDriverTests.cpp +59 -0
  416. package/ReactCommon/react/renderer/animated/tests/AnimationTestsBase.h +2 -1
  417. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +715 -0
  418. package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +388 -1
  419. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +191 -2
  420. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +100 -0
  421. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +298 -0
  422. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsSerializer.h +17 -0
  423. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +90 -94
  424. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +23 -5
  425. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp +75 -0
  426. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +32 -0
  427. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +2 -2
  428. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +3 -0
  429. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +2 -2
  430. package/ReactCommon/react/renderer/components/image/ImageProps.h +2 -2
  431. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +9 -2
  432. package/ReactCommon/react/renderer/components/image/conversions.h +5 -0
  433. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +2 -1
  434. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +5 -1
  435. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +21 -1
  436. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +14 -0
  437. package/ReactCommon/react/renderer/core/DynamicEventPayload.cpp +10 -0
  438. package/ReactCommon/react/renderer/core/DynamicEventPayload.h +6 -1
  439. package/ReactCommon/react/renderer/core/DynamicPointerEvent.cpp +30 -0
  440. package/ReactCommon/react/renderer/core/DynamicPointerEvent.h +29 -0
  441. package/ReactCommon/react/renderer/core/EventDispatcher.cpp +1 -1
  442. package/ReactCommon/react/renderer/core/EventEmitter.cpp +11 -14
  443. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +3 -3
  444. package/ReactCommon/react/renderer/core/Props.cpp +23 -8
  445. package/ReactCommon/react/renderer/core/Props.h +6 -4
  446. package/ReactCommon/react/renderer/core/ShadowNode.cpp +4 -10
  447. package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +32 -0
  448. package/ReactCommon/react/renderer/css/CSSSyntaxParser.h +7 -0
  449. package/ReactCommon/react/renderer/debug/CMakeLists.txt +7 -0
  450. package/ReactCommon/react/renderer/debug/flags.h +3 -2
  451. package/ReactCommon/react/renderer/graphics/BlendMode.h +2 -0
  452. package/ReactCommon/react/renderer/graphics/Filter.h +2 -0
  453. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +3 -0
  454. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +23 -12
  455. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +8 -3
  456. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +16 -4
  457. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +9 -4
  458. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +8 -4
  459. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
  460. package/ReactCommon/react/renderer/imagemanager/primitives.h +15 -6
  461. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +0 -11
  462. package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +0 -4
  463. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +0 -20
  464. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +3 -3
  465. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +2 -3
  466. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +6 -0
  467. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  468. package/ReactCommon/react/runtime/CMakeLists.txt +0 -4
  469. package/ReactCommon/react/runtime/PlatformTimerRegistry.h +2 -0
  470. package/ReactCommon/react/runtime/ReactInstance.cpp +21 -14
  471. package/ReactCommon/react/runtime/ReactInstance.h +5 -1
  472. package/ReactCommon/react/runtime/TimerManager.cpp +11 -53
  473. package/ReactCommon/react/runtime/TimerManager.h +7 -12
  474. package/ReactCommon/react/runtime/hermes/CMakeLists.txt +0 -4
  475. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +3 -2
  476. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +10 -6
  477. package/ReactCommon/yoga/yoga/algorithm/FlexDirection.h +6 -6
  478. package/ReactCommon/yoga/yoga/algorithm/SizingMode.h +4 -4
  479. package/ReactCommon/yoga/yoga/style/Style.h +8 -8
  480. package/ReactCommon/yoga/yoga/style/StyleLength.h +7 -0
  481. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -0
  482. package/flow/HermesInternalType.js +6 -6
  483. package/flow/bom.js.flow +35 -28
  484. package/flow/cssom.js.flow +3 -3
  485. package/flow/dom.js.flow +34 -33
  486. package/index.js +3 -0
  487. package/index.js.flow +8 -0
  488. package/jest/mock.js +2 -2
  489. package/jest/mockComponent.js +1 -1
  490. package/jest/setup.js +1 -1
  491. package/package.json +11 -11
  492. package/react-native.config.js +0 -17
  493. package/scripts/cocoapods/new_architecture.rb +7 -1
  494. package/scripts/cocoapods/spm.rb +28 -10
  495. package/scripts/cocoapods/utils.rb +4 -4
  496. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +5 -5
  497. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +7 -6
  498. package/scripts/ios-configure-glog.sh +24 -1
  499. package/scripts/react_native_pods.rb +13 -0
  500. package/sdks/.hermesv1version +1 -1
  501. package/sdks/.hermesversion +1 -1
  502. package/sdks/hermes-engine/hermes-engine.podspec +53 -36
  503. package/sdks/hermes-engine/hermes-utils.rb +8 -15
  504. package/sdks/hermes-engine/version.properties +1 -1
  505. package/src/private/animated/NativeAnimatedHelper.js +130 -125
  506. package/src/private/animated/NativeAnimatedValidation.js +7 -4
  507. package/src/private/animated/createAnimatedPropsHook.js +13 -5
  508. package/src/private/animated/createAnimatedPropsMemoHook.js +10 -10
  509. package/src/private/components/virtualview/VirtualView.js +16 -9
  510. package/src/private/components/virtualview/logger/VirtualViewLogger.js +21 -0
  511. package/src/private/components/virtualview/logger/VirtualViewLoggerTypes.js +24 -0
  512. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  513. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +6 -25
  514. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -27
  515. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +3 -2
  516. package/src/private/featureflags/ReactNativeFeatureFlags.js +63 -42
  517. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  518. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +12 -9
  519. package/src/private/renderer/errorhandling/ErrorHandlers.js +7 -4
  520. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  521. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +4 -0
  522. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -0
  523. package/src/private/webapis/dom/events/CustomEvent.js +3 -3
  524. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  525. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  526. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +29 -29
  527. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +1 -1
  528. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +2 -0
  529. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  530. package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -1
  531. package/src/private/webapis/geometry/DOMRectReadOnly.js +1 -1
  532. package/src/private/webapis/html/events/MessageEvent.js +3 -3
  533. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +3 -3
  534. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +53 -5
  535. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +2 -2
  536. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +4 -4
  537. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
  538. package/src/private/webapis/mutationobserver/MutationObserver.js +1 -1
  539. package/src/private/webapis/mutationobserver/MutationRecord.js +1 -1
  540. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -4
  541. package/src/private/webapis/performance/Performance.js +1 -1
  542. package/src/private/webapis/performance/UserTiming.js +1 -1
  543. package/src/private/webapis/performance/specs/NativePerformance.js +3 -3
  544. package/src/private/webapis/structuredClone/structuredClone.js +3 -3
  545. package/src/types/globals.d.ts +30 -1
  546. package/third-party-podspecs/RCT-Folly.podspec +1 -0
  547. package/third-party-podspecs/glog.podspec +1 -0
  548. package/React/CxxModule/RCTCxxModule.h +0 -29
  549. package/React/CxxModule/RCTCxxModule.mm +0 -87
  550. package/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.kt +0 -146
  551. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.kt +0 -45
  552. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt +0 -25
  553. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.kt +0 -61
  554. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NotThreadSafeBridgeIdleDebugListener.kt +0 -36
  555. package/ReactAndroid/src/main/java/com/facebook/react/bridge/OnBatchCompleteListener.kt +0 -21
  556. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.kt +0 -54
  557. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.kt +0 -78
  558. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.kt +0 -105
  559. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/TracingState.kt +0 -19
  560. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DidJSUpdateUiDuringFrameDetector.kt +0 -157
  561. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeKind.kt +0 -32
  562. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/debug/NotThreadSafeViewHierarchyUpdateDebugListener.kt +0 -30
  563. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.kt +0 -87
  564. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationListener.kt +0 -23
  565. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapper.h +0 -37
  566. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +0 -20
  567. package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.cpp +0 -175
  568. package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.h +0 -75
  569. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingStateSerializer.cpp +0 -68
  570. package/ReactCommon/jsinspector-modern/tracing/TracingState.h +0 -24
  571. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +0 -212
  572. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +0 -40
  573. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +0 -628
  574. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +0 -66
  575. package/tvosCommands.js +0 -51
  576. /package/ReactCommon/jsi/jsi/{hermes.h → hermes-interfaces.h} +0 -0
@@ -0,0 +1,102 @@
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
+
8
+ #pragma once
9
+
10
+ #include "StackTrace.h"
11
+
12
+ #include <folly/dynamic.h>
13
+ #include <jsi/jsi.h>
14
+
15
+ #include <cassert>
16
+ #include <functional>
17
+ #include <memory>
18
+ #include <string>
19
+
20
+ namespace facebook::react::jsinspector_modern {
21
+
22
+ class ConsoleTaskOrchestrator;
23
+ class RuntimeTargetDelegate;
24
+
25
+ class ConsoleTaskId {
26
+ public:
27
+ ConsoleTaskId() = default;
28
+ ~ConsoleTaskId() = default;
29
+
30
+ ConsoleTaskId(const ConsoleTaskId &) = default;
31
+ ConsoleTaskId &operator=(const ConsoleTaskId &) = default;
32
+
33
+ ConsoleTaskId(ConsoleTaskId &&) = default;
34
+ ConsoleTaskId &operator=(ConsoleTaskId &&) = default;
35
+
36
+ bool operator==(const ConsoleTaskId &) const = default;
37
+ inline operator bool() const
38
+ {
39
+ return (bool)id_;
40
+ }
41
+
42
+ explicit inline operator void *() const
43
+ {
44
+ return id_;
45
+ }
46
+
47
+ private:
48
+ explicit inline ConsoleTaskId(void *id) : id_(id)
49
+ {
50
+ assert(id_ != nullptr);
51
+ }
52
+
53
+ void *id_{nullptr};
54
+
55
+ friend class ConsoleTaskContext;
56
+ };
57
+
58
+ class ConsoleTaskContext : public std::enable_shared_from_this<ConsoleTaskContext> {
59
+ public:
60
+ ConsoleTaskContext(jsi::Runtime &runtime, RuntimeTargetDelegate &runtimeTargetDelegate, std::string name);
61
+ ~ConsoleTaskContext();
62
+
63
+ // Can't be moved or copied: the address of `ConsoleTaskContext` is used to
64
+ // identify this task and all corresponding invocations.
65
+ ConsoleTaskContext(const ConsoleTaskContext &) = delete;
66
+ ConsoleTaskContext &operator=(const ConsoleTaskContext &) = delete;
67
+
68
+ ConsoleTaskContext(ConsoleTaskContext &&) = delete;
69
+ ConsoleTaskContext &operator=(ConsoleTaskContext &&) = delete;
70
+
71
+ /**
72
+ * Unique identifier that is calculated based on the address of
73
+ * ConsoleTaskContext.
74
+ */
75
+ ConsoleTaskId id() const;
76
+
77
+ /**
78
+ * Returns the serialized stack trace that was captured during the allocation
79
+ * of ConsoleTaskContext.
80
+ */
81
+ std::optional<folly::dynamic> getSerializedStackTrace() const;
82
+
83
+ void schedule();
84
+
85
+ private:
86
+ RuntimeTargetDelegate &runtimeTargetDelegate_;
87
+ std::string name_;
88
+ ConsoleTaskOrchestrator &orchestrator_;
89
+ std::unique_ptr<StackTrace> stackTrace_;
90
+ };
91
+
92
+ } // namespace facebook::react::jsinspector_modern
93
+
94
+ namespace std {
95
+ template <>
96
+ struct hash<facebook::react::jsinspector_modern::ConsoleTaskId> {
97
+ size_t operator()(const facebook::react::jsinspector_modern::ConsoleTaskId &id) const
98
+ {
99
+ return std::hash<void *>{}(static_cast<void *>(id));
100
+ }
101
+ };
102
+ } // namespace std
@@ -0,0 +1,55 @@
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
+
8
+ #include "ConsoleTaskOrchestrator.h"
9
+
10
+ namespace facebook::react::jsinspector_modern {
11
+
12
+ /* static */ ConsoleTaskOrchestrator& ConsoleTaskOrchestrator::getInstance() {
13
+ static ConsoleTaskOrchestrator instance;
14
+ return instance;
15
+ }
16
+
17
+ void ConsoleTaskOrchestrator::scheduleTask(
18
+ ConsoleTaskId taskId,
19
+ std::weak_ptr<ConsoleTaskContext> taskContext) {
20
+ std::lock_guard<std::mutex> lock(mutex_);
21
+ tasks_.emplace(taskId, taskContext);
22
+ }
23
+
24
+ void ConsoleTaskOrchestrator::cancelTask(ConsoleTaskId id) {
25
+ std::lock_guard<std::mutex> lock(mutex_);
26
+ tasks_.erase(id);
27
+ }
28
+
29
+ void ConsoleTaskOrchestrator::startTask(ConsoleTaskId id) {
30
+ std::lock_guard<std::mutex> lock(mutex_);
31
+ stack_.push(id);
32
+ }
33
+
34
+ void ConsoleTaskOrchestrator::finishTask(ConsoleTaskId id) {
35
+ std::lock_guard<std::mutex> lock(mutex_);
36
+ assert(stack_.top() == id);
37
+
38
+ stack_.pop();
39
+ }
40
+
41
+ std::shared_ptr<ConsoleTaskContext> ConsoleTaskOrchestrator::top() const {
42
+ std::lock_guard<std::mutex> lock(mutex_);
43
+ if (stack_.empty()) {
44
+ return nullptr;
45
+ }
46
+
47
+ auto it = tasks_.find(stack_.top());
48
+ if (it == tasks_.end()) {
49
+ return nullptr;
50
+ }
51
+
52
+ return it->second.lock();
53
+ }
54
+
55
+ } // namespace facebook::react::jsinspector_modern
@@ -0,0 +1,48 @@
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
+
8
+ #pragma once
9
+
10
+ #include <memory>
11
+ #include <mutex>
12
+ #include <stack>
13
+
14
+ #include "ConsoleTaskContext.h"
15
+
16
+ namespace facebook::react::jsinspector_modern {
17
+
18
+ class ConsoleTaskOrchestrator {
19
+ public:
20
+ static ConsoleTaskOrchestrator &getInstance();
21
+
22
+ ~ConsoleTaskOrchestrator() = default;
23
+
24
+ ConsoleTaskOrchestrator(const ConsoleTaskOrchestrator &) = delete;
25
+ ConsoleTaskOrchestrator &operator=(const ConsoleTaskOrchestrator &) = delete;
26
+
27
+ ConsoleTaskOrchestrator(ConsoleTaskOrchestrator &&) = delete;
28
+ ConsoleTaskOrchestrator &operator=(ConsoleTaskOrchestrator &&) = delete;
29
+
30
+ void scheduleTask(ConsoleTaskId taskId, std::weak_ptr<ConsoleTaskContext> taskContext);
31
+ void cancelTask(ConsoleTaskId taskId);
32
+
33
+ void startTask(ConsoleTaskId taskId);
34
+ void finishTask(ConsoleTaskId taskId);
35
+ std::shared_ptr<ConsoleTaskContext> top() const;
36
+
37
+ private:
38
+ ConsoleTaskOrchestrator() = default;
39
+
40
+ std::stack<ConsoleTaskId> stack_;
41
+ std::unordered_map<ConsoleTaskId, std::weak_ptr<ConsoleTaskContext>> tasks_;
42
+ /**
43
+ * Protects the stack_ and tasks_ members.
44
+ */
45
+ mutable std::mutex mutex_;
46
+ };
47
+
48
+ } // namespace facebook::react::jsinspector_modern
@@ -238,9 +238,9 @@ class HostAgent::Impl final {
238
238
 
239
239
  auto stashedTraceRecording =
240
240
  targetController_.getDelegate()
241
- .unstable_getTraceRecordingThatWillBeEmittedOnInitialization();
241
+ .unstable_getHostTracingProfileThatWillBeEmittedOnInitialization();
242
242
  if (stashedTraceRecording.has_value()) {
243
- tracingAgent_.emitExternalTraceRecording(
243
+ tracingAgent_.emitExternalHostTracingProfile(
244
244
  std::move(stashedTraceRecording.value()));
245
245
  }
246
246
 
@@ -385,12 +385,12 @@ class HostAgent::Impl final {
385
385
  return fuseboxClientType_ == FuseboxClientType::Fusebox;
386
386
  }
387
387
 
388
- void emitExternalTraceRecording(
389
- tracing::TraceRecordingState traceRecording) const {
388
+ void emitExternalTracingProfile(
389
+ tracing::HostTracingProfile tracingProfile) const {
390
390
  assert(
391
391
  hasFuseboxClientConnected() &&
392
392
  "Attempted to emit a trace recording to a non-Fusebox client");
393
- tracingAgent_.emitExternalTraceRecording(std::move(traceRecording));
393
+ tracingAgent_.emitExternalHostTracingProfile(std::move(tracingProfile));
394
394
  }
395
395
 
396
396
  void emitSystemStateChanged(bool isSingleHost) {
@@ -506,8 +506,7 @@ class HostAgent::Impl final {
506
506
  bool hasFuseboxClientConnected() const {
507
507
  return false;
508
508
  }
509
- void emitExternalTraceRecording(tracing::TraceRecordingState traceRecording) {
510
- }
509
+ void emitExternalTracingProfile(tracing::HostTracingProfile tracingProfile) {}
511
510
  void emitSystemStateChanged(bool isSingleHost) {}
512
511
  };
513
512
 
@@ -543,9 +542,9 @@ bool HostAgent::hasFuseboxClientConnected() const {
543
542
  return impl_->hasFuseboxClientConnected();
544
543
  }
545
544
 
546
- void HostAgent::emitExternalTraceRecording(
547
- tracing::TraceRecordingState traceRecording) const {
548
- impl_->emitExternalTraceRecording(std::move(traceRecording));
545
+ void HostAgent::emitExternalTracingProfile(
546
+ tracing::HostTracingProfile tracingProfile) const {
547
+ impl_->emitExternalTracingProfile(std::move(tracingProfile));
549
548
  }
550
549
 
551
550
  void HostAgent::emitSystemStateChanged(bool isSingleHost) const {
@@ -74,10 +74,10 @@ class HostAgent final {
74
74
  bool hasFuseboxClientConnected() const;
75
75
 
76
76
  /**
77
- * Emits the trace recording that was captured externally, not via the
77
+ * Emits the HostTracingProfile that was captured externally, not via the
78
78
  * CDP-initiated request.
79
79
  */
80
- void emitExternalTraceRecording(tracing::TraceRecordingState traceRecording) const;
80
+ void emitExternalTracingProfile(tracing::HostTracingProfile tracingProfile) const;
81
81
 
82
82
  /**
83
83
  * Emits a system state changed event when the number of ReactHost instances
@@ -111,8 +111,9 @@ class HostTargetSession {
111
111
  return hostAgent_.hasFuseboxClientConnected();
112
112
  }
113
113
 
114
- void emitTraceRecording(tracing::TraceRecordingState traceRecording) const {
115
- hostAgent_.emitExternalTraceRecording(std::move(traceRecording));
114
+ void emitHostTracingProfile(
115
+ tracing::HostTracingProfile tracingProfile) const {
116
+ hostAgent_.emitExternalTracingProfile(std::move(tracingProfile));
116
117
  }
117
118
 
118
119
  private:
@@ -382,13 +383,13 @@ bool HostTarget::hasActiveSessionWithFuseboxClient() const {
382
383
  return hasActiveFuseboxSession;
383
384
  }
384
385
 
385
- void HostTarget::emitTraceRecordingForFirstFuseboxClient(
386
- tracing::TraceRecordingState traceRecording) const {
386
+ void HostTarget::emitTracingProfileForFirstFuseboxClient(
387
+ tracing::HostTracingProfile tracingProfile) const {
387
388
  bool emitted = false;
388
389
  sessions_.forEach([&](HostTargetSession& session) {
389
390
  if (emitted) {
390
391
  /**
391
- * TraceRecordingState object is not copiable for performance reasons,
392
+ * HostTracingProfile object is not copiable for performance reasons,
392
393
  * because it could contain large Runtime sampling profile object.
393
394
  *
394
395
  * This approach would not work with multi-client debugger setup.
@@ -396,7 +397,7 @@ void HostTarget::emitTraceRecordingForFirstFuseboxClient(
396
397
  return;
397
398
  }
398
399
  if (session.hasFuseboxClient()) {
399
- session.emitTraceRecording(std::move(traceRecording));
400
+ session.emitHostTracingProfile(std::move(tracingProfile));
400
401
  emitted = true;
401
402
  }
402
403
  });
@@ -17,10 +17,14 @@
17
17
  #include "WeakList.h"
18
18
 
19
19
  #include <optional>
20
+ #include <set>
20
21
  #include <string>
21
22
 
23
+ #include <jsinspector-modern/tracing/FrameTimingSequence.h>
24
+ #include <jsinspector-modern/tracing/HostTracingProfile.h>
25
+ #include <jsinspector-modern/tracing/TraceRecordingState.h>
26
+ #include <jsinspector-modern/tracing/TracingCategory.h>
22
27
  #include <jsinspector-modern/tracing/TracingMode.h>
23
- #include <jsinspector-modern/tracing/TracingState.h>
24
28
 
25
29
  #ifndef JSINSPECTOR_EXPORT
26
30
  #ifdef _MSC_VER
@@ -53,6 +57,36 @@ struct HostTargetMetadata {
53
57
  std::optional<std::string> reactNativeVersion{};
54
58
  };
55
59
 
60
+ /**
61
+ * Receives any performance-related events from a HostTarget: could be Tracing, Performance Monitor, etc.
62
+ */
63
+ class HostTargetTracingDelegate {
64
+ public:
65
+ HostTargetTracingDelegate() = default;
66
+ virtual ~HostTargetTracingDelegate() = default;
67
+
68
+ /**
69
+ * Fired when the corresponding HostTarget started recording a tracing session.
70
+ * The tracing state is expected to be initialized at this point and the delegate should be able to record events
71
+ * through HostTarget.
72
+ */
73
+ virtual void onTracingStarted(tracing::Mode /* tracingMode */, bool /* screenshotsCategoryEnabled */) {}
74
+
75
+ /**
76
+ * Fired when the corresponding HostTarget is about to end recording a tracing session.
77
+ * The tracing state is expected to be still initialized during the call and the delegate should be able to record
78
+ * events through HostTarget.
79
+ *
80
+ * Any attempts to record events after this callback is finished will fail.
81
+ */
82
+ virtual void onTracingStopped() {}
83
+
84
+ HostTargetTracingDelegate(const HostTargetTracingDelegate &) = delete;
85
+ HostTargetTracingDelegate(HostTargetTracingDelegate &&) = delete;
86
+ HostTargetTracingDelegate &operator=(const HostTargetTracingDelegate &) = delete;
87
+ HostTargetTracingDelegate &operator=(HostTargetTracingDelegate &&) = delete;
88
+ };
89
+
56
90
  /**
57
91
  * Receives events from a HostTarget. This is a shared interface that each
58
92
  * React Native platform needs to implement in order to integrate with the
@@ -152,13 +186,21 @@ class HostTargetDelegate : public LoadNetworkResourceDelegate {
152
186
  * trace recording that may have been stashed by the Host from the previous
153
187
  * background session.
154
188
  *
155
- * \return the trace recording state if there is one that needs to be
189
+ * \return the HostTracingProfile if there is one that needs to be
156
190
  * displayed, otherwise std::nullopt.
157
191
  */
158
- virtual std::optional<tracing::TraceRecordingState> unstable_getTraceRecordingThatWillBeEmittedOnInitialization()
192
+ virtual std::optional<tracing::HostTracingProfile> unstable_getHostTracingProfileThatWillBeEmittedOnInitialization()
159
193
  {
160
194
  return std::nullopt;
161
195
  }
196
+
197
+ /**
198
+ * An optional delegate that will be used by HostTarget to notify about tracing-related events.
199
+ */
200
+ virtual HostTargetTracingDelegate *getTracingDelegate()
201
+ {
202
+ return nullptr;
203
+ }
162
204
  };
163
205
 
164
206
  /**
@@ -203,14 +245,16 @@ class HostTargetController final {
203
245
  * Starts trace recording for this HostTarget.
204
246
  *
205
247
  * \param mode In which mode to start the trace recording.
248
+ * \param enabledCategories The set of categories to enable.
249
+ *
206
250
  * \return false if already tracing, true otherwise.
207
251
  */
208
- bool startTracing(tracing::Mode mode);
252
+ bool startTracing(tracing::Mode mode, std::set<tracing::Category> enabledCategories);
209
253
 
210
254
  /**
211
255
  * Stops previously started trace recording.
212
256
  */
213
- tracing::TraceRecordingState stopTracing();
257
+ tracing::HostTracingProfile stopTracing();
214
258
 
215
259
  private:
216
260
  HostTarget &target_;
@@ -226,12 +270,15 @@ class JSINSPECTOR_EXPORT HostTarget : public EnableExecutorFromThis<HostTarget>
226
270
  public:
227
271
  /**
228
272
  * Constructs a new HostTarget.
273
+ *
229
274
  * \param delegate The HostTargetDelegate that will
230
275
  * receive events from this HostTarget. The caller is responsible for ensuring
231
276
  * that the HostTargetDelegate outlives this object.
277
+ *
232
278
  * \param executor An executor that may be used to call methods on this
233
279
  * HostTarget while it exists. \c create additionally guarantees that the
234
280
  * executor will not be called after the HostTarget is destroyed.
281
+ *
235
282
  * \note Copies of the provided executor may be destroyed on arbitrary
236
283
  * threads, including after the HostTarget is destroyed. Callers must ensure
237
284
  * that such destructor calls are safe - e.g. if using a lambda as the
@@ -279,6 +326,7 @@ class JSINSPECTOR_EXPORT HostTarget : public EnableExecutorFromThis<HostTarget>
279
326
  */
280
327
  void sendCommand(HostCommand command);
281
328
 
329
+ #pragma region Tracing
282
330
  /**
283
331
  * Creates a new HostTracingAgent.
284
332
  * This Agent is not owned by the HostTarget. The Agent will be destroyed at
@@ -292,19 +340,16 @@ class JSINSPECTOR_EXPORT HostTarget : public EnableExecutorFromThis<HostTarget>
292
340
  * Starts trace recording for this HostTarget.
293
341
  *
294
342
  * \param mode In which mode to start the trace recording.
343
+ * \param enabledCategories The set of categories to enable.
344
+ *
295
345
  * \return false if already tracing, true otherwise.
296
346
  */
297
- bool startTracing(tracing::Mode mode);
347
+ bool startTracing(tracing::Mode mode, std::set<tracing::Category> enabledCategories);
298
348
 
299
349
  /**
300
350
  * Stops previously started trace recording.
301
351
  */
302
- tracing::TraceRecordingState stopTracing();
303
-
304
- /**
305
- * Returns the state of the background trace, running, stopped, or disabled
306
- */
307
- tracing::TracingState tracingState() const;
352
+ tracing::HostTracingProfile stopTracing();
308
353
 
309
354
  /**
310
355
  * Returns whether there is an active session with the Fusebox client, i.e.
@@ -313,22 +358,25 @@ class JSINSPECTOR_EXPORT HostTarget : public EnableExecutorFromThis<HostTarget>
313
358
  bool hasActiveSessionWithFuseboxClient() const;
314
359
 
315
360
  /**
316
- * Emits the trace recording for the first active session with the Fusebox
361
+ * Emits the HostTracingProfile for the first active session with the Fusebox
317
362
  * client.
318
363
  *
319
364
  * @see \c hasActiveFrontendSession
320
365
  */
321
- void emitTraceRecordingForFirstFuseboxClient(tracing::TraceRecordingState traceRecording) const;
366
+ void emitTracingProfileForFirstFuseboxClient(tracing::HostTracingProfile tracingProfile) const;
322
367
 
323
368
  /**
324
- * Emits a system state changed event to all active sessions.
369
+ * An endpoint for the Host to report frame timings that will be recorded if and only if there is currently an active
370
+ * tracing session.
325
371
  */
326
- void emitSystemStateChanged(bool isSingleHost) const;
372
+ void recordFrameTimings(tracing::FrameTimingSequence frameTimingSequence);
373
+ #pragma endregion
327
374
 
328
375
  private:
329
376
  /**
330
377
  * Constructs a new HostTarget.
331
378
  * The caller must call setExecutor immediately afterwards.
379
+ *
332
380
  * \param delegate The HostTargetDelegate that will
333
381
  * receive events from this HostTarget. The caller is responsible for ensuring
334
382
  * that the HostTargetDelegate outlives this object.
@@ -347,6 +395,7 @@ class JSINSPECTOR_EXPORT HostTarget : public EnableExecutorFromThis<HostTarget>
347
395
  std::unique_ptr<PerfMonitorUpdateHandler> perfMonitorUpdateHandler_;
348
396
  std::unique_ptr<HostRuntimeBinding> perfMetricsBinding_;
349
397
 
398
+ #pragma region Tracing
350
399
  /**
351
400
  * Current pending trace recording, which encapsulates the configuration of
352
401
  * the tracing session and the state.
@@ -354,6 +403,14 @@ class JSINSPECTOR_EXPORT HostTarget : public EnableExecutorFromThis<HostTarget>
354
403
  * Should only be allocated when there is an active tracing session.
355
404
  */
356
405
  std::unique_ptr<HostTargetTraceRecording> traceRecording_{nullptr};
406
+ /**
407
+ * Protects the state inside traceRecording_.
408
+ *
409
+ * Calls to tracing subsystem could happen from different threads, depending on the mode (Background or CDP) and
410
+ * the method: the Host could report frame timings from any arbitrary thread.
411
+ */
412
+ std::mutex tracingMutex_;
413
+ #pragma endregion
357
414
 
358
415
  inline HostTargetDelegate &getDelegate()
359
416
  {
@@ -8,12 +8,27 @@
8
8
  #include "HostTargetTraceRecording.h"
9
9
  #include "HostTarget.h"
10
10
 
11
+ #include <oscompat/OSCompat.h>
12
+
11
13
  namespace facebook::react::jsinspector_modern {
12
14
 
13
15
  HostTargetTraceRecording::HostTargetTraceRecording(
16
+ HostTarget& hostTarget,
14
17
  tracing::Mode tracingMode,
15
- HostTarget& hostTarget)
16
- : tracingMode_(tracingMode), hostTarget_(hostTarget) {}
18
+ std::set<tracing::Category> enabledCategories,
19
+ std::optional<HighResDuration> windowSize)
20
+ : hostTarget_(hostTarget),
21
+ tracingMode_(tracingMode),
22
+ enabledCategories_(std::move(enabledCategories)),
23
+ windowSize_(windowSize) {
24
+ if (windowSize) {
25
+ frameTimings_ = tracing::TimeWindowedBuffer<tracing::FrameTimingSequence>(
26
+ [](auto& sequence) { return sequence.beginDrawingTimestamp; },
27
+ *windowSize);
28
+ } else {
29
+ frameTimings_ = tracing::TimeWindowedBuffer<tracing::FrameTimingSequence>();
30
+ };
31
+ }
17
32
 
18
33
  void HostTargetTraceRecording::setTracedInstance(
19
34
  InstanceTarget* instanceTarget) {
@@ -29,14 +44,13 @@ void HostTargetTraceRecording::start() {
29
44
  hostTracingAgent_ == nullptr &&
30
45
  "Tracing Agent for the HostTarget was already initialized.");
31
46
 
32
- state_ = tracing::TraceRecordingState{
33
- .mode = tracingMode_,
34
- .startTime = HighResTimeStamp::now(),
35
- };
47
+ startTime_ = HighResTimeStamp::now();
48
+ state_ = tracing::TraceRecordingState(
49
+ tracingMode_, enabledCategories_, windowSize_);
36
50
  hostTracingAgent_ = hostTarget_.createTracingAgent(*state_);
37
51
  }
38
52
 
39
- tracing::TraceRecordingState HostTargetTraceRecording::stop() {
53
+ tracing::HostTracingProfile HostTargetTraceRecording::stop() {
40
54
  assert(
41
55
  hostTracingAgent_ != nullptr &&
42
56
  "TracingAgent for the HostTarget has not been initialized.");
@@ -48,7 +62,25 @@ tracing::TraceRecordingState HostTargetTraceRecording::stop() {
48
62
  auto state = std::move(*state_);
49
63
  state_.reset();
50
64
 
51
- return state;
65
+ auto startTime = *startTime_;
66
+ startTime_.reset();
67
+
68
+ return tracing::HostTracingProfile{
69
+ .processId = oscompat::getCurrentProcessId(),
70
+ .startTime = startTime,
71
+ .frameTimings = frameTimings_.pruneExpiredAndExtract(),
72
+ .instanceTracingProfiles = std::move(state.instanceTracingProfiles),
73
+ .runtimeSamplingProfiles = std::move(state.runtimeSamplingProfiles),
74
+ };
75
+ }
76
+
77
+ void HostTargetTraceRecording::recordFrameTimings(
78
+ tracing::FrameTimingSequence frameTimingSequence) {
79
+ assert(
80
+ state_.has_value() &&
81
+ "The state for this tracing session has not been initialized.");
82
+
83
+ frameTimings_.push(frameTimingSequence);
52
84
  }
53
85
 
54
86
  } // namespace facebook::react::jsinspector_modern
@@ -11,9 +11,15 @@
11
11
  #include "HostTarget.h"
12
12
  #include "InstanceTarget.h"
13
13
 
14
+ #include <jsinspector-modern/tracing/FrameTimingSequence.h>
15
+ #include <jsinspector-modern/tracing/HostTracingProfile.h>
16
+ #include <jsinspector-modern/tracing/TimeWindowedBuffer.h>
14
17
  #include <jsinspector-modern/tracing/TraceRecordingState.h>
18
+ #include <jsinspector-modern/tracing/TracingCategory.h>
19
+ #include <react/timing/primitives.h>
15
20
 
16
21
  #include <optional>
22
+ #include <set>
17
23
 
18
24
  namespace facebook::react::jsinspector_modern {
19
25
 
@@ -28,7 +34,11 @@ namespace facebook::react::jsinspector_modern {
28
34
  */
29
35
  class HostTargetTraceRecording {
30
36
  public:
31
- explicit HostTargetTraceRecording(tracing::Mode tracingMode, HostTarget &hostTarget);
37
+ HostTargetTraceRecording(
38
+ HostTarget &hostTarget,
39
+ tracing::Mode tracingMode,
40
+ std::set<tracing::Category> enabledCategories,
41
+ std::optional<HighResDuration> windowSize = std::nullopt);
32
42
 
33
43
  inline bool isBackgroundInitiated() const
34
44
  {
@@ -53,22 +63,34 @@ class HostTargetTraceRecording {
53
63
  void start();
54
64
 
55
65
  /**
56
- * Stops the recording and drops the recording state.
66
+ * Stops the recording and returns the recorded HostTracingProfile.
57
67
  *
58
68
  * Will deallocate all Tracing Agents.
59
69
  */
60
- tracing::TraceRecordingState stop();
70
+ tracing::HostTracingProfile stop();
71
+
72
+ /**
73
+ * Adds the frame timing sequence to the current state of this trace recording.
74
+ *
75
+ * The caller guarantees the protection from data races. This is protected by the tracing mutex in HostTarget.
76
+ */
77
+ void recordFrameTimings(tracing::FrameTimingSequence frameTimingSequence);
61
78
 
62
79
  private:
80
+ /**
81
+ * The Host for which this Trace Recording is going to happen.
82
+ */
83
+ HostTarget &hostTarget_;
84
+
63
85
  /**
64
86
  * The mode in which this trace recording was initialized.
65
87
  */
66
88
  tracing::Mode tracingMode_;
67
89
 
68
90
  /**
69
- * The Host for which this Trace Recording is going to happen.
91
+ * The timestamp at which this Trace Recording started.
70
92
  */
71
- HostTarget &hostTarget_;
93
+ std::optional<HighResTimeStamp> startTime_;
72
94
 
73
95
  /**
74
96
  * The state of the current Trace Recording.
@@ -81,6 +103,21 @@ class HostTargetTraceRecording {
81
103
  * Only allocated if the recording is enabled.
82
104
  */
83
105
  std::shared_ptr<HostTracingAgent> hostTracingAgent_;
106
+
107
+ /**
108
+ * The list of categories that are enabled for this recording.
109
+ */
110
+ std::set<tracing::Category> enabledCategories_;
111
+
112
+ /**
113
+ * The size of the time window for this recording.
114
+ */
115
+ std::optional<HighResDuration> windowSize_;
116
+
117
+ /**
118
+ * Frame timings captured on the Host side.
119
+ */
120
+ tracing::TimeWindowedBuffer<tracing::FrameTimingSequence> frameTimings_;
84
121
  };
85
122
 
86
123
  } // namespace facebook::react::jsinspector_modern