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,144 @@
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 "HostTracingProfileSerializer.h"
9
+ #include "RuntimeSamplingProfileTraceEventSerializer.h"
10
+ #include "TraceEventGenerator.h"
11
+ #include "TraceEventSerializer.h"
12
+
13
+ namespace facebook::react::jsinspector_modern::tracing {
14
+
15
+ namespace {
16
+
17
+ folly::dynamic generateNewChunk(uint16_t chunkSize) {
18
+ folly::dynamic chunk = folly::dynamic::array();
19
+ chunk.reserve(chunkSize);
20
+
21
+ return chunk;
22
+ }
23
+
24
+ /**
25
+ * Hardcoded layer tree ID for all recorded frames.
26
+ * https://chromedevtools.github.io/devtools-protocol/tot/LayerTree/
27
+ */
28
+ constexpr int FALLBACK_LAYER_TREE_ID = 1;
29
+
30
+ } // namespace
31
+
32
+ /* static */ void HostTracingProfileSerializer::emitAsDataCollectedChunks(
33
+ HostTracingProfile&& hostTracingProfile,
34
+ const std::function<void(folly::dynamic&&)>& chunkCallback,
35
+ uint16_t traceEventsChunkSize,
36
+ uint16_t profileTraceEventsChunkSize) {
37
+ emitFrameTimings(
38
+ std::move(hostTracingProfile.frameTimings),
39
+ hostTracingProfile.processId,
40
+ hostTracingProfile.startTime,
41
+ chunkCallback,
42
+ traceEventsChunkSize);
43
+
44
+ auto instancesProfiles =
45
+ std::move(hostTracingProfile.instanceTracingProfiles);
46
+ IdGenerator profileIdGenerator;
47
+
48
+ for (auto& instanceProfile : instancesProfiles) {
49
+ emitPerformanceTraceEvents(
50
+ std::move(instanceProfile.performanceTraceEvents),
51
+ chunkCallback,
52
+ traceEventsChunkSize);
53
+ }
54
+
55
+ RuntimeSamplingProfileTraceEventSerializer::serializeAndDispatch(
56
+ std::move(hostTracingProfile.runtimeSamplingProfiles),
57
+ profileIdGenerator,
58
+ hostTracingProfile.startTime,
59
+ chunkCallback,
60
+ profileTraceEventsChunkSize);
61
+ }
62
+
63
+ /* static */ void HostTracingProfileSerializer::emitPerformanceTraceEvents(
64
+ std::vector<TraceEvent>&& events,
65
+ const std::function<void(folly::dynamic&&)>& chunkCallback,
66
+ uint16_t chunkSize) {
67
+ folly::dynamic chunk = generateNewChunk(chunkSize);
68
+
69
+ for (auto& event : events) {
70
+ if (chunk.size() == chunkSize) {
71
+ chunkCallback(std::move(chunk));
72
+ chunk = generateNewChunk(chunkSize);
73
+ }
74
+
75
+ chunk.push_back(TraceEventSerializer::serialize(std::move(event)));
76
+ }
77
+
78
+ if (!chunk.empty()) {
79
+ chunkCallback(std::move(chunk));
80
+ }
81
+ }
82
+
83
+ /* static */ void HostTracingProfileSerializer::emitFrameTimings(
84
+ std::vector<FrameTimingSequence>&& frameTimings,
85
+ ProcessId processId,
86
+ HighResTimeStamp recordingStartTimestamp,
87
+ const std::function<void(folly::dynamic&& chunk)>& chunkCallback,
88
+ uint16_t chunkSize) {
89
+ if (frameTimings.empty()) {
90
+ return;
91
+ }
92
+
93
+ folly::dynamic chunk = generateNewChunk(chunkSize);
94
+ auto setLayerTreeIdEvent = TraceEventGenerator::createSetLayerTreeIdEvent(
95
+ "", // Hardcoded frame name for the default (and only) layer.
96
+ FALLBACK_LAYER_TREE_ID,
97
+ processId,
98
+ frameTimings.front().threadId,
99
+ recordingStartTimestamp);
100
+ chunk.push_back(
101
+ TraceEventSerializer::serialize(std::move(setLayerTreeIdEvent)));
102
+
103
+ for (auto&& frameTimingSequence : frameTimings) {
104
+ if (chunk.size() >= chunkSize) {
105
+ chunkCallback(std::move(chunk));
106
+ chunk = generateNewChunk(chunkSize);
107
+ }
108
+
109
+ auto [beginDrawingEvent, commitEvent, endDrawingEvent] =
110
+ TraceEventGenerator::createFrameTimingsEvents(
111
+ frameTimingSequence.id,
112
+ FALLBACK_LAYER_TREE_ID,
113
+ frameTimingSequence.beginDrawingTimestamp,
114
+ frameTimingSequence.commitTimestamp,
115
+ frameTimingSequence.endDrawingTimestamp,
116
+ processId,
117
+ frameTimingSequence.threadId);
118
+
119
+ chunk.push_back(
120
+ TraceEventSerializer::serialize(std::move(beginDrawingEvent)));
121
+ chunk.push_back(TraceEventSerializer::serialize(std::move(commitEvent)));
122
+ chunk.push_back(
123
+ TraceEventSerializer::serialize(std::move(endDrawingEvent)));
124
+
125
+ if (frameTimingSequence.screenshot.has_value()) {
126
+ auto screenshotEvent = TraceEventGenerator::createScreenshotEvent(
127
+ frameTimingSequence.id,
128
+ FALLBACK_LAYER_TREE_ID,
129
+ std::move(frameTimingSequence.screenshot.value()),
130
+ frameTimingSequence.endDrawingTimestamp,
131
+ processId,
132
+ frameTimingSequence.threadId);
133
+
134
+ chunk.push_back(
135
+ TraceEventSerializer::serialize(std::move(screenshotEvent)));
136
+ }
137
+ }
138
+
139
+ if (!chunk.empty()) {
140
+ chunkCallback(std::move(chunk));
141
+ }
142
+ }
143
+
144
+ } // namespace facebook::react::jsinspector_modern::tracing
@@ -7,8 +7,9 @@
7
7
 
