react-native-tvos 0.83.1-0 → 0.84.0-0rc0

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 (563) 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 +3 -3
  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 +3 -3
  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 +40 -4
  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 +1 -12
  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/systeminfo/ReactNativeVersion.kt +3 -3
  234. package/ReactAndroid/src/main/java/com/facebook/react/packagerconnection/PackagerConnectionSettings.kt +15 -8
  235. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +0 -9
  236. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +46 -12
  237. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +3 -3
  238. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostInspectorTarget.kt +11 -17
  239. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +52 -0
  240. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +92 -3
  241. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +62 -8
  242. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSKeyDispatcher.kt +65 -0
  243. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +19 -2
  244. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +1 -2
  245. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +5 -36
  246. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyOptimizer.java +9 -91
  247. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +1 -1
  248. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt +47 -0
  249. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java +0 -2
  250. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +4 -23
  251. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +1 -7
  252. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +1 -11
  253. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +1 -47
  254. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIViewOperationQueue.java +0 -16
  255. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/OutlineDrawable.kt +1 -1
  256. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +3 -36
  257. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyDownEvent.kt +23 -0
  258. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyEvent.kt +156 -0
  259. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/KeyUpEvent.kt +24 -0
  260. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +29 -4
  261. package/ReactAndroid/src/main/java/com/facebook/react/views/image/ReactImageView.kt +12 -9
  262. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +1 -1
  263. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +36 -3
  264. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +21 -11
  265. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/VirtualViewContainerStateExperimental.kt +7 -0
  266. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewAccessibilityDelegate.kt +31 -15
  267. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +127 -32
  268. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +19 -21
  269. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/view/ReactVirtualView.kt +3 -11
  270. package/ReactAndroid/src/main/java/com/facebook/react/views/virtual/viewexperimental/ReactVirtualViewExperimental.kt +3 -12
  271. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionWebSocket.cpp +29 -2
  272. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +98 -3
  273. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +62 -26
  274. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +145 -103
  275. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +31 -22
  276. package/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +1 -3
  277. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +5 -23
  278. package/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +2 -7
  279. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapperBase.h +0 -24
  280. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  281. package/ReactAndroid/src/main/jni/react/jni/JSLoader.h +2 -1
  282. package/ReactAndroid/src/main/jni/react/jni/JavaModuleWrapper.cpp +0 -1
  283. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.cpp +1 -29
  284. package/ReactAndroid/src/main/jni/react/jni/ModuleRegistryBuilder.h +1 -2
  285. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +0 -4
  286. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +145 -17
  287. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +193 -19
  288. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactInstance.cpp +2 -1
  289. package/ReactAndroid/src/main/jni/react/tracing/PerformanceTracerCxxInterop.cpp +1 -1
  290. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp +62 -63
  291. package/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h +5 -7
  292. package/ReactAndroid/src/main/jni/third-party/folly/CMakeLists.txt +1 -0
  293. package/ReactAndroid/src/main/res/devsupport/drawable/ic_perf_issue.xml +10 -0
  294. package/ReactAndroid/src/main/res/devsupport/layout/dev_loading_view.xml +41 -15
  295. package/ReactAndroid/src/main/res/devsupport/layout/fps_view.xml +1 -1
  296. package/ReactAndroid/src/main/res/devsupport/values/strings.xml +1 -0
  297. package/ReactAndroid/src/main/res/views/uimanager/values-ne/strings.xml +16 -0
  298. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.h +2 -0
  299. package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.mm +38 -5
  300. package/ReactCommon/cxxreact/JSBigString.h +14 -5
  301. package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +4 -5
  302. package/ReactCommon/cxxreact/ReactMarker.cpp +0 -1
  303. package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
  304. package/ReactCommon/devtoolsruntimesettings/DevToolsRuntimeSettings.cpp +1 -1
  305. package/ReactCommon/hermes/React-hermes.podspec +1 -0
  306. package/ReactCommon/jsi/jsi/jsi.cpp +6 -1
  307. package/ReactCommon/jsi/jsi/jsi.h +73 -0
  308. package/ReactCommon/jsi/jsi/test/testlib.cpp +2 -2
  309. package/ReactCommon/jsiexecutor/CMakeLists.txt +3 -1
  310. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +3 -0
  311. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +2 -43
  312. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +3 -8
  313. package/ReactCommon/jsinspector-modern/ConsoleTask.cpp +27 -0
  314. package/ReactCommon/jsinspector-modern/ConsoleTask.h +38 -0
  315. package/ReactCommon/jsinspector-modern/ConsoleTaskContext.cpp +46 -0
  316. package/ReactCommon/jsinspector-modern/ConsoleTaskContext.h +102 -0
  317. package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.cpp +55 -0
  318. package/ReactCommon/jsinspector-modern/ConsoleTaskOrchestrator.h +48 -0
  319. package/ReactCommon/jsinspector-modern/HostAgent.cpp +9 -10
  320. package/ReactCommon/jsinspector-modern/HostAgent.h +2 -2
  321. package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -6
  322. package/ReactCommon/jsinspector-modern/HostTarget.h +73 -16
  323. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.cpp +40 -8
  324. package/ReactCommon/jsinspector-modern/HostTargetTraceRecording.h +42 -5
  325. package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +54 -21
  326. package/ReactCommon/jsinspector-modern/InstanceAgent.cpp +2 -11
  327. package/ReactCommon/jsinspector-modern/InstanceTarget.h +2 -2
  328. package/ReactCommon/jsinspector-modern/PerfMonitorV2.cpp +9 -1
  329. package/ReactCommon/jsinspector-modern/PerfMonitorV2.h +4 -1
  330. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +3 -2
  331. package/ReactCommon/jsinspector-modern/RuntimeAgent.h +1 -1
  332. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +12 -0
  333. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +16 -13
  334. package/ReactCommon/jsinspector-modern/RuntimeTargetConsole.cpp +106 -1
  335. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +30 -18
  336. package/ReactCommon/jsinspector-modern/TracingAgent.h +5 -4
  337. package/ReactCommon/jsinspector-modern/tests/ConsoleCreateTaskTest.cpp +131 -0
  338. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +53 -0
  339. package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +20 -0
  340. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +25 -55
  341. package/ReactCommon/jsinspector-modern/tests/ReactInstanceIntegrationTest.cpp +1 -0
  342. package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +116 -0
  343. package/ReactCommon/jsinspector-modern/tests/TracingTest.h +95 -0
  344. package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +60 -0
  345. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfile.h +43 -0
  346. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +144 -0
  347. package/ReactCommon/jsinspector-modern/tracing/{TraceRecordingStateSerializer.h → HostTracingProfileSerializer.h} +16 -8
  348. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +67 -16
  349. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +21 -2
  350. package/ReactCommon/jsinspector-modern/tracing/TargetTracingAgent.h +5 -0
  351. package/ReactCommon/jsinspector-modern/tracing/TimeWindowedBuffer.h +158 -0
  352. package/ReactCommon/jsinspector-modern/tracing/TraceEvent.h +2 -1
  353. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +104 -0
  354. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +59 -0
  355. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +2 -1
  356. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingState.h +18 -7
  357. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +139 -0
  358. package/ReactCommon/jsinspector-modern/tracing/tests/TimeWindowedBufferTest.cpp +352 -0
  359. package/ReactCommon/jsitooling/React-jsitooling.podspec +4 -0
  360. package/ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.cpp +54 -0
  361. package/{ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.h → ReactCommon/jsitooling/react/runtime/JSRuntimeBindings.h} +4 -6
  362. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +43 -31
  363. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +55 -40
  364. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +234 -180
  365. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +24 -18
  366. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +43 -31
  367. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +91 -64
  368. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +5 -1
  369. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSStable.h +0 -4
  370. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +12 -9
  371. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModule.h +7 -2
  372. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +30 -10
  373. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h +17 -6
  374. package/ReactCommon/react/nativemodule/core/iostests/RCTTurboModuleTests.mm +0 -1
  375. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.mm +1 -4
  376. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.h +0 -4
  377. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +43 -60
  378. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +11 -36
  379. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +53 -38
  380. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +22 -16
  381. package/ReactCommon/react/nativemodule/samples/ReactCommon-Samples.podspec +1 -0
  382. package/ReactCommon/react/nativemodule/samples/platform/android/NativeSampleTurboModuleSpec.java +24 -3
  383. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.h +76 -13
  384. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTNativeSampleTurboModuleSpec.mm +74 -64
  385. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +17 -13
  386. package/ReactCommon/react/networking/NetworkReporter.cpp +26 -22
  387. package/ReactCommon/react/networking/React-networking.podspec +0 -1
  388. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.cpp +4 -2
  389. package/ReactCommon/react/performance/timeline/CMakeLists.txt +1 -0
  390. package/ReactCommon/react/performance/timeline/PerformanceEntryReporter.cpp +10 -2
  391. package/ReactCommon/react/performance/timeline/React-performancetimeline.podspec +1 -0
  392. package/ReactCommon/react/renderer/animated/AnimatedModule.cpp +104 -78
  393. package/ReactCommon/react/renderer/animated/AnimatedModule.h +10 -2
  394. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +174 -75
  395. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +19 -1
  396. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +68 -46
  397. package/ReactCommon/react/renderer/animated/drivers/FrameAnimationDriver.cpp +1 -0
  398. package/ReactCommon/react/renderer/animated/internal/AnimatedMountingOverrideDelegate.cpp +1 -1
  399. package/ReactCommon/react/renderer/animated/nodes/ColorAnimatedNode.cpp +0 -1
  400. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.cpp +103 -4
  401. package/ReactCommon/react/renderer/animated/nodes/InterpolationAnimatedNode.h +9 -0
  402. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.cpp +5 -1
  403. package/ReactCommon/react/renderer/animated/nodes/PropsAnimatedNode.h +9 -0
  404. package/ReactCommon/react/renderer/animated/nodes/RoundAnimatedNode.cpp +1 -1
  405. package/ReactCommon/react/renderer/animated/nodes/ValueAnimatedNode.cpp +1 -1
  406. package/ReactCommon/react/renderer/animated/tests/AnimatedNodeTests.cpp +67 -0
  407. package/ReactCommon/react/renderer/animated/tests/AnimationDriverTests.cpp +59 -0
  408. package/ReactCommon/react/renderer/animated/tests/AnimationTestsBase.h +2 -1
  409. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +307 -0
  410. package/ReactCommon/react/renderer/animationbackend/AnimatedProps.h +323 -1
  411. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h +133 -0
  412. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +100 -0
  413. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +246 -0
  414. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsSerializer.h +17 -0
  415. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +93 -94
  416. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +23 -5
  417. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.cpp +75 -0
  418. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +32 -0
  419. package/ReactCommon/react/renderer/animations/LayoutAnimationKeyFrameManager.cpp +2 -2
  420. package/ReactCommon/react/renderer/attributedstring/AttributedStringBox.h +3 -0
  421. package/ReactCommon/react/renderer/components/image/ImageProps.cpp +2 -2
  422. package/ReactCommon/react/renderer/components/image/ImageProps.h +2 -2
  423. package/ReactCommon/react/renderer/components/image/ImageShadowNode.cpp +9 -2
  424. package/ReactCommon/react/renderer/components/image/conversions.h +5 -0
  425. package/ReactCommon/react/renderer/components/text/BaseTextProps.cpp +2 -1
  426. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +5 -1
  427. package/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +21 -1
  428. package/ReactCommon/react/renderer/core/ConcreteShadowNode.h +14 -0
  429. package/ReactCommon/react/renderer/core/DynamicEventPayload.cpp +10 -0
  430. package/ReactCommon/react/renderer/core/DynamicEventPayload.h +6 -1
  431. package/ReactCommon/react/renderer/core/DynamicPointerEvent.cpp +30 -0
  432. package/ReactCommon/react/renderer/core/DynamicPointerEvent.h +29 -0
  433. package/ReactCommon/react/renderer/core/EventDispatcher.cpp +1 -1
  434. package/ReactCommon/react/renderer/core/EventEmitter.cpp +11 -14
  435. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +3 -3
  436. package/ReactCommon/react/renderer/core/Props.cpp +23 -8
  437. package/ReactCommon/react/renderer/core/Props.h +6 -4
  438. package/ReactCommon/react/renderer/core/ShadowNode.cpp +4 -10
  439. package/ReactCommon/react/renderer/core/tests/ShadowNodeTest.cpp +32 -0
  440. package/ReactCommon/react/renderer/css/CSSSyntaxParser.h +7 -0
  441. package/ReactCommon/react/renderer/debug/CMakeLists.txt +7 -0
  442. package/ReactCommon/react/renderer/debug/flags.h +3 -2
  443. package/ReactCommon/react/renderer/graphics/BlendMode.h +2 -0
  444. package/ReactCommon/react/renderer/graphics/Filter.h +2 -0
  445. package/ReactCommon/react/renderer/imagemanager/ImageManager.h +3 -0
  446. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +23 -12
  447. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +8 -3
  448. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +16 -4
  449. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageRequestParams.h +9 -4
  450. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/conversions.h +8 -4
  451. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +1 -1
  452. package/ReactCommon/react/renderer/imagemanager/primitives.h +15 -6
  453. package/ReactCommon/react/renderer/mounting/MountingCoordinator.cpp +0 -11
  454. package/ReactCommon/react/renderer/mounting/MountingCoordinator.h +0 -4
  455. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +0 -20
  456. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +3 -3
  457. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +2 -3
  458. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +6 -0
  459. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  460. package/ReactCommon/react/runtime/PlatformTimerRegistry.h +2 -0
  461. package/ReactCommon/react/runtime/ReactInstance.cpp +21 -14
  462. package/ReactCommon/react/runtime/ReactInstance.h +5 -1
  463. package/ReactCommon/react/runtime/TimerManager.cpp +11 -53
  464. package/ReactCommon/react/runtime/TimerManager.h +7 -12
  465. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +3 -2
  466. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +10 -6
  467. package/ReactCommon/yoga/yoga/algorithm/FlexDirection.h +6 -6
  468. package/ReactCommon/yoga/yoga/algorithm/SizingMode.h +4 -4
  469. package/ReactCommon/yoga/yoga/style/Style.h +8 -8
  470. package/ReactCommon/yoga/yoga/style/StyleLength.h +7 -0
  471. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -0
  472. package/flow/HermesInternalType.js +6 -6
  473. package/flow/bom.js.flow +35 -28
  474. package/flow/cssom.js.flow +3 -3
  475. package/flow/dom.js.flow +34 -33
  476. package/index.js +3 -0
  477. package/index.js.flow +8 -0
  478. package/jest/mock.js +2 -2
  479. package/jest/mockComponent.js +1 -1
  480. package/jest/setup.js +1 -1
  481. package/package.json +12 -12
  482. package/react-native.config.js +0 -17
  483. package/scripts/cocoapods/new_architecture.rb +7 -1
  484. package/scripts/cocoapods/spm.rb +28 -10
  485. package/scripts/cocoapods/utils.rb +4 -4
  486. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +7 -6
  487. package/scripts/ios-configure-glog.sh +6 -1
  488. package/scripts/react_native_pods.rb +8 -0
  489. package/sdks/.hermesv1version +1 -1
  490. package/sdks/.hermesversion +1 -1
  491. package/sdks/hermes-engine/hermes-engine.podspec +39 -31
  492. package/sdks/hermes-engine/hermes-utils.rb +7 -14
  493. package/sdks/hermes-engine/version.properties +2 -2
  494. package/src/private/animated/NativeAnimatedHelper.js +130 -125
  495. package/src/private/animated/NativeAnimatedValidation.js +7 -4
  496. package/src/private/animated/createAnimatedPropsHook.js +13 -5
  497. package/src/private/animated/createAnimatedPropsMemoHook.js +10 -10
  498. package/src/private/components/virtualview/VirtualView.js +16 -9
  499. package/src/private/components/virtualview/logger/VirtualViewLogger.js +21 -0
  500. package/src/private/components/virtualview/logger/VirtualViewLoggerTypes.js +24 -0
  501. package/src/private/devsupport/devmenu/elementinspector/ElementProperties.js +1 -1
  502. package/src/private/devsupport/devmenu/elementinspector/Inspector.js +6 -25
  503. package/src/private/devsupport/devmenu/elementinspector/InspectorPanel.js +1 -27
  504. package/src/private/devsupport/devmenu/elementinspector/XHRInterceptor.js +3 -2
  505. package/src/private/featureflags/ReactNativeFeatureFlags.js +63 -42
  506. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  507. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +12 -9
  508. package/src/private/renderer/errorhandling/ErrorHandlers.js +7 -4
  509. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  510. package/src/private/specs_DEPRECATED/modules/NativeAnimatedModule.js +4 -0
  511. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -0
  512. package/src/private/webapis/dom/events/CustomEvent.js +3 -3
  513. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentElementInstanceHandle.js +1 -1
  514. package/src/private/webapis/dom/nodes/internals/ReactNativeDocumentInstanceHandle.js +1 -1
  515. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +29 -29
  516. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +1 -1
  517. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +2 -0
  518. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  519. package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +4 -1
  520. package/src/private/webapis/geometry/DOMRectReadOnly.js +1 -1
  521. package/src/private/webapis/html/events/MessageEvent.js +3 -3
  522. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +3 -3
  523. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +53 -5
  524. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +2 -2
  525. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +4 -4
  526. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +1 -1
  527. package/src/private/webapis/mutationobserver/MutationObserver.js +1 -1
  528. package/src/private/webapis/mutationobserver/MutationRecord.js +1 -1
  529. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +4 -4
  530. package/src/private/webapis/performance/Performance.js +1 -1
  531. package/src/private/webapis/performance/UserTiming.js +1 -1
  532. package/src/private/webapis/performance/specs/NativePerformance.js +3 -3
  533. package/src/private/webapis/structuredClone/structuredClone.js +3 -3
  534. package/src/types/globals.d.ts +30 -1
  535. package/third-party-podspecs/RCT-Folly.podspec +1 -0
  536. package/React/CxxModule/RCTCxxModule.h +0 -29
  537. package/React/CxxModule/RCTCxxModule.mm +0 -87
  538. package/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.kt +0 -146
  539. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CallbackImpl.kt +0 -45
  540. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt +0 -25
  541. package/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.kt +0 -61
  542. package/ReactAndroid/src/main/java/com/facebook/react/bridge/NotThreadSafeBridgeIdleDebugListener.kt +0 -36
  543. package/ReactAndroid/src/main/java/com/facebook/react/bridge/OnBatchCompleteListener.kt +0 -21
  544. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactCxxErrorHandler.kt +0 -54
  545. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactInstanceManagerInspectorTarget.kt +0 -78
  546. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.kt +0 -105
  547. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/TracingState.kt +0 -19
  548. package/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DidJSUpdateUiDuringFrameDetector.kt +0 -157
  549. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeKind.kt +0 -32
  550. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/debug/NotThreadSafeViewHierarchyUpdateDebugListener.kt +0 -30
  551. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationController.kt +0 -87
  552. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/layoutanimation/LayoutAnimationListener.kt +0 -23
  553. package/ReactAndroid/src/main/jni/react/jni/CxxModuleWrapper.h +0 -37
  554. package/ReactAndroid/src/main/jni/react/jni/JReactCxxErrorHandler.cpp +0 -20
  555. package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.cpp +0 -175
  556. package/ReactAndroid/src/main/jni/react/jni/ReactInstanceManagerInspectorTarget.h +0 -75
  557. package/ReactCommon/jsinspector-modern/tracing/TraceRecordingStateSerializer.cpp +0 -68
  558. package/ReactCommon/jsinspector-modern/tracing/TracingState.h +0 -24
  559. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.cpp +0 -212
  560. package/ReactCommon/react/nativemodule/core/ReactCommon/TurboCxxModule.h +0 -40
  561. package/src/private/devsupport/devmenu/elementinspector/NetworkOverlay.js +0 -628
  562. package/src/private/devsupport/devmenu/perfmonitor/PerformanceOverlay.js +0 -66
  563. /package/ReactCommon/jsi/jsi/{hermes.h → hermes-interfaces.h} +0 -0
