react-native-tvos 0.85.3-1 → 0.86.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 (667) hide show
  1. package/Libraries/Animated/AnimatedImplementation.js +6 -6
  2. package/Libraries/Animated/NativeAnimatedAllowlist.js +21 -0
  3. package/Libraries/Animated/components/AnimatedImage.js +3 -3
  4. package/Libraries/Animated/components/AnimatedText.js +3 -3
  5. package/Libraries/Animated/createAnimatedComponent.js +7 -7
  6. package/Libraries/Animated/nodes/AnimatedAddition.js +1 -1
  7. package/Libraries/Animated/nodes/AnimatedColor.js +7 -7
  8. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +1 -1
  9. package/Libraries/Animated/nodes/AnimatedDivision.js +1 -1
  10. package/Libraries/Animated/nodes/AnimatedInterpolation.js +22 -24
  11. package/Libraries/Animated/nodes/AnimatedModulo.js +1 -1
  12. package/Libraries/Animated/nodes/AnimatedMultiplication.js +1 -1
  13. package/Libraries/Animated/nodes/AnimatedStyle.js +2 -2
  14. package/Libraries/Animated/nodes/AnimatedSubtraction.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedTracking.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedValue.js +2 -2
  17. package/Libraries/AppDelegate/RCTDefaultReactNativeFactoryDelegate.mm +4 -0
  18. package/Libraries/AppDelegate/RCTRootViewFactory.h +5 -5
  19. package/Libraries/AppDelegate/RCTRootViewFactory.mm +2 -2
  20. package/Libraries/AppState/AppState.js +1 -1
  21. package/Libraries/BatchedBridge/NativeModules.js +1 -1
  22. package/Libraries/Blob/RCTBlobCollector.h +1 -1
  23. package/Libraries/Blob/RCTBlobCollector.mm +14 -26
  24. package/Libraries/Blob/RCTBlobManager.mm +11 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +29 -23
  26. package/Libraries/Components/Keyboard/Keyboard.js +4 -2
  27. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +1 -1
  28. package/Libraries/Components/LayoutConformance/LayoutConformance.js +1 -27
  29. package/Libraries/Components/Pressable/Pressable.d.ts +1 -0
  30. package/Libraries/Components/Pressable/Pressable.js +2 -2
  31. package/Libraries/Components/Pressable/useAndroidRippleForView.js +7 -8
  32. package/Libraries/Components/ScrollView/ScrollView.js +3 -3
  33. package/Libraries/Components/ScrollView/ScrollViewCommands.js +2 -2
  34. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +2 -2
  35. package/Libraries/Components/Switch/Switch.js +1 -1
  36. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +25 -1
  37. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +1 -1
  38. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +2 -2
  39. package/Libraries/Components/TextInput/TextInput.d.ts +24 -0
  40. package/Libraries/Components/TextInput/TextInput.flow.js +24 -0
  41. package/Libraries/Components/TextInput/TextInput.js +5 -5
  42. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +5 -5
  43. package/Libraries/Components/ToastAndroid/ToastAndroidFallback.js +5 -5
  44. package/Libraries/Components/Touchable/PooledClass.js +4 -4
  45. package/Libraries/Components/Touchable/Touchable.js +1 -1
  46. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +6 -10
  47. package/Libraries/Components/View/ReactNativeStyleAttributes.js +10 -2
  48. package/Libraries/Components/View/View.js +100 -95
  49. package/Libraries/Components/View/ViewPropTypes.js +3 -1
  50. package/Libraries/Core/Devtools/loadBundleFromServer.js +8 -0
  51. package/Libraries/Core/ExceptionsManager.js +2 -8
  52. package/Libraries/Core/InitializeCore.js +0 -13
  53. package/Libraries/Core/ReactFiberErrorDialog.js +3 -3
  54. package/Libraries/Core/ReactNativeVersion.js +3 -3
  55. package/Libraries/Core/ReactNativeVersionCheck.js +1 -1
  56. package/Libraries/Core/Timers/JSTimers.js +2 -2
  57. package/Libraries/Core/Timers/immediateShim.js +1 -1
  58. package/Libraries/Core/setUpBatchedBridge.js +1 -1
  59. package/Libraries/Core/setUpSegmentFetcher.js +1 -1
  60. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  61. package/Libraries/EventEmitter/NativeEventEmitter.js +9 -5
  62. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +2 -2
  63. package/Libraries/Image/Image.android.js +15 -35
  64. package/Libraries/Image/RCTImageLoader.mm +4 -2
  65. package/Libraries/Image/RelativeImageStub.js +2 -2
  66. package/Libraries/LayoutAnimation/LayoutAnimation.js +12 -12
  67. package/Libraries/Linking/Linking.js +1 -1
  68. package/Libraries/Lists/FlatList.js +1 -1
  69. package/Libraries/LogBox/LogBox.js +2 -2
  70. package/Libraries/LogBox/LogBoxInspectorContainer.js +24 -2
  71. package/Libraries/LogBox/LogBoxNotificationContainer.js +27 -4
  72. package/Libraries/LogBox/UI/LogBoxButton.js +47 -33
  73. package/Libraries/LogBox/UI/LogBoxInspector.js +61 -1
  74. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -0
  75. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +3 -1
  76. package/Libraries/LogBox/UI/LogBoxNotification.js +2 -0
  77. package/Libraries/Modal/Modal.js +12 -7
  78. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +0 -2
  79. package/Libraries/NativeComponent/BaseViewConfig.android.js +15 -0
  80. package/Libraries/NativeComponent/BaseViewConfig.ios.js +17 -0
  81. package/Libraries/NativeComponent/NativeComponentRegistry.js +2 -2
  82. package/Libraries/NativeComponent/ViewConfigIgnore.js +4 -2
  83. package/Libraries/Network/RCTNetworking.android.js +1 -1
  84. package/Libraries/Network/RCTNetworking.ios.js +1 -1
  85. package/Libraries/Network/RCTNetworking.js.flow +1 -1
  86. package/Libraries/Network/RCTNetworking.mm +1 -2
  87. package/Libraries/Network/XMLHttpRequest.js +29 -12
  88. package/Libraries/Pressability/Pressability.js +2 -2
  89. package/Libraries/ReactNative/AppContainer-dev.js +2 -3
  90. package/Libraries/ReactNative/AppContainer-prod.js +1 -2
  91. package/Libraries/ReactNative/AppContainer.js +0 -1
  92. package/Libraries/ReactNative/AppRegistry.d.ts +1 -1
  93. package/Libraries/ReactNative/AppRegistry.flow.js +1 -2
  94. package/Libraries/ReactNative/AppRegistryImpl.js +16 -16
  95. package/Libraries/ReactNative/DeprecatedPerformanceLoggerStub.js +83 -0
  96. package/Libraries/ReactNative/FabricUIManager.js +6 -0
  97. package/Libraries/{Utilities → ReactNative}/IPerformanceLogger.d.ts +8 -5
  98. package/Libraries/{Utilities/IPerformanceLogger.js → ReactNative/IPerformanceLogger.flow.js} +12 -9
  99. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +14 -14
  100. package/Libraries/ReactNative/RendererImplementation.js +26 -143
  101. package/Libraries/ReactNative/RendererProxy.js +4 -15
  102. package/Libraries/ReactNative/renderApplication.js +33 -59
  103. package/Libraries/ReactNative/requireNativeComponent.js +3 -3
  104. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +5 -0
  105. package/Libraries/Renderer/shims/ReactNativeTypes.js +2 -32
  106. package/Libraries/Settings/Settings.ios.js +1 -1
  107. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +2 -2
  108. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +3 -3
  109. package/Libraries/StyleSheet/StyleSheet.js +1 -1
  110. package/Libraries/StyleSheet/StyleSheet.js.flow +2 -2
  111. package/Libraries/StyleSheet/StyleSheetExports.js +1 -1
  112. package/Libraries/StyleSheet/StyleSheetExports.js.flow +1 -1
  113. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +6 -8
  114. package/Libraries/StyleSheet/StyleSheetTypes.js +11 -11
  115. package/Libraries/StyleSheet/flattenStyle.js +1 -1
  116. package/Libraries/StyleSheet/private/_TransformStyle.js +1 -1
  117. package/Libraries/StyleSheet/processBackgroundImage.js +19 -9
  118. package/Libraries/StyleSheet/processBackgroundSize.js +7 -12
  119. package/Libraries/StyleSheet/processBoxShadow.js +9 -47
  120. package/Libraries/StyleSheet/processFilter.js +16 -8
  121. package/Libraries/StyleSheet/processTransformOrigin.js +10 -3
  122. package/Libraries/Text/Text.js +4 -4
  123. package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +16 -2
  124. package/Libraries/Text/TextNativeComponent.js +4 -4
  125. package/Libraries/TurboModule/RCTExport.js +1 -1
  126. package/Libraries/TurboModule/TurboModuleRegistry.js +3 -3
  127. package/Libraries/Types/CodegenTypes.js +7 -4
  128. package/Libraries/Types/ReactDevToolsTypes.js +1 -1
  129. package/Libraries/Utilities/BackHandler.android.js +11 -3
  130. package/Libraries/Utilities/BackHandler.d.ts +11 -1
  131. package/Libraries/Utilities/BackHandler.ios.js +3 -1
  132. package/Libraries/Utilities/BackHandler.js.flow +6 -1
  133. package/Libraries/Utilities/HardwareBackPressEvent.js +22 -0
  134. package/Libraries/Utilities/ReactNativeTestTools.js +4 -4
  135. package/Libraries/Utilities/binaryToBase64.js +1 -1
  136. package/Libraries/Utilities/codegenNativeCommands.js +2 -2
  137. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  138. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -2
  139. package/Libraries/Utilities/stringifySafe.js +1 -1
  140. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  141. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  142. package/Libraries/vendor/emitter/EventEmitter.js +27 -13
  143. package/React/Base/RCTBundleURLProvider.h +19 -1
  144. package/React/Base/RCTBundleURLProvider.mm +82 -0
  145. package/React/Base/RCTDefines.h +1 -1
  146. package/React/Base/RCTMultipartDataTask.h +1 -1
  147. package/React/Base/RCTMultipartDataTask.m +0 -3
  148. package/React/Base/RCTRootView.h +4 -0
  149. package/React/Base/RCTRootViewDelegate.h +5 -2
  150. package/React/Base/RCTVersion.m +3 -3
  151. package/React/Base/Surface/RCTSurface.h +3 -0
  152. package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
  153. package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
  154. package/React/Base/Surface/RCTSurfaceView.mm +2 -1
  155. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +2 -0
  156. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
  157. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
  158. package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
  159. package/React/CoreModules/RCTRedBox2AnsiParser.mm +1 -1
  160. package/React/CoreModules/RCTWebSocketModule.mm +45 -6
  161. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
  162. package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
  163. package/React/DevSupport/RCTPackagerConnection.mm +13 -11
  164. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +108 -43
  165. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
  166. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
  167. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
  168. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
  169. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +70 -8
  170. package/React/Fabric/RCTConversions.h +14 -0
  171. package/React/Fabric/RCTScheduler.mm +18 -0
  172. package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
  173. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
  174. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  175. package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
  176. package/React/Modules/RCTUIManager.mm +1 -1
  177. package/React/Profiler/RCTProfile.h +5 -0
  178. package/React/Profiler/RCTProfile.m +2 -1
  179. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  180. package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
  181. package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
  182. package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
  183. package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
  184. package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
  185. package/React/Views/RCTLayout.m +4 -3
  186. package/React/Views/ScrollView/RCTScrollView.h +6 -2
  187. package/ReactAndroid/api/ReactAndroid.api +37 -27
  188. package/ReactAndroid/build.gradle.kts +28 -21
  189. package/ReactAndroid/gradle.properties +1 -1
  190. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
  191. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
  192. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
  193. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
  194. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +32 -87
  195. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
  196. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
  197. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
  198. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
  199. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
  200. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
  201. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
  202. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
  203. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
  204. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
  205. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
  206. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +2 -0
  207. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
  208. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
  209. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
  210. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +9 -10
  211. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
  213. package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
  214. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
  215. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
  216. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
  217. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
  218. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
  219. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
  220. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
  221. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
  222. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
  223. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +41 -29
  225. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +71 -51
  226. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +15 -11
  227. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +16 -12
  228. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +79 -57
  229. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -3
  230. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
  231. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +15 -11
  232. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
  233. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
  234. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
  235. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +1 -1
  236. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
  237. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
  238. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
  239. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
  240. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
  241. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
  242. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
  243. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
  244. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
  245. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
  246. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
  247. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
  248. package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
  249. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +18 -5
  250. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
  251. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
  252. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
  253. package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
  254. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
  255. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
  256. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
  257. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
  258. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
  259. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
  260. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
  261. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
  262. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
  263. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
  264. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
  265. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
  266. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
  267. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
  268. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
  269. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
  270. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
  271. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
  272. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
  273. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
  274. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
  275. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
  276. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
  277. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
  278. package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
  279. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
  280. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
  281. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
  282. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +18 -20
  283. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
  284. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -20
  285. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +14 -5
  286. package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
  287. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
  288. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
  289. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
  290. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
  291. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
  292. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
  293. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
  294. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
  295. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +84 -20
  296. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +41 -65
  297. package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
  298. package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
  299. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
  300. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
  301. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
  302. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
  303. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
  304. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
  305. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
  306. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
  307. package/ReactAndroid/src/main/jni/CMakeLists.txt +10 -1
  308. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
  309. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
  310. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
  311. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
  312. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
  313. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
  314. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
  315. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
  316. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
  317. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
  318. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
  319. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
  320. package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
  321. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +97 -69
  322. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +21 -15
  323. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
  324. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
  325. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
  326. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
  327. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
  328. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
  329. package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
  330. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +10 -0
  331. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +7 -0
  332. package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
  333. package/ReactCommon/React-Fabric.podspec +7 -0
  334. package/ReactCommon/React-FabricComponents.podspec +1 -1
  335. package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
  336. package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
  337. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
  338. package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
  339. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
  340. package/ReactCommon/jsi/jsi/decorator.h +93 -0
  341. package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
  342. package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
  343. package/ReactCommon/jsi/jsi/jsi.h +553 -224
  344. package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
  345. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
  346. package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
  347. package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
  348. package/ReactCommon/jsinspector-modern/HostAgent.cpp +10 -1
  349. package/ReactCommon/jsinspector-modern/HostTarget.h +25 -0
  350. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -2
  351. package/ReactCommon/jsinspector-modern/InspectorFlags.h +5 -2
  352. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
  353. package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
  354. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
  355. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
  356. package/ReactCommon/logger/react_native_log.cpp +0 -1
  357. package/ReactCommon/react/bridging/Array.h +1 -1
  358. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +29 -21
  359. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +35 -25
  360. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +168 -132
  361. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +18 -14
  362. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +28 -20
  363. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +61 -43
  364. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -3
  365. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +9 -7
  366. package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
  367. package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
  368. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
  369. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
  370. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  371. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  372. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +1 -0
  373. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
  374. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +35 -25
  375. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +15 -11
  376. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
  377. package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
  378. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
  379. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
  380. package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
  381. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
  382. package/ReactCommon/react/networking/NetworkReporter.h +0 -1
  383. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
  384. package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
  385. package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
  386. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +24 -12
  387. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
  388. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
  389. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
  390. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
  391. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +4 -0
  392. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +1 -1
  393. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
  394. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
  395. package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
  396. package/ReactCommon/react/renderer/animations/utils.h +12 -1
  397. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
  398. package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
  399. package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
  400. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
  401. package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
  402. package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
  403. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
  404. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
  405. package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
  406. package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
  407. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -0
  408. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
  409. package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
  410. package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
  411. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
  412. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
  413. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
  414. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
  415. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
  416. package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
  417. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +53 -5
  418. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
  419. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
  420. package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
  421. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  422. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
  423. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
  424. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
  425. package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
  426. package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
  427. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
  428. package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
  429. package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
  430. package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
  431. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
  432. package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
  433. package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
  434. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
  435. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
  436. package/ReactCommon/react/renderer/core/Props.cpp +20 -0
  437. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  438. package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
  439. package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
  440. package/ReactCommon/react/renderer/core/conversions.h +4 -0
  441. package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
  442. package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
  443. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
  444. package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
  445. package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
  446. package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
  447. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
  448. package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
  449. package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
  450. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
  451. package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
  452. package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
  453. package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
  454. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
  455. package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
  456. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
  457. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
  458. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
  459. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
  460. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
  461. package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
  462. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
  463. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
  464. package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
  465. package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
  466. package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
  467. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
  468. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
  469. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
  470. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
  471. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
  472. package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
  473. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
  474. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
  475. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
  476. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
  477. package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
  478. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  479. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
  480. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
  481. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
  482. package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
  483. package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
  484. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
  485. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
  486. package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
  487. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +37 -0
  488. package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
  489. package/ReactCommon/react/timing/React-timing.podspec +2 -0
  490. package/ReactCommon/react/timing/primitives.h +33 -1
  491. package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
  492. package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
  493. package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
  494. package/ReactCommon/yoga/yoga/YGNode.h +1 -1
  495. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
  496. package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
  497. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
  498. package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
  499. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
  500. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
  501. package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
  502. package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
  503. package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
  504. package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
  505. package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
  506. package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
  507. package/ReactCommon/yoga/yoga/event/event.h +1 -0
  508. package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
  509. package/ReactCommon/yoga/yoga/node/Node.h +4 -4
  510. package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
  511. package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
  512. package/ReactCommon/yoga/yoga/style/Style.h +261 -71
  513. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
  514. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  515. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
  516. package/cli.js +1 -1
  517. package/flow/HermesInternalType.js +1 -1
  518. package/flow/bom.js.flow +95 -3
  519. package/flow/dom.js.flow +89 -89
  520. package/gradle/libs.versions.toml +3 -1
  521. package/index.js +30 -3
  522. package/index.js.flow +23 -1
  523. package/package.json +11 -11
  524. package/react-native.config.js +3 -3
  525. package/scripts/cocoapods/rncore.rb +65 -11
  526. package/scripts/cocoapods/rndependencies.rb +65 -11
  527. package/scripts/cocoapods/utils.rb +52 -0
  528. package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +1 -1
  529. package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +13 -4
  530. package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +1 -1
  531. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +1 -1
  532. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +17 -6
  533. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
  534. package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +1 -1
  535. package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
  536. package/scripts/codegen/generate-artifacts-executor/utils.js +1 -1
  537. package/scripts/codegen/generate-specs-cli-executor.js +1 -1
  538. package/scripts/generate-codegen-artifacts.js +20 -2
  539. package/scripts/generate-provider-cli.js +1 -1
  540. package/scripts/react_native_pods.rb +25 -2
  541. package/scripts/react_native_pods_utils/script_phases.rb +9 -3
  542. package/scripts/replace-rncore-version.js +20 -0
  543. package/scripts/xcode/with-environment.sh +7 -1
  544. package/sdks/.hermesv1version +1 -1
  545. package/sdks/.hermesversion +1 -1
  546. package/sdks/hermes-engine/hermes-utils.rb +92 -5
  547. package/sdks/hermes-engine/version.properties +2 -2
  548. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  549. package/src/private/animated/createAnimatedPropsHook.js +2 -2
  550. package/src/private/components/virtualcollection/FlingConstants.js +21 -0
  551. package/src/private/components/virtualcollection/Virtual.js +62 -0
  552. package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
  553. package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
  554. package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
  555. package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
  556. package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
  557. package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
  558. package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
  559. package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
  560. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
  561. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
  562. package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
  563. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  564. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
  565. package/src/private/featureflags/ReactNativeFeatureFlags.js +41 -37
  566. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  567. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +9 -7
  568. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
  569. package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
  570. package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
  571. package/src/private/renderer/events/ReactNativeResponder.js +687 -0
  572. package/src/private/renderer/events/ResponderEvent.js +40 -0
  573. package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
  574. package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
  575. package/src/private/setup/setUpDOM.js +20 -0
  576. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
  577. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
  578. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  579. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  580. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  581. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
  582. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
  583. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
  584. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
  585. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
  586. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
  587. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  588. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
  589. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
  590. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  591. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
  592. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
  593. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
  594. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
  595. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
  596. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
  597. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
  598. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
  599. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
  600. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
  601. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
  602. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  603. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
  604. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
  605. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
  606. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
  607. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  608. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
  609. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
  610. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
  611. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
  612. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
  613. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
  614. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
  615. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
  616. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
  617. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
  618. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  619. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
  620. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
  621. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
  622. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
  623. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
  624. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
  625. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
  626. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
  627. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
  628. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
  629. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
  630. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
  631. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
  632. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
  633. package/src/private/styles/composeStyles.js +1 -1
  634. package/src/private/types/HostComponent.js +1 -1
  635. package/src/private/utilities/toExtendedError.js +1 -1
  636. package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
  637. package/src/private/webapis/dom/events/Event.js +10 -1
  638. package/src/private/webapis/dom/events/EventTarget.js +60 -18
  639. package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
  640. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
  641. package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
  642. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
  643. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
  644. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
  645. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
  646. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
  647. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
  648. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
  649. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
  650. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
  651. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
  652. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  653. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  654. package/src/private/webapis/webidl/PlatformObjects.js +4 -4
  655. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19669
  656. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
  657. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
  658. package/Libraries/Renderer/shims/ReactNative.js +0 -27
  659. package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
  660. package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
  661. package/Libraries/Utilities/createPerformanceLogger.js +0 -329
  662. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
  663. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
  664. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
  665. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
  666. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
  667. package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