8
8
  #pragma once
9
9
 
10
+ #include "FrameTimingSequence.h"
11
+ #include "HostTracingProfile.h"
10
12
  #include "TraceEvent.h"
11
- #include "TraceRecordingState.h"
12
13
 
13
14
  #include <folly/dynamic.h>
14
15
  #include <vector>
@@ -16,27 +17,34 @@
16
17
  namespace facebook::react::jsinspector_modern::tracing {
17
18
 
18
19
  /**
19
- * A serializer for TraceRecordingState that can be used for tranforming the
20
- * recording into sequence of serialized Trace Events.
20
+ * A serializer for HostTracingProfile that can be used for transforming the
21
+ * profile into sequence of serialized Trace Events.
21
22
  */
22
- class TraceRecordingStateSerializer {
23
+ class HostTracingProfileSerializer {
23
24
  public:
24
25
  /**
25
- * Transforms the recording into a sequence of serialized Trace Events, which
26
- * is split in chunks of sizes \p performanceTraceEventsChunkSize or
26
+ * Transforms the profile into a sequence of serialized Trace Events, which
27
+ * is split in chunks of sizes \p traceEventsChunkSize or
27
28
  * \p profileTraceEventsChunkSize, depending on type, and sent with \p
28
29
  * chunkCallback.
29
30
  */
30
31
  static void emitAsDataCollectedChunks(
31
- TraceRecordingState &&recording,
32
+ HostTracingProfile &&hostTracingProfile,
32
33
  const std::function<void(folly::dynamic &&chunk)> &chunkCallback,
33
- uint16_t performanceTraceEventsChunkSize,
34
+ uint16_t traceEventsChunkSize,
34
35
  uint16_t profileTraceEventsChunkSize);
35
36
 
36
37
  static void emitPerformanceTraceEvents(
37
38
  std::vector<TraceEvent> &&events,
38
39
  const std::function<void(folly::dynamic &&chunk)> &chunkCallback,
39
40
  uint16_t chunkSize);
41
+
42
+ static void emitFrameTimings(
43
+ std::vector<FrameTimingSequence> &&frameTimings,
44
+ ProcessId processId,
45
+ HighResTimeStamp recordingStartTimestamp,
46
+ const std::function<void(folly::dynamic &&chunk)> &chunkCallback,
47
+ uint16_t chunkSize);
40
48
  };
41
49
 
42
50
  } // namespace facebook::react::jsinspector_modern::tracing
@@ -7,7 +7,9 @@
7
7
 
8
8
  #include "PerformanceTracer.h"
9
9
  #include "Timing.h"
10
+ #include "TraceEventGenerator.h"
10
11
  #include "TraceEventSerializer.h"
12
+ #include "TracingCategory.h"
11
13
 
12
14
  #include <jsinspector-modern/network/CdpNetwork.h>
13
15
  #include <jsinspector-modern/network/HttpUtils.h>
@@ -138,7 +140,7 @@ std::optional<std::vector<TraceEvent>> PerformanceTracer::stopTracing() {
138
140
  events.emplace_back(
139
141
  TraceEvent{
140
142
  .name = "TracingStartedInPage",
141
- .cat = "disabled-by-default-devtools.timeline",
143
+ .cat = {Category::HiddenTimeline},
142
144
  .ph = 'I',
143
145
  .ts = currentTraceStartTime,
144
146
  .pid = processId_,
@@ -149,7 +151,7 @@ std::optional<std::vector<TraceEvent>> PerformanceTracer::stopTracing() {
149
151
  events.emplace_back(
150
152
  TraceEvent{
151
153
  .name = "ReactNative-TracingStopped",
152
- .cat = "disabled-by-default-devtools.timeline",
154
+ .cat = {Category::HiddenTimeline},
153
155
  .ph = 'I',
154
156
  .ts = currentTraceEndTime,
155
157
  .pid = processId_,
@@ -187,7 +189,8 @@ void PerformanceTracer::reportMeasure(
187
189
  const std::string& name,
188
190
  HighResTimeStamp start,
189
191
  HighResDuration duration,
190
- folly::dynamic&& detail) {
192
+ folly::dynamic&& detail,
193
+ std::optional<folly::dynamic> stackTrace) {
191
194
  if (!tracingAtomic_) {
192
195
  return;
193
196
  }
@@ -204,6 +207,7 @@ void PerformanceTracer::reportMeasure(
204
207
  .duration = duration,
205
208
  .detail = std::move(detail),
206
209
  .threadId = getCurrentThreadId(),
210
+ .stackTrace = std::move(stackTrace),
207
211
  });
208
212
  }
209
213
 
@@ -214,7 +218,8 @@ void PerformanceTracer::reportTimeStamp(
214
218
  std::optional<std::string> trackName,
215
219
  std::optional<std::string> trackGroup,
216
220
  std::optional<ConsoleTimeStampColor> color,
217
- std::optional<folly::dynamic> detail) {
221
+ std::optional<folly::dynamic> detail,
222
+ std::optional<folly::dynamic> stackTrace) {
218
223
  if (!tracingAtomic_) {
219
224
  return;
220
225
  }
@@ -233,6 +238,7 @@ void PerformanceTracer::reportTimeStamp(
233
238
  .trackGroup = std::move(trackGroup),
234
239
  .color = std::move(color),
235
240
  .detail = std::move(detail),
241
+ .stackTrace = std::move(stackTrace),
236
242
  .threadId = getCurrentThreadId(),
237
243
  });
238
244
  }
@@ -306,6 +312,27 @@ void PerformanceTracer::reportResourceSendRequest(
306
312
  });
307
313
  }
308
314
 
315
+ void PerformanceTracer::reportResourceReceivedData(
316
+ const std::string& devtoolsRequestId,
317
+ HighResTimeStamp start,
318
+ int encodedDataLength) {
319
+ if (!tracingAtomic_) {
320
+ return;
321
+ };
322
+
323
+ std::lock_guard<std::mutex> lock(mutex_);
324
+ if (!tracingAtomic_) {
325
+ return;
326
+ }
327
+
328
+ enqueueEvent(
329
+ PerformanceTracerResourceReceivedData{
330
+ .requestId = devtoolsRequestId,
331
+ .start = start,
332
+ .encodedDataLength = encodedDataLength,
333
+ .threadId = getCurrentThreadId()});
334
+ }
335
+
309
336
  void PerformanceTracer::reportResourceReceiveResponse(
310
337
  const std::string& devtoolsRequestId,
311
338
  HighResTimeStamp start,
@@ -370,7 +397,7 @@ void PerformanceTracer::reportResourceFinish(
370
397
  return TraceEvent{
371
398
  .id = profileId,
372
399
  .name = "Profile",
373
- .cat = "disabled-by-default-v8.cpu_profiler",
400
+ .cat = {Category::JavaScriptSampling},
374
401
  .ph = 'P',
375
402
  .ts = profileTimestamp,
376
403
  .pid = processId,
@@ -393,7 +420,7 @@ PerformanceTracer::constructRuntimeProfileChunkTraceEvent(
393
420
  return TraceEvent{
394
421
  .id = profileId,
395
422
  .name = "ProfileChunk",
396
- .cat = "disabled-by-default-v8.cpu_profiler",
423
+ .cat = {Category::JavaScriptSampling},
397
424
  .ph = 'P',
398
425
  .ts = chunkTimestamp,
399
426
  .pid = processId,
@@ -525,7 +552,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
525
552
  events.emplace_back(
526
553
  TraceEvent{
527
554
  .name = "RunTask",
528
- .cat = "disabled-by-default-devtools.timeline",
555
+ .cat = {Category::HiddenTimeline},
529
556
  .ph = 'X',
530
557
  .ts = event.start,
531
558
  .pid = processId_,
@@ -537,7 +564,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
537
564
  events.emplace_back(
538
565
  TraceEvent{
539
566
  .name = "RunMicrotasks",
540
- .cat = "v8.execute",
567
+ .cat = {Category::RuntimeExecution},
541
568
  .ph = 'X',
542
569
  .ts = event.start,
543
570
  .pid = processId_,
@@ -557,7 +584,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
557
584
  events.emplace_back(
558
585
  TraceEvent{
559
586
  .name = std::move(event.name),
560
- .cat = "blink.user_timing",
587
+ .cat = {Category::UserTiming},
561
588
  .ph = 'I',
562
589
  .ts = event.start,
563
590
  .pid = processId_,
@@ -571,6 +598,10 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
571
598
  beginEventArgs =
572
599
  folly::dynamic::object("detail", folly::toJson(event.detail));
573
600
  }
601
+ if (event.stackTrace) {
602
+ beginEventArgs["data"] = folly::dynamic::object(
603
+ "rnStackTrace", std::move(*event.stackTrace));
604
+ }
574
605
 
575
606
  auto eventId = ++performanceMeasureCount_;
576
607
 
@@ -578,7 +609,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
578
609
  TraceEvent{
579
610
  .id = eventId,
580
611
  .name = event.name,
581
- .cat = "blink.user_timing",
612
+ .cat = {Category::UserTiming},
582
613
  .ph = 'b',
583
614
  .ts = event.start,
584
615
  .pid = processId_,
@@ -589,7 +620,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
589
620
  TraceEvent{
590
621
  .id = eventId,
591
622
  .name = std::move(event.name),
592
- .cat = "blink.user_timing",
623
+ .cat = {Category::UserTiming},
593
624
  .ph = 'e',
594
625
  .ts = event.start + event.duration,
595
626
  .pid = processId_,
@@ -629,7 +660,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
629
660
  events.emplace_back(
630
661
  TraceEvent{
631
662
  .name = "TimeStamp",
632
- .cat = "devtools.timeline",
663
+ .cat = {Category::Timeline},
633
664
  .ph = 'I',
634
665
  .ts = event.createdAt,
635
666
  .pid = processId_,
@@ -660,11 +691,14 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
660
691
  }
661
692
  data["devtools"] = folly::toJson(devtoolsDetail);
662
693
  }
694
+ if (event.stackTrace) {
695
+ data["rnStackTrace"] = std::move(*event.stackTrace);
696
+ }
663
697
 
664
698
  events.emplace_back(
665
699
  TraceEvent{
666
700
  .name = "TimeStamp",
667
- .cat = "devtools.timeline",
701
+ .cat = {Category::Timeline},
668
702
  .ph = 'I',
669
703
  .ts = event.createdAt,
670
704
  .pid = processId_,
@@ -684,7 +718,24 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
684
718
  events.emplace_back(
685
719
  TraceEvent{
686
720
  .name = "ResourceSendRequest",
687
- .cat = "devtools.timeline",
721
+ .cat = {Category::Timeline},
722
+ .ph = 'I',
723
+ .ts = event.start,
724
+ .pid = processId_,
725
+ .s = 't',
726
+ .tid = event.threadId,
727
+ .args = folly::dynamic::object("data", std::move(data)),
728
+ });
729
+ },
730
+ [&](PerformanceTracerResourceReceivedData&& event) {
731
+ folly::dynamic data = folly::dynamic::object(
732
+ "encodedDataLength", event.encodedDataLength)(
733
+ "requestId", std::move(event.requestId));
734
+
735
+ events.emplace_back(
736
+ TraceEvent{
737
+ .name = "ResourceReceivedData",
738
+ .cat = {Category::Timeline},
688
739
  .ph = 'I',
689
740
  .ts = event.start,
690
741
  .pid = processId_,
@@ -710,7 +761,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
710
761
  events.emplace_back(
711
762
  TraceEvent{
712
763
  .name = "ResourceReceiveResponse",
713
- .cat = "devtools.timeline",
764
+ .cat = {Category::Timeline},
714
765
  .ph = 'I',
715
766
  .ts = event.start,
716
767
  .pid = processId_,
@@ -728,7 +779,7 @@ void PerformanceTracer::enqueueTraceEventsFromPerformanceTracerEvent(
728
779
  events.emplace_back(
729
780
  TraceEvent{
730
781
  .name = "ResourceFinish",
731
- .cat = "devtools.timeline",
782
+ .cat = {Category::Timeline},
732
783
  .ph = 'I',
733
784
  .ts = event.start,
734
785
  .pid = processId_,
@@ -81,7 +81,8 @@ class PerformanceTracer {
81
81
  const std::string &name,
82
82
  HighResTimeStamp start,
83
83
  HighResDuration duration,
84
- folly::dynamic &&detail = nullptr);
84
+ folly::dynamic &&detail = nullptr,
85
+ std::optional<folly::dynamic> stackTrace = nullptr);
85
86
 
86
87
  /**
87
88
  * Record a "TimeStamp" Trace Event - a labelled entry on Performance
@@ -97,7 +98,8 @@ class PerformanceTracer {
97
98
  std::optional<std::string> trackName = std::nullopt,
98
99
  std::optional<std::string> trackGroup = std::nullopt,
99
100
  std::optional<ConsoleTimeStampColor> color = std::nullopt,
100
- std::optional<folly::dynamic> detail = std::nullopt);
101
+ std::optional<folly::dynamic> detail = std::nullopt,
102
+ std::optional<folly::dynamic> stackTrace = std::nullopt);
101
103
 
102
104
  /**
103
105
  * Record an Event Loop tick, which will be represented as an Event Loop task
@@ -134,6 +136,12 @@ class PerformanceTracer {
134
136
  const std::string &requestMethod,
135
137
  const Headers &headers);
136
138
 
139
+ /**
140
+ * Record a "ResourceReceivedData" event.
141
+ * If not currently tracing, this is a no-op.
142
+ */
143
+ void reportResourceReceivedData(const std::string &devtoolsRequestId, HighResTimeStamp start, int encodedDataLength);
144
+
137
145
  /**
138
146
  * Record a "ResourceReceiveResponse" event. Paired with other "Resource*"
139
147
  * events, renders a network request timeline in the Performance panel Network
@@ -243,6 +251,7 @@ class PerformanceTracer {
243
251
  HighResDuration duration;
244
252
  folly::dynamic detail;
245
253
  ThreadId threadId;
254
+ std::optional<folly::dynamic> stackTrace;
246
255
  HighResTimeStamp createdAt = HighResTimeStamp::now();
247
256
  };
248
257
 
@@ -254,6 +263,7 @@ class PerformanceTracer {
254
263
  std::optional<std::string> trackGroup;
255
264
  std::optional<ConsoleTimeStampColor> color;
256
265
  std::optional<folly::dynamic> detail;
266
+ std::optional<folly::dynamic> stackTrace;
257
267
  ThreadId threadId;
258
268
  HighResTimeStamp createdAt = HighResTimeStamp::now();
259
269
  };
@@ -277,6 +287,14 @@ class PerformanceTracer {
277
287
  HighResTimeStamp createdAt = HighResTimeStamp::now();
278
288
  };
279
289
 
290
+ struct PerformanceTracerResourceReceivedData {
291
+ std::string requestId;
292
+ HighResTimeStamp start;
293
+ int encodedDataLength;
294
+ ThreadId threadId;
295
+ HighResTimeStamp createdAt = HighResTimeStamp::now();
296
+ };
297
+
280
298
  struct PerformanceTracerResourceReceiveResponse {
281
299
  std::string requestId;
282
300
  HighResTimeStamp start;
@@ -298,6 +316,7 @@ class PerformanceTracer {
298
316
  PerformanceTracerEventMeasure,
299
317
  PerformanceTracerResourceSendRequest,
300
318
  PerformanceTracerResourceReceiveResponse,
319
+ PerformanceTracerResourceReceivedData,
301
320
  PerformanceTracerResourceFinish>;
302
321
 
303
322
  #pragma mark - Private fields and methods
@@ -27,6 +27,11 @@ class TargetTracingAgent {
27
27
  (void)state_;
28
28
  }
29
29
 
30
+ bool isRunningInBackgroundMode()
31
+ {
32
+ return state_.mode == tracing::Mode::Background;
33
+ }
34
+
30
35
  protected:
31
36
  TraceRecordingState &state_;
32
37
  };
@@ -0,0 +1,158 @@
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 <algorithm>
11
+ #include <functional>
12
+ #include <optional>
13
+ #include <vector>
14
+
15
+ #include <react/timing/primitives.h>
16
+
17
+ namespace facebook::react::jsinspector_modern::tracing {
18
+
19
+ /**
20
+ * The currentBufferStartTime_ is initialized once first element is pushed.
21
+ */
22
+ constexpr HighResTimeStamp kCurrentBufferStartTimeUninitialized = HighResTimeStamp::min();
23
+
24
+ template <typename T>
25
+ class TimeWindowedBuffer {
26
+ public:
27
+ using TimestampAccessor = std::function<HighResTimeStamp(const T &)>;
28
+
29
+ TimeWindowedBuffer() : timestampAccessor_(std::nullopt), windowSize_(std::nullopt) {}
30
+
31
+ TimeWindowedBuffer(TimestampAccessor timestampAccessor, HighResDuration windowSize)
32
+ : timestampAccessor_(std::move(timestampAccessor)), windowSize_(windowSize)
33
+ {
34
+ }
35
+
36
+ void push(const T &element)
37
+ {
38
+ if (timestampAccessor_) {
39
+ auto timestamp = (*timestampAccessor_)(element);
40
+ enqueueElement(element, timestamp);
41
+ } else {
42
+ enqueueElement(element, HighResTimeStamp::now());
43
+ }
44
+ }
45
+
46
+ void push(T &&element)
47
+ {
48
+ if (timestampAccessor_) {
49
+ auto timestamp = (*timestampAccessor_)(element);
50
+ enqueueElement(std::move(element), timestamp);
51
+ } else {
52
+ enqueueElement(std::move(element), HighResTimeStamp::now());
53
+ }
54
+ }
55
+
56
+ void clear()
57
+ {
58
+ primaryBuffer_.clear();
59
+ alternativeBuffer_.clear();
60
+ currentBufferIndex_ = BufferIndex::Primary;
61
+ currentBufferStartTime_ = kCurrentBufferStartTimeUninitialized;
62
+ }
63
+
64
+ /**
65
+ * Forces immediate removal of elements that are outside the time window.
66
+ * The right boundary of the window is the reference timestamp passed as an argument.
67
+ */
68
+ std::vector<T> pruneExpiredAndExtract(HighResTimeStamp windowRightBoundary = HighResTimeStamp::now())
69
+ {
70
+ std::vector<T> result;
71
+
72
+ for (auto &wrappedElement : getPreviousBuffer()) {
73
+ if (isInsideTimeWindow(wrappedElement, windowRightBoundary)) {
74
+ result.push_back(std::move(wrappedElement.element));
75
+ }
76
+ }
77
+
78
+ for (auto &wrappedElement : getCurrentBuffer()) {
79
+ if (isInsideTimeWindow(wrappedElement, windowRightBoundary)) {
80
+ result.push_back(std::move(wrappedElement.element));
81
+ }
82
+ }
83
+
84
+ clear();
85
+ return result;
86
+ }
87
+
88
+ private:
89
+ enum class BufferIndex { Primary, Alternative };
90
+
91
+ struct TimestampedElement {
92
+ T element;
93
+ HighResTimeStamp timestamp;
94
+ };
95
+
96
+ std::vector<TimestampedElement> &getCurrentBuffer()
97
+ {
98
+ return currentBufferIndex_ == BufferIndex::Primary ? primaryBuffer_ : alternativeBuffer_;
99
+ }
100
+
101
+ std::vector<TimestampedElement> &getPreviousBuffer()
102
+ {
103
+ return currentBufferIndex_ == BufferIndex::Primary ? alternativeBuffer_ : primaryBuffer_;
104
+ }
105
+
106
+ void enqueueElement(const T &element, HighResTimeStamp timestamp)
107
+ {
108
+ if (windowSize_) {
109
+ if (currentBufferStartTime_ == kCurrentBufferStartTimeUninitialized) {
110
+ currentBufferStartTime_ = timestamp;
111
+ } else if (timestamp > currentBufferStartTime_ + *windowSize_) {
112
+ // We moved past the current buffer. We need to switch the other buffer as current.
113
+ currentBufferIndex_ =
114
+ currentBufferIndex_ == BufferIndex::Primary ? BufferIndex::Alternative : BufferIndex::Primary;
115
+ getCurrentBuffer().clear();
116
+ currentBufferStartTime_ = timestamp;
117
+ }
118
+ }
119
+
120
+ getCurrentBuffer().push_back({element, timestamp});
121
+ }
122
+
123
+ void enqueueElement(T &&element, HighResTimeStamp timestamp)
124
+ {
125
+ if (windowSize_) {
126
+ if (currentBufferStartTime_ == kCurrentBufferStartTimeUninitialized) {
127
+ currentBufferStartTime_ = timestamp;
128
+ } else if (timestamp > currentBufferStartTime_ + *windowSize_) {
129
+ // We moved past the current buffer. We need to switch the other buffer as current.
130
+ currentBufferIndex_ =
131
+ currentBufferIndex_ == BufferIndex::Primary ? BufferIndex::Alternative : BufferIndex::Primary;
132
+ getCurrentBuffer().clear();
133
+ currentBufferStartTime_ = timestamp;
134
+ }
135
+ }
136
+
137
+ getCurrentBuffer().push_back({std::move(element), timestamp});
138
+ }
139
+
140
+ bool isInsideTimeWindow(const TimestampedElement &element, HighResTimeStamp windowRightBoundary) const
141
+ {
142
+ if (!windowSize_) {
143
+ return true;
144
+ }
145
+
146
+ return element.timestamp >= windowRightBoundary - *windowSize_ && element.timestamp <= windowRightBoundary;
147
+ }
148
+
149
+ std::optional<TimestampAccessor> timestampAccessor_;
150
+ std::optional<HighResDuration> windowSize_;
151
+
152
+ std::vector<TimestampedElement> primaryBuffer_;
153
+ std::vector<TimestampedElement> alternativeBuffer_;
154
+ BufferIndex currentBufferIndex_ = BufferIndex::Primary;
155
+ HighResTimeStamp currentBufferStartTime_{kCurrentBufferStartTimeUninitialized};
156
+ };
157
+
158
+ } // namespace facebook::react::jsinspector_modern::tracing
@@ -7,6 +7,7 @@
7
7
 
8
8
  #pragma once
9
9
 
10
+ #include <jsinspector-modern/tracing/TracingCategory.h>
10
11
  #include <react/timing/primitives.h>
11
12
 
12
13
  #include <folly/dynamic.h>
@@ -40,7 +41,7 @@ struct TraceEvent {
40
41
  * A comma separated list of categories for the event, configuring how
41
42
  * events are shown in the Trace Viewer UI.
42
43
  */
43
- std::string cat;
44
+ Categories cat;
44
45
 
45
46
  /**
46
47
  * The event type. This is a single character which changes depending on the