@@ -620,15 +620,89 @@ internal object TextLayoutManager {
620
620
  )
621
621
  }
622
622
 
623
- val desiredWidth = ceil(Layout.getDesiredWidth(text, paint)).toInt()
623
+ // Pre-Android 15: Use existing advance-based logic
624
+ if (
625
+ Build.VERSION.SDK_INT < Build.VERSION_CODES.VANILLA_ICE_CREAM ||
626
+ !ReactNativeFeatureFlags.fixTextClippingAndroid15useBoundsForWidth()
627
+ ) {
628
+ val desiredWidth = ceil(Layout.getDesiredWidth(text, paint)).toInt()
629
+
630
+ val layoutWidth =
631
+ when (widthYogaMeasureMode) {
632
+ YogaMeasureMode.EXACTLY -> floor(width).toInt()
633
+ YogaMeasureMode.AT_MOST -> min(desiredWidth, floor(width).toInt())
634
+ else -> desiredWidth
635
+ }
636
+ return buildLayout(
637
+ text,
638
+ layoutWidth,
639
+ includeFontPadding,
640
+ textBreakStrategy,
641
+ hyphenationFrequency,
642
+ alignment,
643
+ justificationMode,
644
+ ellipsizeMode,
645
+ maxNumberOfLines,
646
+ paint,
647
+ )
648
+ }
649
+
650
+ // Android 15+: Need to account for visual bounds
651
+ // Step 1: Create unconstrained layout to get visual bounds width
652
+ val unconstrainedLayout =
653
+ buildLayout(
654
+ text,
655
+ Int.MAX_VALUE / 2,
656
+ includeFontPadding,
657
+ textBreakStrategy,
658
+ hyphenationFrequency,
659
+ alignment,
660
+ justificationMode,
661
+ null,
662
+ ReactConstants.UNSET,
663
+ paint,
664
+ )
665
+
666
+ // Calculate visual bounds width from unconstrained layout
667
+ var desiredVisualWidth = 0f
668
+ for (i in 0 until unconstrainedLayout.lineCount) {
669
+ val lineWidth = unconstrainedLayout.getLineRight(i) - unconstrainedLayout.getLineLeft(i)
670
+ desiredVisualWidth = max(desiredVisualWidth, lineWidth)
671
+ }
624
672
 