@@ -97,16 +97,15 @@ internal class FrameTimingsObserver(
97
97
  }
98
98
  }
99
99
 
100
- private val frameMetricsListener =
101
- Window.OnFrameMetricsAvailableListener { _, frameMetrics, _ ->
102
- // Guard against calls after stop()
103
- if (!isTracing) {
104
- return@OnFrameMetricsAvailableListener
105
- }
106
- val beginTimestamp = frameMetrics.getMetric(FrameMetrics.VSYNC_TIMESTAMP)
107
- val endTimestamp = beginTimestamp + frameMetrics.getMetric(FrameMetrics.TOTAL_DURATION)
108
- emitFrameTiming(beginTimestamp, endTimestamp)
109
- }
100
+ private val frameMetricsListener = Window.OnFrameMetricsAvailableListener { _, frameMetrics, _ ->
101
+ // Guard against calls after stop()
102
+ if (!isTracing) {
103
+ return@OnFrameMetricsAvailableListener
104
+ }
105
+ val beginTimestamp = frameMetrics.getMetric(FrameMetrics.VSYNC_TIMESTAMP)
106
+ val endTimestamp = beginTimestamp + frameMetrics.getMetric(FrameMetrics.TOTAL_DURATION)
107
+ emitFrameTiming(beginTimestamp, endTimestamp)
108
+ }
110
109
 
