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
@@ -33,9 +33,6 @@ internal object ChangeBundleLocationDialog {
33
33
  ) {
34
34
  val settings = devSettings.packagerConnectionSettings
35
35
  val currentHost = settings.debugServerHost
36
- settings.debugServerHost = ""
37
- val defaultHost = settings.debugServerHost
38
- settings.debugServerHost = currentHost
39
36
 
40
37
  val layout = LinearLayout(context)
41
38
  layout.orientation = LinearLayout.VERTICAL
@@ -60,11 +57,11 @@ internal object ChangeBundleLocationDialog {
60
57
  input.setTextColor(-0x1000000)
61
58
  input.setText(currentHost)
62
59
 
63
- val defaultHostSuggestion = Button(context)
64
- defaultHostSuggestion.text = defaultHost
65
- defaultHostSuggestion.textSize = 12f
66
- defaultHostSuggestion.isAllCaps = false
67
- defaultHostSuggestion.setOnClickListener { input.setText(defaultHost) }
60
+ val currentHostSuggestion = Button(context)
61
+ currentHostSuggestion.text = currentHost
62
+ currentHostSuggestion.textSize = 12f
63
+ currentHostSuggestion.isAllCaps = false
64
+ currentHostSuggestion.setOnClickListener { input.setText(currentHost) }
68
65
 
69
66
  val networkHost = getDevServerNetworkIpAndPort(context)
70
67
  val networkHostSuggestion = Button(context)
@@ -80,8 +77,12 @@ internal object ChangeBundleLocationDialog {
80
77
  LinearLayout.LayoutParams.MATCH_PARENT,
81
78
  LinearLayout.LayoutParams.WRAP_CONTENT,
82
79
  )
83
- suggestionRow.addView(defaultHostSuggestion)
84
- suggestionRow.addView(networkHostSuggestion)
80
+ suggestionRow.addView(currentHostSuggestion)
81
+
82
+ if (currentHost != networkHost) {
83
+ // We don't want to display two buttons with the same host suggestion.
84
+ suggestionRow.addView(networkHostSuggestion)
85
+ }
85
86
 
86
87
  val instructions = TextView(context)
87
88
  instructions.text =
@@ -9,11 +9,17 @@ package com.facebook.react.devsupport
9
9
 
10
10
  import android.os.Handler
11
11
  import android.os.Looper
12
+ import com.facebook.common.logging.FLog
12
13
  import com.facebook.jni.HybridData
13
14
  import com.facebook.proguard.annotations.DoNotStrip
14
15
  import com.facebook.proguard.annotations.DoNotStripAny
16
+ import com.facebook.react.common.annotations.VisibleForTesting
15
17
  import com.facebook.soloader.SoLoader
16
18
  import java.io.Closeable
19
+ import java.nio.ByteBuffer
20
+ import java.nio.charset.StandardCharsets
21
+ import java.util.ArrayDeque
22
+ import java.util.Queue
17
23
  import java.util.concurrent.TimeUnit
18
24
  import okhttp3.OkHttpClient
19
25
  import okhttp3.Request
@@ -67,7 +73,7 @@ internal class CxxInspectorPackagerConnection(
67
73
  */
68
74
  @DoNotStripAny
69
75
  private interface IWebSocket : Closeable {
70
- fun send(message: String)
76
+ fun send(chunk: ByteBuffer)
71
77
 
72
78
  /**
73
79
  * Close the WebSocket connection. NOTE: There is no close() method in the C++ interface.
@@ -76,6 +82,95 @@ internal class CxxInspectorPackagerConnection(
76
82
  override fun close()
77
83
  }
78
84
 
85
+ /**
86
+ * A simple WebSocket wrapper that prevents having more than 16MiB of messages queued
87
+ * simultaneously. This is done to stop OkHttp from closing the WebSocket connection.
88
+ *
89
+ * https://github.com/facebook/react-native/issues/39651.
90
+ * https://github.com/square/okhttp/blob/4e7dbec1ea6c9cf8d80422ac9d44b9b185c749a3/okhttp/src/commonJvmAndroid/kotlin/okhttp3/internal/ws/RealWebSocket.kt#L684.
91
+ */
92
+ private class InspectorPackagerWebSocketImpl(
93
+ private val nativeWebSocket: WebSocket,
94
+ private val handler: Handler,
95
+ ) : IWebSocket {
96
+ private val messageQueue: Queue<Pair<String, Int>> = ArrayDeque()
97
+ private val queueLock = Any()
98
+ private val drainRunnable =
99
+ object : Runnable {
100
+ override fun run() {
101
+ FLog.d(TAG, "Attempting to drain the message queue after ${drainDelayMs}ms")
102
+ tryDrainQueue()
103
+ }
104
+ }
105
+
106
+ /**
107
+ * We are providing a String to OkHttp's WebSocket, because there is no guarantee that all CDP
108
+ * clients will support binary data format.
109
+ */
110
+ override fun send(chunk: ByteBuffer) {
111
+ synchronized(queueLock) {
112
+ val messageSize = chunk.capacity()
113
+ val message = StandardCharsets.UTF_8.decode(chunk).toString()
114
+ val currentQueueSize = nativeWebSocket.queueSize()
115
+
116
+ if (currentQueueSize + messageSize > MAX_QUEUE_SIZE) {
117
+ FLog.d(TAG, "Reached queue size limit. Queueing the message.")
118
+ messageQueue.offer(Pair(message, messageSize))
119
+ scheduleDrain()
120
+ } else {
121
+ if (messageQueue.isEmpty()) {
122
+ nativeWebSocket.send(message)
123
+ } else {
124
+ messageQueue.offer(Pair(message, messageSize))
125
+ tryDrainQueue()
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ override fun close() {
132
+ synchronized(queueLock) {
133
+ handler.removeCallbacks(drainRunnable)
134
+ messageQueue.clear()
135
+ nativeWebSocket.close(1000, "End of session")
136
+ }
137
+ }
138
+
139
+ private fun tryDrainQueue() {
140
+ synchronized(queueLock) {
141
+ while (messageQueue.isNotEmpty()) {
142
+ val (nextMessage, nextMessageSize) = messageQueue.peek() ?: break
143
+ val currentQueueSize = nativeWebSocket.queueSize()
144
+
145
+ if (currentQueueSize + nextMessageSize <= MAX_QUEUE_SIZE) {
146
+ messageQueue.poll()
147
+ if (!nativeWebSocket.send(nextMessage)) {
148
+ // The WebSocket is closing, closed, or cancelled.
149
+ handler.removeCallbacks(drainRunnable)
150
+ messageQueue.clear()
151
+
152
+ break
153
+ }
154
+ } else {
155
+ scheduleDrain()
156
+ break
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ private fun scheduleDrain() {
163
+ FLog.d(TAG, "Scheduled a task to drain messages queue.")
164
+ handler.removeCallbacks(drainRunnable)
165
+ handler.postDelayed(drainRunnable, drainDelayMs)
166
+ }
167
+
168
+ companion object {
169
+ private val TAG: String = InspectorPackagerWebSocketImpl::class.java.simpleName
170
+ private const val drainDelayMs: Long = 100
171
+ }
172
+ }
173
+
79
174
  /** Java implementation of the C++ InspectorPackagerConnectionDelegate interface. */
80
175
  private class DelegateImpl {
81
176
  private val httpClient =
@@ -130,15 +225,8 @@ internal class CxxInspectorPackagerConnection(
130
225
  }
131
226
  },
132
227
  )
133
- return object : IWebSocket {
134
- override fun send(message: String) {
135
- webSocket.send(message)
136
- }
137
228
 
138
- override fun close() {
139
- webSocket.close(1000, "End of session")
140
- }
141
- }
229
+ return InspectorPackagerWebSocketImpl(webSocket, handler)
142
230
  }
143
231
 
144
232
  @DoNotStrip
@@ -152,6 +240,8 @@ internal class CxxInspectorPackagerConnection(
152
240
  SoLoader.loadLibrary("react_devsupportjni")
153
241
  }
154
242
 
243
+ @VisibleForTesting internal const val MAX_QUEUE_SIZE = 16L * 1024 * 1024 // 16MiB
244
+
155
245
  @JvmStatic
156
246
  private external fun initHybrid(
157
247
  url: String,
@@ -8,6 +8,7 @@
8
8
  package com.facebook.react.devsupport
9
9
 
10
10
  import android.content.Context
11
+ import android.graphics.Color
11
12
  import android.graphics.Rect
12
13
  import android.view.Gravity
13
14
  import android.view.LayoutInflater
@@ -33,14 +34,21 @@ public class DefaultDevLoadingViewImplementation(
33
34
  private var devLoadingPopup: PopupWindow? = null
34
35
 
35
36
  override fun showMessage(message: String) {
36
- showMessage(message, color = null, backgroundColor = null)
37
+ showMessage(message, color = null, backgroundColor = null, dismissButton = false)
37
38
  }
38
39
 
39
- override fun showMessage(message: String, color: Double?, backgroundColor: Double?) {
40
+ override fun showMessage(
41
+ message: String,
42
+ color: Double?,
43
+ backgroundColor: Double?,
44
+ dismissButton: Boolean?,
45
+ ) {
40
46
  if (!isEnabled) {
41
47
  return
42
48
  }
43
- UiThreadUtil.runOnUiThread { showInternal(message, color, backgroundColor) }
49
+ UiThreadUtil.runOnUiThread {
50
+ showInternal(message, color, backgroundColor, dismissButton ?: false)
51
+ }
44
52
  }
45
53
 
46
54
  override fun updateProgress(status: String?, done: Int?, total: Int?) {
@@ -63,7 +71,12 @@ public class DefaultDevLoadingViewImplementation(
63
71
  }
64
72
  }
65
73
 
66
- private fun showInternal(message: String, color: Double?, backgroundColor: Double?) {
74
+ private fun showInternal(
75
+ message: String,
76
+ color: Double?,
77
+ backgroundColor: Double?,
78
+ dismissButton: Boolean,
79
+ ) {
67
80
  if (devLoadingPopup?.isShowing == true) {
68
81
  // already showing
69
82
  return
@@ -86,24 +99,56 @@ public class DefaultDevLoadingViewImplementation(
86
99
  val topOffset = rectangle.top
87
100
  val inflater =
88
101
  currentActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
89
- val view = inflater.inflate(R.layout.dev_loading_view, null) as TextView
90
- view.text = message
91
- if (color != null) {
92
- view.setTextColor(color.toInt())
102
+ val rootView = inflater.inflate(R.layout.dev_loading_view, null) as ViewGroup
103
+ val textView = rootView.findViewById<TextView>(R.id.loading_text)
104
+ textView.text = message
105
+
106
+ val dismissButtonView = rootView.findViewById<android.widget.Button>(R.id.dismiss_button)
107
+
108
+ if (dismissButton) {
109
+ dismissButtonView.visibility = android.view.View.VISIBLE
110
+ } else {
111
+ dismissButtonView.visibility = android.view.View.GONE
93
112
  }
94
- if (backgroundColor != null) {
95
- view.setBackgroundColor(backgroundColor.toInt())
113
+
114
+ // Use provided colors or defaults (matching iOS behavior)
115
+ val textColor = color?.toInt() ?: Color.WHITE
116
+ val bgColor = backgroundColor?.toInt() ?: Color.rgb(64, 64, 64) // Default grey
117
+
118
+ textView.setTextColor(textColor)
119
+ rootView.setBackgroundColor(bgColor)
120
+
121
+ if (dismissButton) {
122
+ dismissButtonView.setTextColor(textColor)
123
+
124
+ // Darken the background color for the button
125
+ val red = (Color.red(bgColor) * 0.7).toInt()
126
+ val green = (Color.green(bgColor) * 0.7).toInt()
127
+ val blue = (Color.blue(bgColor) * 0.7).toInt()
128
+ val darkerColor = Color.rgb(red, green, blue)
129
+
130
+ // Create rounded drawable for button
131
+ val drawable = android.graphics.drawable.GradientDrawable()
132
+ drawable.setColor(darkerColor)
133
+ drawable.cornerRadius = 15 * rootView.resources.displayMetrics.density
134
+ dismissButtonView.background = drawable
135
+
136
+ dismissButtonView.setOnClickListener { hideInternal() }
96
137
  }
97
- view.setOnClickListener { hideInternal() }
138
+
139
+ // Allow tapping anywhere on the banner to dismiss
140
+ rootView.setOnClickListener { hideInternal() }
141
+
98
142
  val popup =
99
143
  PopupWindow(
100
- view,
144
+ rootView,
101
145
  ViewGroup.LayoutParams.MATCH_PARENT,
102
146
  ViewGroup.LayoutParams.WRAP_CONTENT,
103
147
  )
104
148
  popup.showAtLocation(currentActivity.window.decorView, Gravity.NO_GRAVITY, 0, topOffset)
105
- devLoadingView = view
149
+ devLoadingView = textView // Store the TextView for updateProgress()
106
150
  devLoadingPopup = popup
151
+
107
152
  // TODO T164786028: Find out the root cause of the BadTokenException exception here
108
153
  } catch (e: WindowManager.BadTokenException) {
109
154
  FLog.e(
@@ -18,10 +18,10 @@ import com.facebook.react.devsupport.interfaces.RedBoxHandler
18
18
  import com.facebook.react.packagerconnection.RequestHandler
19
19
 
20
20
  /**
21
- * A simple factory that creates instances of [DevSupportManager] implementations. Uses reflection
22
- * to create BridgeDevSupportManager if it exists. This allows ProGuard to strip that class and its
23
- * dependencies in release builds. If the class isn't found, [PerftestDevSupportManager] is returned
24
- * instead.
21
+ * A simple factory that creates instances of [DevSupportManager] implementations.
22
+ *
23
+ * The first create() method is for the Old Architecture flow and is deprecated and should not be
24
+ * used anymore. The second create() method is for the New Architecture/Bridgeless flow.
25
25
  */
26
26
  internal class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
27
27
 
@@ -44,57 +44,12 @@ internal class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
44
44
  surfaceDelegateFactory: SurfaceDelegateFactory?,
45
45
  devLoadingViewManager: DevLoadingViewManager?,
46
46
  pausedInDebuggerOverlayManager: PausedInDebuggerOverlayManager?,
47
- ): DevSupportManager {
48
- return if (!enableOnCreate) {
49
- ReleaseDevSupportManager()
50
- } else
51
- try {
52
- // Developer support is enabled, we now must choose whether to return a DevSupportManager,
53
- // or a more lean profiling-only PerftestDevSupportManager. We make the choice by first
54
- // trying to return the full support DevSupportManager and if it fails, then just
55
- // return PerftestDevSupportManager.
56
-
57
- // ProGuard is surprisingly smart in this case and will keep a class if it detects a call
58
- // to
59
- // Class.forName() with a static string. So instead we generate a quasi-dynamic string to
60
- // confuse it.
61
- val className =
62
- StringBuilder(DEVSUPPORT_IMPL_PACKAGE)
63
- .append(".")
64
- .append(DEVSUPPORT_IMPL_CLASS)
65
- .toString()
66
- val devSupportManagerClass = Class.forName(className)
67
- val constructor =
68
- devSupportManagerClass.getConstructor(
69
- Context::class.java,
70
- ReactInstanceDevHelper::class.java,
71
- String::class.java,
72
- Boolean::class.javaPrimitiveType,
73
- RedBoxHandler::class.java,
74
- DevBundleDownloadListener::class.java,
75
- Int::class.javaPrimitiveType,
76
- MutableMap::class.java,
77
- SurfaceDelegateFactory::class.java,
78
- DevLoadingViewManager::class.java,
79
- PausedInDebuggerOverlayManager::class.java,
80
- )
81
- constructor.newInstance(
82
- applicationContext,
83
- reactInstanceManagerHelper,
84
- packagerPathForJSBundleName,
85
- true,
86
- redBoxHandler,
87
- devBundleDownloadListener,
88
- minNumShakes,
89
- customPackagerCommandHandlers,
90
- surfaceDelegateFactory,
91
- devLoadingViewManager,
92
- pausedInDebuggerOverlayManager,
93
- ) as DevSupportManager
94
- } catch (e: Exception) {
95
- PerftestDevSupportManager(applicationContext)
96
- }
97
- }
47
+ ): DevSupportManager =
48
+ if (!enableOnCreate) {
49
+ ReleaseDevSupportManager()
50
+ } else {
51
+ PerftestDevSupportManager(applicationContext)
52
+ }
98
53
 
99
54
  override fun create(
100
55
  applicationContext: Context,
@@ -129,9 +84,4 @@ internal class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
129
84
  } else {
130
85
  ReleaseDevSupportManager()
131
86
  }
132
-
133
- private companion object {
134
- private const val DEVSUPPORT_IMPL_PACKAGE = "com.facebook.react.devsupport"
135
- private const val DEVSUPPORT_IMPL_CLASS = "BridgeDevSupportManager"
136
- }
137
87
  }
@@ -52,6 +52,8 @@ import com.facebook.react.devsupport.DevServerHelper.PackagerCommandListener
52
52
  import com.facebook.react.devsupport.InspectorFlags.getFuseboxEnabled
53
53
  import com.facebook.react.devsupport.StackTraceHelper.convertJavaStackTrace
54
54
  import com.facebook.react.devsupport.StackTraceHelper.convertJsStackTrace
55
+ import com.facebook.react.devsupport.inspector.TracingState
56
+ import com.facebook.react.devsupport.inspector.TracingStateProvider
55
57
  import com.facebook.react.devsupport.interfaces.BundleLoadCallback
56
58
  import com.facebook.react.devsupport.interfaces.DebuggerFrontendPanelName
57
59
  import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener
@@ -66,8 +68,6 @@ import com.facebook.react.devsupport.interfaces.PackagerStatusCallback
66
68
  import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager
67
69
  import com.facebook.react.devsupport.interfaces.RedBoxHandler
68
70
  import com.facebook.react.devsupport.interfaces.StackFrame
69
- import com.facebook.react.devsupport.interfaces.TracingState
70
- import com.facebook.react.devsupport.interfaces.TracingStateProvider
71
71
  import com.facebook.react.devsupport.perfmonitor.PerfMonitorDevHelper
72
72
  import com.facebook.react.devsupport.perfmonitor.PerfMonitorOverlayManager
73
73
  import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
@@ -396,21 +396,21 @@ public abstract class DevSupportManagerBase(
396
396
 
397
397
  val analyzePerformanceItemString =
398
398
  when (tracingState) {
399
- TracingState.ENABLEDINBACKGROUNDMODE ->
399
+ TracingState.ENABLED_IN_BACKGROUND_MODE ->
400
400
  applicationContext.getString(R.string.catalyst_performance_background)
401
- TracingState.ENABLEDINCDPMODE ->
401
+ TracingState.ENABLED_IN_CDP_MODE ->
402
402
  applicationContext.getString(R.string.catalyst_performance_cdp)
403
403
  TracingState.DISABLED ->
404
404
  applicationContext.getString(R.string.catalyst_performance_disabled)
405
405
  }
406
406
 
407
- if (!isConnected || tracingState == TracingState.ENABLEDINCDPMODE) {
407
+ if (!isConnected || tracingState == TracingState.ENABLED_IN_CDP_MODE) {
408
408
  disabledItemKeys.add(analyzePerformanceItemString)
409
409
  }
410
410
 
411
411
  options[analyzePerformanceItemString] =
412
412
  when (tracingState) {
413
- TracingState.ENABLEDINBACKGROUNDMODE ->
413
+ TracingState.ENABLED_IN_BACKGROUND_MODE ->
414
414
  DevOptionHandler {
415
415
  UiThreadUtil.runOnUiThread {
416
416
  if (reactInstanceDevHelper is PerfMonitorDevHelper) {
@@ -427,7 +427,7 @@ public abstract class DevSupportManagerBase(
427
427
  if (reactInstanceDevHelper is PerfMonitorDevHelper)
428
428
  reactInstanceDevHelper.inspectorTarget?.resumeBackgroundTrace()
429
429
  }
430
- TracingState.ENABLEDINCDPMODE -> DevOptionHandler {}
430
+ TracingState.ENABLED_IN_CDP_MODE -> DevOptionHandler {}
431
431
  }
432
432
  }
433
433
 
@@ -18,10 +18,7 @@ import com.facebook.react.packagerconnection.RequestHandler
18
18
 
19
19
  public interface DevSupportManagerFactory {
20
20
 
21
- /**
22
- * Factory used by the Old Architecture flow to create a [DevSupportManager] and a
23
- * [BridgeDevSupportManager]
24
- */
21
+ /** Factory used by the Old Architecture flow to create a [DevSupportManager]. */
25
22
  @Deprecated(
26
23
  message =
27
24
  "Use the other create() method with useDevSupport parameter for New Architecture. This method will be removed in a future release.",
@@ -0,0 +1,17 @@
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
+ package com.facebook.react.devsupport.inspector
9
+
10
+ internal data class FrameTimingSequence(
11
+ val id: Int,
12
+ val threadId: Int,
13
+ val beginDrawingTimestamp: Long,
14
+ val commitTimestamp: Long,
15
+ val endDrawingTimestamp: Long,
16
+ val screenshot: String? = null,
17
+ )
@@ -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
+ package com.facebook.react.devsupport.inspector
9
+
10
+ import android.graphics.Bitmap
11
+ import android.os.Build
12
+ import android.os.Handler
13
+ import android.os.Looper
14
+ import android.os.Process
15
+ import android.util.Base64
16
+ import android.view.FrameMetrics
17
+ import android.view.PixelCopy
18
+ import android.view.Window
19
+ import com.facebook.proguard.annotations.DoNotStripAny
20
+ import java.io.ByteArrayOutputStream
21
+ import kotlin.coroutines.resume
22
+ import kotlin.coroutines.suspendCoroutine
23
+ import kotlinx.coroutines.CoroutineScope
24
+ import kotlinx.coroutines.Dispatchers
25
+ import kotlinx.coroutines.launch
26
+
27
+ @DoNotStripAny
28
+ internal class FrameTimingsObserver(
29
+ private val window: Window,
30
+ private val screenshotsEnabled: Boolean,
31
+ private val onFrameTimingSequence: (sequence: FrameTimingSequence) -> Unit,
32
+ ) {
33
+ private val handler = Handler(Looper.getMainLooper())
34
+ private var frameCounter: Int = 0
35
+ private var bitmapBuffer: Bitmap? = null
36
+
37
+ private val frameMetricsListener =
38
+ Window.OnFrameMetricsAvailableListener { _, frameMetrics, _dropCount ->
39
+ val beginDrawingTimestamp = frameMetrics.getMetric(FrameMetrics.VSYNC_TIMESTAMP)
40
+ val commitTimestamp =
41
+ beginDrawingTimestamp + frameMetrics.getMetric(FrameMetrics.INPUT_HANDLING_DURATION)
42
+ +frameMetrics.getMetric(FrameMetrics.ANIMATION_DURATION)
43
+ +frameMetrics.getMetric(FrameMetrics.LAYOUT_MEASURE_DURATION)
44
+ +frameMetrics.getMetric(FrameMetrics.DRAW_DURATION)
45
+ +frameMetrics.getMetric(FrameMetrics.SYNC_DURATION)
46
+ val endDrawingTimestamp =
47
+ beginDrawingTimestamp + frameMetrics.getMetric(FrameMetrics.TOTAL_DURATION)
48
+
49
+ val frameId = frameCounter++
50
+ val threadId = Process.myTid()
51
+
52
+ CoroutineScope(Dispatchers.Default).launch {
53
+ val screenshot = if (screenshotsEnabled) captureScreenshot() else null
54
+
55
+ onFrameTimingSequence(
56
+ FrameTimingSequence(
57
+ frameId,
58
+ threadId,
59
+ beginDrawingTimestamp,
60
+ commitTimestamp,
61
+ endDrawingTimestamp,
62
+ screenshot,
63
+ )
64
+ )
65
+ }
66
+ }
67
+
68
+ private suspend fun captureScreenshot(): String? = suspendCoroutine { continuation ->
69
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
70
+ continuation.resume(null)
71
+ return@suspendCoroutine
72
+ }
73
+
74
+ val decorView = window.decorView
75
+ val width = decorView.width
76
+ val height = decorView.height
77
+
78
+ // Reuse bitmap if dimensions haven't changed
79
+ val bitmap =
80
+ bitmapBuffer?.let {
81
+ if (it.width == width && it.height == height) {
82
+ it
83
+ } else {
84
+ null
85
+ }
86
+ } ?: Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888).also { bitmapBuffer = it }
87
+
88
+ PixelCopy.request(
89
+ window,
90
+ bitmap,
91
+ { copyResult ->
92
+ if (copyResult == PixelCopy.SUCCESS) {
93
+ CoroutineScope(Dispatchers.Default).launch {
94
+ try {
95
+ val scaleFactor = 0.25f
96
+ val scaledWidth = (width * scaleFactor).toInt()
97
+ val scaledHeight = (height * scaleFactor).toInt()
98
+ val scaledBitmap =
99
+ Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true)
100
+
101
+ val outputStream = ByteArrayOutputStream()
102
+ val compressFormat =
103
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
104
+ Bitmap.CompressFormat.WEBP_LOSSY
105
+ else Bitmap.CompressFormat.WEBP
106
+ scaledBitmap.compress(compressFormat, 0, outputStream)
107
+ val bytes = outputStream.toByteArray()
108
+ val base64 = Base64.encodeToString(bytes, Base64.NO_WRAP)
109
+ continuation.resume(base64)
110
+
111
+ scaledBitmap.recycle()
112
+ } catch (e: Exception) {
113
+ continuation.resume(null)
114
+ }
115
+ }
116
+ } else {
117
+ continuation.resume(null)
118
+ }
119
+ },
120
+ handler,
121
+ )
122
+ }
123
+
124
+ fun start() {
125
+ frameCounter = 0
126
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
127
+ return
128
+ }
129
+
130
+ window.addOnFrameMetricsAvailableListener(frameMetricsListener, handler)
131
+ }
132
+
133
+ fun stop() {
134
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
135
+ return
136
+ }
137
+
138
+ window.removeOnFrameMetricsAvailableListener(frameMetricsListener)
139
+ handler.removeCallbacksAndMessages(null)
140
+
141
+ bitmapBuffer?.recycle()
142
+ bitmapBuffer = null
143
+ }
144
+ }
@@ -66,7 +66,7 @@ internal object InspectorNetworkHelper {
66
66
  response.body().use { responseBody ->
67
67
  if (responseBody != null) {
68
68
  val inputStream = responseBody.byteStream()
69
- val chunkSize = 1024
69
+ val chunkSize = 8 * 1024 // 8Kb
70
70
  val buffer = ByteArray(chunkSize)
71
71
  var bytesRead: Int
72
72
 
@@ -0,0 +1,17 @@
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
+ package com.facebook.react.devsupport.inspector
9
+
10
+ import com.facebook.proguard.annotations.DoNotStripAny
11
+
12
+ @DoNotStripAny
13
+ internal enum class TracingState {
14
+ DISABLED, // There is no active trace
15
+ ENABLED_IN_BACKGROUND_MODE, // Trace is currently running in background mode
16
+ ENABLED_IN_CDP_MODE, // Trace is currently running in CDP mode
17
+ }
@@ -0,0 +1,15 @@
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
+ package com.facebook.react.devsupport.inspector
9
+
10
+ import com.facebook.proguard.annotations.DoNotStripAny
11
+
12
+ @DoNotStripAny
13
+ internal fun interface TracingStateListener {
14
+ public fun onStateChanged(state: TracingState, screenshotsEnabled: Boolean)
15
+ }
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- package com.facebook.react.devsupport.interfaces
8
+ package com.facebook.react.devsupport.inspector
9
9
 
10
10
  internal interface TracingStateProvider {
11
11
  fun getTracingState(): TracingState