625
673
  val layoutWidth =
626
674
  when (widthYogaMeasureMode) {
627
- YogaMeasureMode.EXACTLY -> floor(width).toInt()
628
- YogaMeasureMode.AT_MOST -> min(desiredWidth, floor(width).toInt())
629
- else -> desiredWidth
675
+ YogaMeasureMode.AT_MOST -> min(ceil(desiredVisualWidth).toInt(), floor(width).toInt())
676
+ else -> ceil(desiredVisualWidth).toInt()
630
677
  }
631
678
 
679
+ // Step 2: Create final layout with correct width
680
+ return buildLayout(
681
+ text,
682
+ layoutWidth,
683
+ includeFontPadding,
684
+ textBreakStrategy,
685
+ hyphenationFrequency,
686
+ alignment,
687
+ justificationMode,
688
+ ellipsizeMode,
689
+ maxNumberOfLines,
690
+ paint,
691
+ )
692
+ }
693
+
694
+ private fun buildLayout(
695
+ text: Spannable,
696
+ layoutWidth: Int,
697
+ includeFontPadding: Boolean,
698
+ textBreakStrategy: Int,
699
+ hyphenationFrequency: Int,
700
+ alignment: Layout.Alignment,
701
+ justificationMode: Int,
702
+ ellipsizeMode: TextUtils.TruncateAt?,
703
+ maxNumberOfLines: Int,
704
+ paint: TextPaint,
705
+ ): Layout {
632
706
  val builder =
633
707
  StaticLayout.Builder.obtain(text, 0, text.length, paint, layoutWidth)
634
708
  .setAlignment(alignment)
@@ -649,6 +723,13 @@ internal object TextLayoutManager {
649
723
  builder.setUseLineSpacingFromFallbacks(true)
650
724
  }
651
725
 
726
+ if (
727
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM &&
728
+ ReactNativeFeatureFlags.fixTextClippingAndroid15useBoundsForWidth()
729
+ ) {
730
+ builder.setUseBoundsForWidth(true)
731
+ }
732
+
652
733
  return builder.build()
653
734
  }