111
110
  private fun emitFrameTiming(beginTimestamp: Long, endTimestamp: Long) {
112
111
  val frameId = frameCounter++
@@ -11,11 +11,13 @@ import com.facebook.jni.HybridData
11
11
  import com.facebook.proguard.annotations.DoNotStrip
12
12
  import com.facebook.proguard.annotations.DoNotStripAny
13
13
  import com.facebook.soloader.SoLoader
14
+ import com.facebook.soloader.annotation.SoLoaderLibrary
14
15
 
15
16
  /**
16
17
  * JNI wrapper for `jsinspectormodern::NetworkRequestListener`. Handles the `ScopedExecutor`
17
18
  * callback use on the C++ side.
18
19
  */
20
+ @SoLoaderLibrary("reactnativejni")
19
21
  @DoNotStripAny
20
22
  internal class InspectorNetworkRequestListener(
21
23
  @field:DoNotStrip private val mHybridData: HybridData
@@ -142,8 +142,9 @@ internal class PerfMonitorOverlayView(
142
142
  val dialog =
143
143
  createAnchoredDialog(dpToPx(12f), dpToPx(12f)).apply { setContentView(containerLayout) }
144
144
  dialog.window?.apply {
145
- attributes =
146
- attributes?.apply { flags = flags or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE }
145
+ attributes = attributes?.apply {
146
+ flags = flags or WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
147
+ }
147
148
  }
148
149
 
149
150
  return dialog
@@ -158,14 +159,13 @@ internal class PerfMonitorOverlayView(
158
159
  setCancelable(false)
159
160
  }
160
161
  dialog.window?.apply {
161
- attributes =
162
- attributes?.apply {
163
- width = WindowManager.LayoutParams.WRAP_CONTENT
164
- height = WindowManager.LayoutParams.WRAP_CONTENT
165
- gravity = Gravity.TOP or Gravity.END
166
- x = offsetX.toInt()
167
- y = offsetY.toInt()
168
- }
162
+ attributes = attributes?.apply {
163
+ width = WindowManager.LayoutParams.WRAP_CONTENT
164
+ height = WindowManager.LayoutParams.WRAP_CONTENT
165
+ gravity = Gravity.TOP or Gravity.END
166
+ x = offsetX.toInt()
167
+ y = offsetY.toInt()
168
+ }
169
169
  }
170
170
  dialog.window?.decorView?.let { decorView ->
171
171
  ViewCompat.setOnApplyWindowInsetsListener(decorView) { view, windowInsets ->
@@ -46,24 +46,26 @@ internal class AnimationBackendChoreographer(
46
46
  }
47
47
 
48
48
  fun pause() {
49
+ val shouldRemove: Boolean
49
50
  synchronized(paused) {
50
- if (!paused.getAndSet(true) && callbackPosted.getAndSet(false)) {
51
- reactChoreographer.removeFrameCallback(
52
- ReactChoreographer.CallbackType.NATIVE_ANIMATED_MODULE,
53
- choreographerCallback,
54
- )
55
- }
51
+ shouldRemove = !paused.getAndSet(true) && callbackPosted.getAndSet(false)
52
+ }
53
+ if (shouldRemove) {
54
+ reactChoreographer.removeFrameCallback(
55
+ ReactChoreographer.CallbackType.NATIVE_ANIMATED_MODULE,
56
+ choreographerCallback,
57
+ )
56
58
  }
57
59
  }
58
60
 
59
61
  private fun scheduleCallback() {
60
- synchronized(paused) {
61
- if (!paused.get() && !callbackPosted.getAndSet(true)) {
62
- reactChoreographer.postFrameCallback(
63
- ReactChoreographer.CallbackType.NATIVE_ANIMATED_MODULE,
64
- choreographerCallback,
65
- )
66
- }
62
+ val shouldPost: Boolean
63
+ synchronized(paused) { shouldPost = !paused.get() && !callbackPosted.getAndSet(true) }
64
+ if (shouldPost) {
65
+ reactChoreographer.postFrameCallback(
66
+ ReactChoreographer.CallbackType.NATIVE_ANIMATED_MODULE,
67
+ choreographerCallback,
68
+ )
67
69
  }
68
70
  }
69
71
 
@@ -134,7 +134,10 @@ public class DevToolsReactPerfLogger : FabricMarkerListener {
134
134
  }
135
135
  commitPoint.addPoint(name, FabricCommitPointData(timestamp, counter))
136
136
 
137
- if (name == ReactMarkerConstants.FABRIC_BATCH_EXECUTION_END && timestamp > 0) {
137
+ if (
138
+ (name == ReactMarkerConstants.FABRIC_BATCH_EXECUTION_END ||
139
+ name == ReactMarkerConstants.FABRIC_UPDATE_UI_MAIN_THREAD_END) && timestamp > 0
140
+ ) {
138
141
  onFabricCommitEnd(commitPoint)
139
142
  fabricCommitMarkers.remove(instanceKey)
140
143
  }
@@ -27,7 +27,6 @@ import android.view.accessibility.AccessibilityEvent;
27
27
  import androidx.annotation.AnyThread;
28
28
  import androidx.annotation.Nullable;
29
29
  import androidx.annotation.UiThread;
30
- import androidx.core.util.Preconditions;
31
30
  import androidx.core.view.ViewCompat.FocusDirection;
32
31
  import com.facebook.common.logging.FLog;
33
32
  import com.facebook.infer.annotation.Assertions;
@@ -102,6 +101,7 @@ import java.util.List;
102
101
  import java.util.Map;
103
102
  import java.util.Queue;
104
103
  import java.util.Set;
104
+ import java.util.concurrent.ConcurrentLinkedQueue;
105
105
  import java.util.concurrent.CopyOnWriteArrayList;
106
106
 
107
107
  /**
@@ -193,6 +193,13 @@ public class FabricUIManager
193
193
  @ThreadConfined(UI)
194
194
  private final Set<SynchronousEvent> mSynchronousEvents = new HashSet<>();
195
195
 
196
+ /**
197
+ * Queue of surface IDs that need their React revision merged. Drained during doFrame so that
198
+ * synchronous events dispatched by the merge are processed in the same frame.
199
+ */
200
+ private final ConcurrentLinkedQueue<Integer> mPendingReactRevisionMerges =
201
+ new ConcurrentLinkedQueue<>();
202
+
196
203
  /**
197
204
  * This is used to keep track of whether or not the FabricUIManager has been destroyed. Once the
198
205
  * Catalyst instance is being destroyed, we should cease all operation here.
@@ -201,6 +208,8 @@ public class FabricUIManager
201
208
 
202
209
  private boolean mDriveCxxAnimations = false;
203
210
 
211
+ private @Nullable ViewTransitionSnapshotManager mViewTransitionSnapshotManager;
212
+
204
213
  private long mDispatchViewUpdatesTime = 0l;
205
214
  private long mCommitStartTime = 0l;
206
215
  private long mLayoutTime = 0l;
@@ -537,7 +546,7 @@ public class FabricUIManager
537
546
 
538
547
  return (NativeArray)
539
548
  TextLayoutManager.measureLines(
540
- mReactApplicationContext,
549
+ mReactApplicationContext.getAssets(),
541
550
  attributedString,
542
551
  paragraphAttributes,
543
552
  PixelUtil.toPixelFromDIP(width),
@@ -611,7 +620,6 @@ public class FabricUIManager
611
620
  @ThreadConfined(ANY)
612
621
  @UnstableReactNativeAPI
613
622
  public long measureText(
614
- int surfaceId,
615
623
  ReadableMapBuffer attributedString,
616
624
  ReadableMapBuffer paragraphAttributes,
617
625
  float minWidth,
@@ -620,24 +628,10 @@ public class FabricUIManager
620
628
  float maxHeight,
621
629
  @Nullable float[] attachmentsPositions) {
622
630
 
623
- ReactContext context;
624
- if (surfaceId > 0) {
625
- SurfaceMountingManager surfaceMountingManager =
626
- mMountingManager.getSurfaceManagerEnforced(surfaceId, "measureText");
627
- if (surfaceMountingManager.isStopped()) {
628
- return 0;
629
- }
630
- context = surfaceMountingManager.getContext();
631
- Assertions.assertNotNull(
632
- context, "Context in SurfaceMountingManager is null. surfaceId: " + surfaceId);
633
- } else {
634
- context = mReactApplicationContext;
635
- }
636
-
637
631
  ViewManager textViewManager = mViewManagerRegistry.get(ReactTextViewManager.REACT_CLASS);
638
632
 
639
633
  return TextLayoutManager.measureText(
640
- context,
634
+ mReactApplicationContext.getAssets(),
641
635
  attributedString,
642
636
  paragraphAttributes,
643
637
  getYogaSize(minWidth, maxWidth),
@@ -654,19 +648,16 @@ public class FabricUIManager
654
648
  @ThreadConfined(ANY)
655
649
  @UnstableReactNativeAPI
656
650
  public PreparedLayout prepareTextLayout(
657
- int surfaceId,
658
651
  ReadableMapBuffer attributedString,
659
652
  ReadableMapBuffer paragraphAttributes,
660
653
  float minWidth,
661
654
  float maxWidth,
662
655
  float minHeight,
663
656
  float maxHeight) {
664
- SurfaceMountingManager surfaceMountingManager =
665
- mMountingManager.getSurfaceManagerEnforced(surfaceId, "prepareTextLayout");
666
657
  ViewManager textViewManager = mViewManagerRegistry.get(ReactTextViewManager.REACT_CLASS);
667
658
 
668
659
  return TextLayoutManager.createPreparedLayout(
669
- Preconditions.checkNotNull(surfaceMountingManager.getContext()),
660
+ mReactApplicationContext.getAssets(),
670
661
  attributedString,
671
662
  paragraphAttributes,
672
663
  getYogaSize(minWidth, maxWidth),
@@ -822,6 +813,40 @@ public class FabricUIManager
822
813
  ReactMarkerConstants.FABRIC_UPDATE_UI_MAIN_THREAD_END, null, commitNumber);
823
814
  }
824
815
 
816
+ /** Called from C++ via JNI. */
817
+ @SuppressLint("NotInvokedPrivateMethod")
818
+ @SuppressWarnings("unused")
819
+ @AnyThread
820
+ @ThreadConfined(ANY)
821
+ private void captureViewSnapshot(final int reactTag, final int surfaceId) {
822
+ getViewTransitionSnapshotManager().captureViewSnapshot(reactTag, surfaceId);
823
+ }
824
+
825
+ /** Called from C++ via JNI. */
826
+ @SuppressLint("NotInvokedPrivateMethod")
827
+ @SuppressWarnings("unused")
828
+ @AnyThread
829
+ @ThreadConfined(ANY)
830
+ private void setViewSnapshot(final int sourceTag, final int targetTag, final int surfaceId) {
831
+ getViewTransitionSnapshotManager().setViewSnapshot(sourceTag, targetTag);
832
+ }
833
+
834
+ /** Called from C++ via JNI. */
835
+ @SuppressLint("NotInvokedPrivateMethod")
836
+ @SuppressWarnings("unused")
837
+ @AnyThread
838
+ @ThreadConfined(ANY)
839
+ private void clearPendingSnapshots() {
840
+ getViewTransitionSnapshotManager().clearPendingSnapshots();
841
+ }
842
+
843
+ private synchronized ViewTransitionSnapshotManager getViewTransitionSnapshotManager() {
844
+ if (mViewTransitionSnapshotManager == null) {
845
+ mViewTransitionSnapshotManager = new ViewTransitionSnapshotManager(this, mMountingManager);
846
+ }
847
+ return mViewTransitionSnapshotManager;
848
+ }
849
+
825
850
  @SuppressLint("NotInvokedPrivateMethod")
826
851
  @SuppressWarnings("unused")
827
852
  @AnyThread
@@ -975,13 +1000,7 @@ public class FabricUIManager
975
1000
  mBinding.mergeReactRevision(surfaceId);
976
1001
  }
977
1002
  } else {
978
- UiThreadUtil.runOnUiThread(
979
- () -> {
980
- FabricUIManagerBinding binding = mBinding;
981
- if (binding != null) {
982
- binding.mergeReactRevision(surfaceId);
983
- }
984
- });
1003
+ mPendingReactRevisionMerges.add(surfaceId);
985
1004
  }
986
1005
  }
987
1006
 
@@ -992,15 +1011,8 @@ public class FabricUIManager
992
1011
  @UnstableReactNativeAPI
993
1012
  public void experimental_prefetchResources(
994
1013
  int surfaceId, String componentName, ReadableMapBuffer params) {
995
- if (ReactNativeFeatureFlags.enableImagePrefetchingOnUiThreadAndroid()) {
996
- mMountItemDispatcher.addMountItem(
997
- new PrefetchResourcesMountItem(surfaceId, componentName, params));
998
- } else {
999
- SurfaceMountingManager surfaceMountingManager = mMountingManager.getSurfaceManager(surfaceId);
1000
- if (surfaceMountingManager != null) {
1001
- surfaceMountingManager.experimental_prefetchResources(surfaceId, componentName, params);
1002
- }
1003
- }
1014
+ mMountItemDispatcher.addMountItem(
1015
+ new PrefetchResourcesMountItem(surfaceId, componentName, params));
1004
1016
  }
1005
1017
 
1006
1018
  void setBinding(FabricUIManagerBinding binding) {
@@ -1067,11 +1079,13 @@ public class FabricUIManager
1067
1079
  return surfaceManager.getView(reactTag);
1068
1080
  }
1069
1081
 
1082
+ @Deprecated
1070
1083
  @Override
1071
1084
  public void receiveEvent(int reactTag, String eventName, @Nullable WritableMap params) {
1072
1085
  receiveEvent(View.NO_ID, reactTag, eventName, false, params, EventCategoryDef.UNSPECIFIED);
1073
1086
  }
1074
1087
 
1088
+ @Deprecated
1075
1089
  @Override
1076
1090
  public void receiveEvent(
1077
1091
  int surfaceId, int reactTag, String eventName, @Nullable WritableMap params) {
@@ -1091,7 +1105,9 @@ public class FabricUIManager
1091
1105
  * @param canCoalesceEvent
1092
1106
  * @param params
1093
1107
  * @param eventCategory
1108
+ * @deprecated Use the overload with eventTimestamp parameter instead.
1094
1109
  */
1110
+ @Deprecated
1095
1111
  public void receiveEvent(
1096
1112
  int surfaceId,
1097
1113
  int reactTag,
@@ -1099,9 +1115,34 @@ public class FabricUIManager
1099
1115
  boolean canCoalesceEvent,
1100
1116
  @Nullable WritableMap params,
1101
1117
  @EventCategoryDef int eventCategory) {
1102
- receiveEvent(surfaceId, reactTag, eventName, canCoalesceEvent, params, eventCategory, false);
1118
+ receiveEvent(
1119
+ surfaceId,
1120
+ reactTag,
1121
+ eventName,
1122
+ canCoalesceEvent,
1123
+ params,
1124
+ eventCategory,
1125
+ false,
1126
+ SystemClock.uptimeMillis());
1103
1127
  }
1104
1128
 
1129
+ /**
1130
+ * receiveEvent API that emits an event to C++. If {@code canCoalesceEvent} is true, that signals
1131
+ * that C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before
1132
+ * emitting.
1133
+ *
1134
+ * <p>{@code customCoalesceKey} is currently unused.
1135
+ *
1136
+ * @param surfaceId
1137
+ * @param reactTag
1138
+ * @param eventName
1139
+ * @param canCoalesceEvent
1140
+ * @param params
1141
+ * @param eventCategory
1142
+ * @param experimentalIsSynchronous
1143
+ * @deprecated Use the overload with eventTimestamp parameter instead.
1144
+ */
1145
+ @Deprecated
1105
1146
  @Override
1106
1147
  public void receiveEvent(
1107
1148
  int surfaceId,
@@ -1111,6 +1152,43 @@ public class FabricUIManager
1111
1152
  @Nullable WritableMap params,
1112
1153
  @EventCategoryDef int eventCategory,
1113
1154
  boolean experimentalIsSynchronous) {
1155
+ receiveEvent(
1156
+ surfaceId,
1157
+ reactTag,
1158
+ eventName,
1159
+ canCoalesceEvent,
1160
+ params,
1161
+ eventCategory,
1162
+ experimentalIsSynchronous,
1163
+ SystemClock.uptimeMillis());
1164
+ }
1165
+
1166
+ /**
1167
+ * receiveEvent API that emits an event to C++. If {@code canCoalesceEvent} is true, that signals
1168
+ * that C++ may coalesce the event optionally. Otherwise, coalescing can happen in Java before
1169
+ * emitting.
1170
+ *
1171
+ * <p>{@code customCoalesceKey} is currently unused.
1172
+ *
1173
+ * @param surfaceId
1174
+ * @param reactTag
1175
+ * @param eventName
1176
+ * @param canCoalesceEvent
1177
+ * @param params
1178
+ * @param eventCategory
1179
+ * @param experimentalIsSynchronous
1180
+ * @param eventTimestamp
1181
+ */
1182
+ @Override
1183
+ public void receiveEvent(
1184
+ int surfaceId,
1185
+ int reactTag,
1186
+ String eventName,
1187
+ boolean canCoalesceEvent,
1188
+ @Nullable WritableMap params,
1189
+ @EventCategoryDef int eventCategory,
1190
+ boolean experimentalIsSynchronous,
1191
+ long eventTimestamp) {
1114
1192
 
1115
1193
  if (ReactBuildConfig.DEBUG && surfaceId == View.NO_ID) {
1116
1194
  FLog.d(TAG, "Emitted event without surfaceId: [%d] %s", reactTag, eventName);
@@ -1128,7 +1206,13 @@ public class FabricUIManager
1128
1206
  // access to the event emitter later when the view is mounted. For now just save the event
1129
1207
  // in the view state and trigger it later.
1130
1208
  mMountingManager.enqueuePendingEvent(
1131
- surfaceId, reactTag, eventName, canCoalesceEvent, params, eventCategory);
1209
+ surfaceId,
1210
+ reactTag,
1211
+ eventName,
1212
+ canCoalesceEvent,
1213
+ params,
1214
+ eventCategory,
1215
+ eventTimestamp);
1132
1216
  } else {
1133
1217
  // This can happen if the view has disappeared from the screen (because of async events)
1134
1218
  FLog.i(TAG, "Unable to invoke event: " + eventName + " for reactTag: " + reactTag);
@@ -1142,13 +1226,13 @@ public class FabricUIManager
1142
1226
  boolean firstEventForFrame =
1143
1227
  mSynchronousEvents.add(new SynchronousEvent(surfaceId, reactTag, eventName));
1144
1228
  if (firstEventForFrame) {
1145
- eventEmitter.dispatchEventSynchronously(eventName, params);
1229
+ eventEmitter.dispatchEventSynchronously(eventName, params, eventTimestamp);
1146
1230
  }
1147
1231
  } else {
1148
1232
  if (canCoalesceEvent) {
1149
- eventEmitter.dispatchUnique(eventName, params);
1233
+ eventEmitter.dispatchUnique(eventName, params, eventTimestamp);
1150
1234
  } else {
1151
- eventEmitter.dispatch(eventName, params, eventCategory);
1235
+ eventEmitter.dispatch(eventName, params, eventCategory, eventTimestamp);
1152
1236
  }
1153
1237
  }
1154
1238
  }
@@ -1505,6 +1589,18 @@ public class FabricUIManager
1505
1589
  return;
1506
1590
  }
1507
1591
 
1592
+ // Drain pending React revision merges first so that animations,
1593
+ // preallocation, and mount items operate against the latest revision.
1594
+ if (ReactNativeFeatureFlags.enableFabricCommitBranching()) {
1595
+ FabricUIManagerBinding binding = mBinding;
1596
+ if (binding != null) {
1597
+ Integer mergeSurfaceId;
1598
+ while ((mergeSurfaceId = mPendingReactRevisionMerges.poll()) != null) {
1599
+ binding.mergeReactRevision(mergeSurfaceId);
1600
+ }
1601
+ }
1602
+ }
1603
+
1508
1604
  // Drive any animations from C++.
1509
1605
  // There is a race condition here between getting/setting
1510
1606
  // `mDriveCxxAnimations` which shouldn't matter; it's safe to call
@@ -0,0 +1,223 @@
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.fabric
9
+
10
+ import android.graphics.Bitmap
11
+ import android.graphics.Canvas
12
+ import android.graphics.Rect
13
+ import android.os.Build
14
+ import android.os.Handler
15
+ import android.os.Looper
16
+ import android.view.PixelCopy
17
+ import android.view.View
18
+ import android.view.Window
19
+ import androidx.annotation.RequiresApi
20
+ import androidx.annotation.UiThread
21
+ import androidx.core.graphics.createBitmap
22
+ import com.facebook.infer.annotation.ThreadConfined
23
+ import com.facebook.react.bridge.UIManager
24
+ import com.facebook.react.bridge.UIManagerListener
25
+ import com.facebook.react.bridge.UiThreadUtil
26
+ import com.facebook.react.common.annotations.UnstableReactNativeAPI
27
+ import com.facebook.react.fabric.mounting.MountingManager
28
+
29
+ /**
30
+ * Manages bitmap snapshots of views during view transitions. Captures bitmaps from old views and
31
+ * applies them to pseudo-element shadow nodes, re-applying after each mount cycle since views may
32
+ * be recreated. Cleans up entries whose views have been deleted.
33
+ */
34
+ @OptIn(UnstableReactNativeAPI::class)
35
+ internal class ViewTransitionSnapshotManager(
36
+ private val uiManager: FabricUIManager,
37
+ private val mountingManager: MountingManager,
38
+ ) : UIManagerListener {
39
+
40
+ companion object {
41
+ private fun captureSoftwareBitmap(view: View): Bitmap? {
42
+ if (view.width > 0 && view.height > 0) {
43
+ val bitmap = createBitmap(view.width, view.height)
44
+ view.draw(Canvas(bitmap))
45
+ return bitmap
46
+ }
47
+ return null
48
+ }
49
+ }
50
+
51
+ // Captured bitmaps keyed by source tag. Populated by onBitmapCaptured.
52
+ @ThreadConfined(ThreadConfined.UI) private val viewSnapshots = LinkedHashMap<Int, Bitmap>()
53
+
54
+ // Source→target tag mapping. Populated by setViewSnapshot.
55
+ // A snapshot is resolved when both maps contain an entry for the same source tag.
56
+ @ThreadConfined(ThreadConfined.UI) private val pendingTargets = LinkedHashMap<Int, Int>()
57
+
58
+ @ThreadConfined(ThreadConfined.UI) private var listenerRegistered = false
59
+
60
+ private val mainHandler = Handler(Looper.getMainLooper())
61
+
62
+ @UiThread
63
+ private fun onBitmapCaptured(reactTag: Int, bitmap: Bitmap) {
64
+ viewSnapshots[reactTag] = bitmap
65
+ if (reactTag in pendingTargets) {
66
+ ensureListenerRegistered()
67
+ }
68
+ }
69
+
70
+ @UiThread
71
+ private fun ensureListenerRegistered() {
72
+ if (!listenerRegistered) {
73
+ listenerRegistered = true
74
+ uiManager.addUIManagerEventListener(this)
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Captures a bitmap snapshot of the view identified by the given tag. On API 26+, uses PixelCopy
80
+ * to capture directly from the GPU-composited surface (faster for complex views, captures
81
+ * hardware-accelerated content). Falls back to View.draw() on older APIs.
82
+ */
83
+ fun captureViewSnapshot(reactTag: Int, surfaceId: Int) {
84
+ UiThreadUtil.runOnUiThread {
85
+ val smm = mountingManager.getSurfaceManager(surfaceId) ?: return@runOnUiThread
86
+ if (!smm.getViewExists(reactTag)) return@runOnUiThread
87
+ val view = smm.getView(reactTag)
88
+ if (view.width <= 0 || view.height <= 0) return@runOnUiThread
89
+
90
+ val window =
91
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
92
+ (view.context as? com.facebook.react.bridge.ReactContext)?.getCurrentActivity()?.window
93
+ } else {
94
+ null
95
+ }
96
+
97
+ if (window != null) {
98
+ captureHardwareBitmap(view, reactTag, window)
99
+ } else {
100
+ // Software fallback runs synchronously, so onBitmapCaptured always
101
+ // completes before setViewSnapshot is called.
102
+ captureSoftwareBitmap(view)?.let { onBitmapCaptured(reactTag, it) }
103
+ }
104
+ }
105
+ }
106
+
107
+ @RequiresApi(Build.VERSION_CODES.O)
108
+ private fun captureHardwareBitmap(view: View, reactTag: Int, window: Window) {
109
+ val location = IntArray(2)
110
+ view.getLocationInWindow(location)
111
+
112
+ val viewWidth = view.width
113
+ val viewHeight = view.height
114
+
115
+ if (viewWidth <= 0 || viewHeight <= 0) {
116
+ // Nothing to capture.
117
+ return
118
+ }
119
+
120
+ // The view's rect in window coordinates.
121
+ val viewRect = Rect(location[0], location[1], location[0] + viewWidth, location[1] + viewHeight)
122
+
123
+ // Clamp to window bounds — PixelCopy only captures what's visible on the
124
+ // window surface. Without clamping, off-screen portions are black/empty
125
+ // and the partial result gets stretched to fill the pseudo-element.
126
+ val windowWidth = window.decorView.width
127
+ val windowHeight = window.decorView.height
128
+ val clampedRect =
129
+ Rect(
130
+ viewRect.left.coerceAtLeast(0),
131
+ viewRect.top.coerceAtLeast(0),
132
+ viewRect.right.coerceAtMost(windowWidth),
133
+ viewRect.bottom.coerceAtMost(windowHeight),
134
+ )
135
+
136
+ if (clampedRect.isEmpty) {
137
+ // Entirely off-screen — nothing to capture.
138
+ return
139
+ }
140
+
141
+ val clampedBitmap = createBitmap(clampedRect.width(), clampedRect.height())
142
+ // Offset of the clamped region within the full view.
143
+ val offsetX = clampedRect.left - viewRect.left
144
+ val offsetY = clampedRect.top - viewRect.top
145
+
146
+ // PixelCopy callback is posted to mainHandler, so onBitmapCaptured may run after
147
+ // setViewSnapshot has already recorded the target tag for this source tag.
148
+ try {
149
+ PixelCopy.request(
150
+ window,
151
+ clampedRect,
152
+ clampedBitmap,
153
+ { copyResult ->
154
+ if (copyResult == PixelCopy.SUCCESS) {
155
+ // Compose the clamped capture into a full-size bitmap at the
156
+ // correct offset so it aligns with the pseudo-element's bounds.
157
+ val fullBitmap = createBitmap(viewWidth, viewHeight)
158
+ Canvas(fullBitmap)
159
+ .drawBitmap(clampedBitmap, offsetX.toFloat(), offsetY.toFloat(), null)
160
+ clampedBitmap.recycle()
161
+ onBitmapCaptured(reactTag, fullBitmap)
162
+ } else {
163
+ // Fall back to software rendering if the view is still valid.
164
+ clampedBitmap.recycle()
165
+ captureSoftwareBitmap(view)?.let { onBitmapCaptured(reactTag, it) }
166
+ }
167
+ },
168
+ mainHandler,
169
+ )
170
+ } catch (e: IllegalArgumentException) {
171
+ // Window surface may have been destroyed (e.g., device idle/sleep).
172
+ // Fall back to software rendering if the view is still valid.
173
+ clampedBitmap.recycle()
174
+ captureSoftwareBitmap(view)?.let { onBitmapCaptured(reactTag, it) }
175
+ }
176
+ }
177
+
178
+ /**
179
+ * Maps a previously captured bitmap from a source view to a target pseudo-element view. If the
180
+ * bitmap is already available, the snapshot becomes resolved and will be re-applied after mount
181
+ * cycles.
182
+ */
183
+ fun setViewSnapshot(sourceTag: Int, targetTag: Int) {
184
+ UiThreadUtil.runOnUiThread {
185
+ pendingTargets[sourceTag] = targetTag
186
+ if (sourceTag in viewSnapshots) {
187
+ ensureListenerRegistered()
188
+ }
189
+ }
190
+ }
191
+
192
+ /**
193
+ * Clears all snapshots. Called when a view transition ends to release bitmaps and unregister the
194
+ * mount listener.
195
+ */
196
+ fun clearPendingSnapshots() {
197
+ UiThreadUtil.runOnUiThread {
198
+ viewSnapshots.clear()
199
+ pendingTargets.clear()
200
+ if (listenerRegistered) {
201
+ listenerRegistered = false
202
+ uiManager.removeUIManagerEventListener(this)
203
+ }
204
+ }
205
+ }
206
+
207
+ override fun willDispatchViewUpdates(uiManager: UIManager) {}
208
+
209
+ override fun willMountItems(uiManager: UIManager) {}
210
+
211
+ @UiThread
212
+ override fun didMountItems(uiManager: UIManager) {
213
+ for ((sourceTag, targetTag) in pendingTargets) {
214
+ val smm = mountingManager.getSurfaceManagerForView(targetTag) ?: continue
215
+ val bitmap = viewSnapshots[sourceTag] ?: continue
216
+ smm.applyViewSnapshot(targetTag, bitmap)
217
+ }
218
+ }
219
+
220
+ override fun didDispatchMountItems(uiManager: UIManager) {}
221
+
222
+ override fun didScheduleMountItems(uiManager: UIManager) {}
223
+ }