654
735
 
@@ -902,21 +983,7 @@ internal object TextLayoutManager {
902
983
  paint: TextPaint,
903
984
  ): Unit {
904
985
  var boring = isBoring(text, paint)
905
- var layout =
906
- createLayout(
907
- text,
908
- boring,
909
- width,
910
- widthYogaMeasureMode,
911
- includeFontPadding,
912
- textBreakStrategy,
913
- hyphenationFrequency,
914
- alignment,
915
- justificationMode,
916
- null,
917
- ReactConstants.UNSET,
918
- paint,
919
- )
986
+ var layout: Layout
920
987
 
921
988
  // Minimum font size is 4pts to match the iOS implementation.
922
989
  val minimumFontSize =
@@ -929,20 +996,20 @@ internal object TextLayoutManager {
929
996
  currentFontSize = max(currentFontSize, span.size).toInt()
930
997
  }
931
998
 
932
- val initialFontSize = currentFontSize
933
- while (
934
- currentFontSize > minimumFontSize &&
935
- ((maximumNumberOfLines != ReactConstants.UNSET &&
936
- maximumNumberOfLines != 0 &&
937
- layout.lineCount > maximumNumberOfLines) ||
938
- (heightYogaMeasureMode != YogaMeasureMode.UNDEFINED && layout.height > height) ||
939
- (text.length == 1 && layout.getLineWidth(0) > width))
940
- ) {
941
- // TODO: We could probably use a smarter algorithm here. This will require 0(n)
942
- // measurements based on the number of points the font size needs to be reduced by.
943
- currentFontSize -= max(1, 1.dpToPx().toInt())
999
+ var intervalStart = minimumFontSize
1000
+ var intervalEnd = currentFontSize
1001
+ var previousFontSize = currentFontSize
1002
+
1003
+ // `true` instead of `intervalStart != intervalEnd` so that the last iteration where both are at
1004
+ // the same size goes through and updates all relevant objects with the final font size
1005
+ while (true) {
1006
+ // Always use the point closer to the end of the interval, this way at the end when
1007
+ // end - start == 1, we land at current = end instead of current = start. In the first case
1008
+ // one measurement may be enough if intervalEnd is small enough to fit. In the second case
1009
+ // we always end up doing two measurements to check whether intervalEnd would fit.
1010
+ val currentFontSize = (intervalStart + intervalEnd + 1) / 2
944
1011
 
945
- val ratio = currentFontSize.toFloat() / initialFontSize.toFloat()
1012
+ val ratio = currentFontSize.toFloat() / previousFontSize.toFloat()
946
1013
  paint.textSize = max((paint.textSize * ratio).toInt(), minimumFontSize).toFloat()
947
1014
 
948
1015
  val sizeSpans = text.getSpans(0, text.length, ReactAbsoluteSizeSpan::class.java)
@@ -973,6 +1040,34 @@ internal object TextLayoutManager {
973
1040
  ReactConstants.UNSET,
974
1041
  paint,
975
1042
  )
1043
+
1044
+ if (intervalStart == intervalEnd) {
1045
+ // everything is updated at this point
1046
+ break
1047
+ }
1048
+
1049
+ val singleLineTextExceedsWidth = text.length == 1 && layout.getLineWidth(0) > width
1050
+ val exceedsHeight =
1051
+ heightYogaMeasureMode != YogaMeasureMode.UNDEFINED && layout.height > height
1052
+ val exceedsMaximumNumberOfLines =
1053
+ maximumNumberOfLines != ReactConstants.UNSET &&
1054
+ maximumNumberOfLines != 0 &&
1055
+ layout.lineCount > maximumNumberOfLines
1056
+
1057
+ if (
1058
+ currentFontSize > minimumFontSize &&
1059
+ (exceedsMaximumNumberOfLines || exceedsHeight || singleLineTextExceedsWidth)
1060
+ ) {
1061
+ // Text doesn't fit the constraints. If intervalEnd - intervalStart == 1, it's known that
1062
+ // the correct font size is intervalStart. Set intervalEnd to match intervalStart and do one
1063
+ // more iteration to update layout correctly.
1064
+ intervalEnd = if (intervalEnd - intervalStart == 1) intervalStart else currentFontSize
1065
+ } else {
1066
+ // Text fits the constraints
1067
+ intervalStart = currentFontSize
1068
+ }
1069
+
1070
+ previousFontSize = currentFontSize
976
1071
  }
977
1072
  }
978
1073
 
@@ -40,6 +40,7 @@ import com.facebook.react.bridge.UiThreadUtil.assertOnUiThread
40
40
  import com.facebook.react.bridge.UiThreadUtil.runOnUiThread
41
41
  import com.facebook.react.common.ReactConstants.TAG
42
42
  import com.facebook.react.config.ReactFeatureFlags
43
+ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
43
44
  import com.facebook.react.touch.OnInterceptTouchEventListener
44
45
  import com.facebook.react.touch.ReactHitSlopView
45
46
  import com.facebook.react.touch.ReactInterceptingViewGroup
@@ -390,8 +391,17 @@ public open class ReactViewGroup public constructor(context: Context?) :
390
391
  }
391
392
 
392
393
  override var removeClippedSubviews: Boolean
393
- get() = _removeClippedSubviews
394
+ get() {
395
+ if (ReactNativeFeatureFlags.disableSubviewClippingAndroid()) {
396
+ return false
397
+ }
398
+ return _removeClippedSubviews
399
+ }
394
400
  set(newValue) {
401
+ if (ReactNativeFeatureFlags.disableSubviewClippingAndroid()) {
402
+ return
403
+ }
404
+
395
405
  if (newValue == _removeClippedSubviews) {
396
406
  return
397
407
  }
@@ -1448,7 +1458,13 @@ public open class ReactViewGroup public constructor(context: Context?) :
1448
1458
  if (isFocusDestinationsSet) {
1449
1459
  val destination = findDestinationView()
1450
1460
 
1451
- if (destination != null && requestFocusViewOrAncestor(destination)) {
1461
+ // Destination is set but there's no such element on the tree
1462
+ // Just skip it to prevent cyclic issues.
1463
+ if (destination == null) {
1464
+ return false
1465
+ }
1466
+
1467
+ if (destination.requestFocus()) {
1452
1468
  return true
1453
1469
  }
1454
1470
  }
@@ -1472,9 +1488,7 @@ public open class ReactViewGroup public constructor(context: Context?) :
1472
1488
  }
1473
1489
 
1474
1490
  // Try moving the focus to the first focusable element otherwise.
1475
- if (moveFocusToFirstFocusable(this)) {
1476
- return true
1477
- }
1491
+ return moveFocusToFirstFocusable(this)
1478
1492
  }
1479
1493
 
1480
1494
  return super.requestFocus(direction, previouslyFocusedRect)
@@ -1606,21 +1620,5 @@ public open class ReactViewGroup public constructor(context: Context?) :
1606
1620
  fun setViewClipped(view: View, clipped: Boolean) {
1607
1621
  view.setTag(R.id.view_clipped, clipped)
1608
1622
  }
1609
-
1610
- private fun requestFocusViewOrAncestor(destination: View): Boolean {
1611
- var v: View? = destination
1612
- while (v != null) {
1613
- if (v.requestFocus()) {
1614
- return true
1615
- }
1616
- val parent = v.parent
1617
- v = if (parent is View) {
1618
- parent
1619
- } else {
1620
- null
1621
- }
1622
- }
1623
- return false
1624
- }
1625
1623
  }
1626
1624
  }
@@ -195,18 +195,10 @@ public class ReactVirtualView(context: Context) :
195
195
  val clippingRect = checkNotNull(clippingRect)
196
196
  val parentScrollView = checkNotNull(parentScrollView) as ReactClippingViewGroup
197
197
 
198
- if (ReactNativeFeatureFlags.enableVirtualViewClippingWithoutScrollViewClipping()) {
199
- if (parentScrollView.removeClippedSubviews) {
200
- parentScrollView.getClippingRect(clippingRect)
201
- } else {
202
- (parentScrollView as View).getDrawingRect(clippingRect)
203
- }
204
- } else {
205
- if (!(parentScrollView.removeClippedSubviews ?: false)) {
206
- super.updateClippingRect(excludedViews)
207
- return
208
- }
198
+ if (parentScrollView.removeClippedSubviews) {
209
199
  parentScrollView.getClippingRect(clippingRect)
200
+ } else {
201
+ (parentScrollView as View).getDrawingRect(clippingRect)
210
202
  }
211
203
 
212
204
  clippingRect.intersect(targetRect)
@@ -216,19 +216,10 @@ public class ReactVirtualViewExperimental(context: Context) :
216
216
  val clippingRect = checkNotNull(clippingRect)
217
217
  val scrollView = checkNotNull(scrollView) as ReactClippingViewGroup
218
218
 
219
- if (ReactNativeFeatureFlags.enableVirtualViewClippingWithoutScrollViewClipping()) {
220
- if (scrollView.removeClippedSubviews) {
221
- scrollView.getClippingRect(clippingRect)
222
- } else {
223
- (scrollView as View).getDrawingRect(clippingRect)
224
- }
225
- } else {
226
- if (!(scrollView.removeClippedSubviews ?: false)) {
227
- super.updateClippingRect(excludedViews)
228
- return
229
- }
230
-
219
+ if (scrollView.removeClippedSubviews) {
231
220
  scrollView.getClippingRect(clippingRect)
221
+ } else {
222
+ (scrollView as View).getDrawingRect(clippingRect)
232
223
  }
233
224
 
234
225
  clippingRect.intersect(containerRelativeRect)
@@ -5,6 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ #include <fbjni/ByteBuffer.h>
9
+
8
10
  #include "JCxxInspectorPackagerConnectionWebSocket.h"
9
11
 
10
12
  using namespace facebook::jni;
@@ -12,10 +14,35 @@ using namespace facebook::react::jsinspector_modern;
12
14
 
13
15
  namespace facebook::react::jsinspector_modern {
14
16
 
17
+ namespace {
18
+
19
+ local_ref<JByteBuffer::javaobject> getReadOnlyByteBufferFromStringView(
20
+ std::string_view sv) {
21
+ auto buffer = JByteBuffer::wrapBytes(
22
+ const_cast<uint8_t*>(reinterpret_cast<const uint8_t*>(sv.data())),
23
+ sv.size());
24
+
25
+ /**
26
+ * Return a read-only buffer that shares the underlying contents.
27
+ * This guards from accidential mutations on the Java side, since we did
28
+ * casting above.
29
+ *
30
+ * https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html#asReadOnlyBuffer--
31
+ */
32
+ static auto method =
33
+ buffer->javaClassStatic()->getMethod<JByteBuffer::javaobject()>(
34
+ "asReadOnlyBuffer");
35
+ return method(buffer);
36
+ }
37
+
38
+ } // namespace
39
+
15
40
  void JCxxInspectorPackagerConnectionWebSocket::send(std::string_view message) {
16
41
  static auto method =
17
- javaClassStatic()->getMethod<void(const std::string&)>("send");
18
- method(self(), std::string(message));
42
+ javaClassStatic()->getMethod<void(local_ref<JByteBuffer::javaobject>)>(
43
+ "send");
44
+ auto byteBuffer = getReadOnlyByteBufferFromStringView(message);
45
+ method(self(), byteBuffer);
19
46
  }
20
47
 
21
48
  void JCxxInspectorPackagerConnectionWebSocket::close() {
@@ -24,9 +24,9 @@
24
24
  #include <fbjni/fbjni.h>
25
25
  #include <glog/logging.h>
26
26
 
27
+ #include <algorithm>
27
28
  #include <cfenv>
28
29
  #include <cmath>
29
- #include <unordered_set>
30
30
  #include <vector>
31
31
 
32
32
  namespace facebook::react {
@@ -54,6 +54,80 @@ void FabricMountingManager::onSurfaceStop(SurfaceId surfaceId) {
54
54
 
55
55
  namespace {
56
56
 
57
+ #ifdef REACT_NATIVE_DEBUG
58
+ // List of layout-only props extracted from ViewProps.kt used to filter out
59
+ // component props from Props 1.5 to validate the Props 2.0 output
60
+ inline bool isLayoutOnlyProp(const std::string& propName) {
61
+ static const std::vector<std::string> layoutOnlyProps = {
62
+ // Flexbox Alignment
63
+ "alignItems",
64
+ "alignSelf",
65
+ "alignContent",
66
+
67
+ // Flexbox Properties
68
+ "flex",
69
+ "flexBasis",
70
+ "flexDirection",
71
+ "flexGrow",
72
+ "flexShrink",
73
+ "flexWrap",
74
+ "justifyContent",
75
+
76
+ // Gaps
77
+ "rowGap",
78
+ "columnGap",
79
+ "gap",
80
+
81
+ // Display & Position
82
+ "display",
83
+ "position",
84
+
85
+ // Positioning
86
+ "right",
87
+ "top",
88
+ "bottom",
89
+ "left",
90
+ "start",
91
+ "end",
92
+
93
+ // Dimensions
94
+ "width",
95
+ "height",
96
+ "minWidth",
97
+ "maxWidth",
98
+ "minHeight",
99
+ "maxHeight",
100
+
101
+ // Margins
102
+ "margin",
103
+ "marginVertical",
104
+ "marginHorizontal",
105
+ "marginLeft",
106
+ "marginRight",
107
+ "marginTop",
108
+ "marginBottom",
109
+ "marginStart",
110
+ "marginEnd",
111
+
112
+ // Paddings
113
+ "padding",
114
+ "paddingVertical",
115
+ "paddingHorizontal",
116
+ "paddingLeft",
117
+ "paddingRight",
118
+ "paddingTop",
119
+ "paddingBottom",
120
+ "paddingStart",
121
+ "paddingEnd",
122
+
123
+ // Other
124
+ "collapsable",
125
+ };
126
+ return std::find(layoutOnlyProps.begin(), layoutOnlyProps.end(), propName) !=
127
+ layoutOnlyProps.end();
128
+ }
129
+ #endif
130
+
57
131
  inline int getIntBufferSizeForType(CppMountItem::Type mountItemType) {
58
132
  switch (mountItemType) {
59
133
  case CppMountItem::Type::Create:
@@ -232,8 +306,29 @@ jni::local_ref<jobject> getProps(
232
306
  strcmp(
233
307
  newShadowView.componentName,
234
308
  newProps->getDiffPropsImplementationTarget()) == 0) {
235
- return ReadableNativeMap::newObjectCxxArgs(
236
- newProps->getDiffProps(oldProps));
309
+ auto diff = newProps->getDiffProps(oldProps);
310
+
311
+ #ifdef REACT_NATIVE_DEBUG
312
+ if (oldProps != nullptr) {
313
+ auto controlDiff =
314
+ diffDynamicProps(oldProps->rawProps, newProps->rawProps);
315
+
316
+ for (const auto& [prop, value] : controlDiff.items()) {
317
+ if (diff.count(prop) == 0) {
318
+ // Skip layout-only props since they are not included in Props 2.0
319
+ if (!isLayoutOnlyProp(prop.asString())) {
320
+ LOG(ERROR) << "Props diff validation failed: Props 1.5 has prop '"
321
+ << prop.asString()
322
+ << "' = " << (value != nullptr ? value : "NULL")
323
+ << " that Props 2.0 doesn't have for component "
324
+ << newShadowView.componentName;
325
+ }
326
+ }
327
+ }
328
+ }
329
+ #endif
330
+
331
+ return ReadableNativeMap::newObjectCxxArgs(std::move(diff));
237
332
  }
238
333
  if (ReactNativeFeatureFlags::enableAccumulatedUpdatesInRawPropsAndroid()) {
239
334
  if (oldProps == nullptr) {
@@ -24,11 +24,13 @@
24
24
  #include <react/renderer/core/EventBeat.h>
25
25
  #include <react/renderer/core/EventEmitter.h>
26
26
  #include <react/renderer/core/conversions.h>
27
+ #include <react/renderer/imagemanager/ImageFetcher.h>
27
28
  #include <react/renderer/scheduler/Scheduler.h>
28
29
  #include <react/renderer/scheduler/SchedulerDelegate.h>
29
30
  #include <react/renderer/scheduler/SchedulerToolbox.h>
30
31
  #include <react/renderer/uimanager/primitives.h>
31
32
  #include <react/utils/ContextContainer.h>
33
+ #include <string_view>
32
34
 
33
35
  namespace facebook::react {
34
36
 
@@ -166,34 +168,39 @@ void FabricUIManagerBinding::startSurface(
166
168
  return;
167
169
  }
168
170
 
169
- auto layoutContext = LayoutContext{};
170
- layoutContext.pointScaleFactor = pointScaleFactor_;
171
+ SurfaceHandler* surfaceHandler = nullptr;
172
+ {
173
+ std::unique_lock lock(surfaceHandlerRegistryMutex_);
174
+ auto [it, _] = surfaceHandlerRegistry_.try_emplace(
175
+ surfaceId,
176
+ std::in_place_index<0>,
177
+ moduleName->toStdString(),
178
+ surfaceId);
179
+ surfaceHandler = &std::get<SurfaceHandler>(it->second);
180
+ }
171
181
 
172
- auto surfaceHandler = SurfaceHandler{moduleName->toStdString(), surfaceId};
173
- surfaceHandler.setContextContainer(scheduler->getContextContainer());
182
+ surfaceHandler->setContextContainer(scheduler->getContextContainer());
174
183
  if (initialProps != nullptr) {
175
- surfaceHandler.setProps(initialProps->consume());
184
+ surfaceHandler->setProps(initialProps->consume());
176
185
  }
177
- surfaceHandler.constraintLayout({}, layoutContext);
178
186
 
179
- scheduler->registerSurface(surfaceHandler);
187
+ auto layoutContext = LayoutContext{};
188
+ layoutContext.pointScaleFactor = pointScaleFactor_;
189
+ surfaceHandler->constraintLayout({}, layoutContext);
190
+
191
+ scheduler->registerSurface(*surfaceHandler);
180
192
 
181
193
  auto mountingManager = getMountingManager("startSurface");
182
194
  if (mountingManager != nullptr) {
183
195
  mountingManager->onSurfaceStart(surfaceId);
184
196
  }
185
197
 
186
- surfaceHandler.start();
198
+ surfaceHandler->start();
187
199
 
188
200
  if (ReactNativeFeatureFlags::enableLayoutAnimationsOnAndroid()) {
189
- surfaceHandler.getMountingCoordinator()->setMountingOverrideDelegate(
201
+ surfaceHandler->getMountingCoordinator()->setMountingOverrideDelegate(
190
202
  animationDriver_);
191
203
  }
192
-
193
- {
194
- std::unique_lock lock(surfaceHandlerRegistryMutex_);
195
- surfaceHandlerRegistry_.emplace(surfaceId, std::move(surfaceHandler));
196
- }
197
204
  }
198
205
 
199
206
  jint FabricUIManagerBinding::findNextFocusableElement(
@@ -338,31 +345,36 @@ void FabricUIManagerBinding::startSurfaceWithConstraints(
338
345
  constraints.layoutDirection =
339
346
  isRTL != 0 ? LayoutDirection::RightToLeft : LayoutDirection::LeftToRight;
340
347
 
341
- auto surfaceHandler = SurfaceHandler{moduleName->toStdString(), surfaceId};
342
- surfaceHandler.setContextContainer(scheduler->getContextContainer());
348
+ SurfaceHandler* surfaceHandler = nullptr;
349
+ {
350
+ std::unique_lock lock(surfaceHandlerRegistryMutex_);
351
+ auto [it, _] = surfaceHandlerRegistry_.try_emplace(
352
+ surfaceId,
353
+ std::in_place_index<0>,
354
+ moduleName->toStdString(),
355
+ surfaceId);
356
+ surfaceHandler = &std::get<SurfaceHandler>(it->second);
357
+ }
358
+
359
+ surfaceHandler->setContextContainer(scheduler->getContextContainer());
343
360
  if (initialProps != nullptr) {
344
- surfaceHandler.setProps(initialProps->consume());
361
+ surfaceHandler->setProps(initialProps->consume());
345
362
  }
346
- surfaceHandler.constraintLayout(constraints, context);
363
+ surfaceHandler->constraintLayout(constraints, context);
347
364
 
348
- scheduler->registerSurface(surfaceHandler);
365
+ scheduler->registerSurface(*surfaceHandler);
349
366
 
350
367
  auto mountingManager = getMountingManager("startSurfaceWithConstraints");
351
368
  if (mountingManager != nullptr) {
352
369
  mountingManager->onSurfaceStart(surfaceId);
353
370
  }
354
371
 
355
- surfaceHandler.start();
372
+ surfaceHandler->start();
356
373
 
357
374
  if (ReactNativeFeatureFlags::enableLayoutAnimationsOnAndroid()) {
358
- surfaceHandler.getMountingCoordinator()->setMountingOverrideDelegate(
375
+ surfaceHandler->getMountingCoordinator()->setMountingOverrideDelegate(
359
376
  animationDriver_);
360
377
  }
361
-
362
- {
363
- std::unique_lock lock(surfaceHandlerRegistryMutex_);
364
- surfaceHandlerRegistry_.emplace(surfaceId, std::move(surfaceHandler));
365
- }
366
378
  }
367
379
 
368
380
  // Used by non-bridgeless+Fabric
@@ -630,6 +642,19 @@ void FabricUIManagerBinding::schedulerShouldRenderTransactions(
630
642
  if (!mountingManager) {
631
643
  return;
632
644
  }
645
+
646
+ if (ReactNativeFeatureFlags::enableImagePrefetchingJNIBatchingAndroid()) {
647
+ auto weakImageFetcher =
648
+ scheduler_->getContextContainer()->find<std::weak_ptr<ImageFetcher>>(
649
+ ImageFetcherKey);
650
+ auto imageFetcher = weakImageFetcher.has_value()
651
+ ? weakImageFetcher.value().lock()
652
+ : nullptr;
653
+ if (imageFetcher != nullptr) {
654
+ imageFetcher->flushImageRequests();
655
+ }
656
+ }
657
+
633
658
  if (ReactNativeFeatureFlags::enableAccumulatedUpdatesInRawPropsAndroid()) {
634
659
  auto mountingTransaction = mountingCoordinator->pullTransaction(
635
660
  /* willPerformAsynchronously = */ true);
@@ -662,6 +687,17 @@ void FabricUIManagerBinding::schedulerShouldRenderTransactions(
662
687
 
663
688
  void FabricUIManagerBinding::schedulerDidRequestPreliminaryViewAllocation(
664
689
  const ShadowNode& shadowNode) {
690
+ using namespace std::literals::string_view_literals;
691
+
692
+ if (ReactNativeFeatureFlags::disableViewPreallocationAndroid()) {
693
+ return;
694
+ }
695
+
696
+ if (ReactNativeFeatureFlags::disableImageViewPreallocationAndroid() &&
697
+ std::string_view(shadowNode.getComponentName()) == "Image"sv) {
698
+ return;
699
+ }
700
+
665
701
  auto mountingManager = getMountingManager("preallocateView");
666
702
  if (!mountingManager) {
667
703
  return;