@depup/react-native 0.85.0-depup.1 → 0.86.0-depup.49

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 (767) 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 +82 -77
  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 +1 -1
  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 -24
  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 -142
  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 +1 -31
  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/HMRClient.js +28 -1
  134. package/Libraries/Utilities/HardwareBackPressEvent.js +22 -0
  135. package/Libraries/Utilities/ReactNativeTestTools.js +4 -4
  136. package/Libraries/Utilities/binaryToBase64.js +1 -1
  137. package/Libraries/Utilities/codegenNativeCommands.js +2 -2
  138. package/Libraries/Utilities/codegenNativeComponent.js +4 -4
  139. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +2 -2
  140. package/Libraries/Utilities/stringifySafe.js +1 -1
  141. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  142. package/Libraries/vendor/core/ErrorUtils.js +4 -4
  143. package/Libraries/vendor/emitter/EventEmitter.js +27 -13
  144. package/README.md +10 -10
  145. package/React/Base/RCTBundleURLProvider.h +19 -1
  146. package/React/Base/RCTBundleURLProvider.mm +82 -0
  147. package/React/Base/RCTDefines.h +1 -1
  148. package/React/Base/RCTMultipartDataTask.h +1 -1
  149. package/React/Base/RCTMultipartDataTask.m +0 -3
  150. package/React/Base/RCTRootView.h +4 -0
  151. package/React/Base/RCTRootViewDelegate.h +5 -2
  152. package/React/Base/RCTVersion.m +1 -1
  153. package/React/Base/Surface/RCTSurface.h +3 -0
  154. package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
  155. package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
  156. package/React/Base/Surface/RCTSurfaceView.mm +2 -1
  157. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.h +5 -0
  158. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +26 -0
  159. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
  160. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
  161. package/React/CoreModules/RCTDevLoadingView.mm +17 -0
  162. package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
  163. package/React/CoreModules/RCTJscSafeUrl+Internal.h +23 -0
  164. package/React/CoreModules/RCTJscSafeUrl.mm +38 -0
  165. package/React/CoreModules/RCTRedBox+Internal.h +42 -0
  166. package/React/CoreModules/RCTRedBox.mm +30 -454
  167. package/React/CoreModules/RCTRedBox2AnsiParser+Internal.h +22 -0
  168. package/React/CoreModules/RCTRedBox2AnsiParser.mm +55 -0
  169. package/React/CoreModules/RCTRedBox2Controller+Internal.h +34 -0
  170. package/React/CoreModules/RCTRedBox2Controller.mm +764 -0
  171. package/React/CoreModules/RCTRedBox2ErrorParser+Internal.h +46 -0
  172. package/React/CoreModules/RCTRedBox2ErrorParser.mm +57 -0
  173. package/React/CoreModules/RCTRedBoxController+Internal.h +31 -0
  174. package/React/CoreModules/RCTRedBoxController.mm +447 -0
  175. package/React/CoreModules/RCTRedBoxHMRClient+Internal.h +26 -0
  176. package/React/CoreModules/RCTRedBoxHMRClient.mm +125 -0
  177. package/React/CoreModules/RCTWebSocketModule.mm +45 -6
  178. package/React/CoreModules/React-CoreModules.podspec +1 -0
  179. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
  180. package/React/DevSupport/RCTFrameTimingsObserver.h +24 -0
  181. package/React/DevSupport/RCTFrameTimingsObserver.mm +298 -0
  182. package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
  183. package/React/DevSupport/RCTPackagerConnection.mm +13 -11
  184. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +148 -43
  185. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
  186. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
  187. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
  188. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
  189. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +122 -8
  190. package/React/Fabric/RCTConversions.h +14 -0
  191. package/React/Fabric/RCTScheduler.mm +18 -0
  192. package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
  193. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
  194. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  195. package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
  196. package/React/Modules/RCTUIManager.mm +1 -1
  197. package/React/Profiler/RCTProfile.h +5 -0
  198. package/React/Profiler/RCTProfile.m +2 -1
  199. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  200. package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
  201. package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
  202. package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
  203. package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
  204. package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
  205. package/React/Views/RCTLayout.m +4 -3
  206. package/React/Views/ScrollView/RCTScrollView.h +6 -2
  207. package/ReactAndroid/api/ReactAndroid.api +37 -27
  208. package/ReactAndroid/build.gradle.kts +28 -21
  209. package/ReactAndroid/gradle.properties +1 -1
  210. package/ReactAndroid/hermes-engine/build.gradle.kts +12 -13
  211. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
  213. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
  214. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
  215. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +33 -88
  216. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
  217. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
  218. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
  219. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
  220. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
  221. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
  222. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
  223. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
  225. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
  226. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
  227. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +6 -0
  228. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
  229. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
  230. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
  231. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +1 -1
  232. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +135 -35
  233. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
  234. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
  235. package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
  236. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
  237. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
  238. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
  239. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
  240. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
  241. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
  242. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
  243. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
  244. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
  245. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
  246. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +71 -29
  247. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +121 -51
  248. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +25 -11
  249. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +26 -12
  250. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +134 -57
  251. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +7 -3
  252. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
  253. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +25 -11
  254. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
  255. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
  256. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
  257. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +40 -1
  258. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
  259. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
  260. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
  261. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
  262. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
  263. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
  264. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
  265. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
  266. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +8 -0
  267. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
  268. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/RequestBodyUtil.kt +2 -0
  269. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
  270. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  271. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
  272. package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
  273. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +68 -15
  274. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
  275. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
  276. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
  277. package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
  278. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
  279. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
  280. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
  281. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
  282. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
  283. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
  284. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
  285. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
  286. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
  287. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
  288. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
  289. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
  290. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
  291. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
  292. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
  293. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
  294. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
  295. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
  296. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
  297. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
  298. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
  299. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
  300. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
  301. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
  302. package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
  303. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
  304. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
  305. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
  306. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +18 -20
  307. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
  308. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -20
  309. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +14 -5
  310. package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
  311. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
  312. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
  313. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
  314. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
  315. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
  316. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
  317. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
  318. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
  319. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +84 -20
  320. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +41 -65
  321. package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
  322. package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
  323. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
  324. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
  325. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
  326. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
  327. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
  328. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
  329. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
  330. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
  331. package/ReactAndroid/src/main/jni/CMakeLists.txt +17 -1
  332. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +22 -0
  333. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +2 -0
  334. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
  335. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
  336. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
  337. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
  338. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
  339. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
  340. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
  341. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
  342. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
  343. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
  344. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
  345. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
  346. package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
  347. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +167 -69
  348. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +36 -15
  349. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
  350. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
  351. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
  352. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
  353. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
  354. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
  355. package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
  356. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +24 -0
  357. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +25 -4
  358. package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
  359. package/ReactCommon/React-Fabric.podspec +13 -0
  360. package/ReactCommon/React-FabricComponents.podspec +1 -1
  361. package/ReactCommon/cxxreact/ReactNativeVersion.h +2 -2
  362. package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
  363. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
  364. package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
  365. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
  366. package/ReactCommon/jsi/jsi/decorator.h +93 -0
  367. package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
  368. package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
  369. package/ReactCommon/jsi/jsi/jsi.h +553 -224
  370. package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
  371. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
  372. package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
  373. package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
  374. package/ReactCommon/jsinspector-modern/HostAgent.cpp +46 -1
  375. package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -1
  376. package/ReactCommon/jsinspector-modern/HostTarget.h +50 -0
  377. package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +1 -1
  378. package/ReactCommon/jsinspector-modern/HostTargetTracing.h +4 -4
  379. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +18 -2
  380. package/ReactCommon/jsinspector-modern/InspectorFlags.h +17 -2
  381. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
  382. package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
  383. package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +1 -1
  384. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +19 -0
  385. package/ReactCommon/jsinspector-modern/RuntimeAgent.h +7 -0
  386. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +33 -0
  387. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +6 -0
  388. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
  389. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +12 -0
  390. package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +3 -2
  391. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +1 -0
  392. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +1 -1
  393. package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +1 -1
  394. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +10 -0
  395. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +3 -1
  396. package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +1 -0
  397. package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +7 -3
  398. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +52 -29
  399. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.h +6 -6
  400. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracerSection.h +113 -0
  401. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +1 -0
  402. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +12 -5
  403. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +3 -1
  404. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +42 -0
  405. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.h +7 -0
  406. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
  407. package/ReactCommon/logger/react_native_log.cpp +0 -1
  408. package/ReactCommon/react/bridging/Array.h +1 -1
  409. package/ReactCommon/react/debug/CMakeLists.txt +2 -1
  410. package/ReactCommon/react/debug/React-debug.podspec +7 -1
  411. package/ReactCommon/react/debug/redbox/AnsiParser.cpp +139 -0
  412. package/ReactCommon/react/debug/redbox/AnsiParser.h +35 -0
  413. package/ReactCommon/react/debug/redbox/JscSafeUrl.cpp +179 -0
  414. package/ReactCommon/react/debug/redbox/JscSafeUrl.h +27 -0
  415. package/ReactCommon/react/debug/redbox/RedBoxErrorParser.cpp +171 -0
  416. package/ReactCommon/react/debug/redbox/RedBoxErrorParser.h +40 -0
  417. package/ReactCommon/react/debug/redbox/tests/AnsiParserTest.cpp +97 -0
  418. package/ReactCommon/react/debug/redbox/tests/JscSafeUrlTest.cpp +173 -0
  419. package/ReactCommon/react/debug/redbox/tests/RedBoxErrorParserTest.cpp +107 -0
  420. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +49 -21
  421. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +60 -25
  422. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +267 -141
  423. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +28 -14
  424. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +48 -20
  425. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +106 -43
  426. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +11 -3
  427. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +14 -7
  428. package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
  429. package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
  430. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
  431. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
  432. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +2 -0
  433. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +14 -0
  434. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +2 -0
  435. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
  436. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +60 -25
  437. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +25 -11
  438. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
  439. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h +4 -0
  440. package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +66 -0
  441. package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
  442. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
  443. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
  444. package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
  445. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
  446. package/ReactCommon/react/networking/NetworkReporter.h +0 -1
  447. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
  448. package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
  449. package/ReactCommon/react/performance/timeline/PerformanceObserver.cpp +18 -6
  450. package/ReactCommon/react/performance/timeline/PerformanceObserver.h +2 -0
  451. package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
  452. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +28 -13
  453. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
  454. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
  455. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
  456. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
  457. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +62 -25
  458. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +10 -1
  459. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
  460. package/ReactCommon/react/renderer/animationbackend/AnimationChoreographer.h +5 -0
  461. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
  462. package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
  463. package/ReactCommon/react/renderer/animations/utils.h +12 -1
  464. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
  465. package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
  466. package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
  467. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
  468. package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
  469. package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
  470. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
  471. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
  472. package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
  473. package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
  474. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -0
  475. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
  476. package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
  477. package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
  478. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
  479. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
  480. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
  481. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
  482. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
  483. package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
  484. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +52 -5
  485. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
  486. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
  487. package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
  488. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  489. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
  490. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
  491. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
  492. package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
  493. package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
  494. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
  495. package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
  496. package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
  497. package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
  498. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
  499. package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
  500. package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
  501. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
  502. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
  503. package/ReactCommon/react/renderer/core/Props.cpp +20 -0
  504. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  505. package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
  506. package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
  507. package/ReactCommon/react/renderer/core/conversions.h +4 -0
  508. package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
  509. package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
  510. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
  511. package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
  512. package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
  513. package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
  514. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
  515. package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
  516. package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
  517. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
  518. package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
  519. package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
  520. package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
  521. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
  522. package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
  523. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
  524. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
  525. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
  526. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
  527. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
  528. package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
  529. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
  530. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
  531. package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
  532. package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
  533. package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
  534. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
  535. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
  536. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
  537. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
  538. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
  539. package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
  540. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
  541. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
  542. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
  543. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
  544. package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
  545. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +2 -0
  546. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
  547. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
  548. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
  549. package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
  550. package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
  551. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
  552. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
  553. package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
  554. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +152 -0
  555. package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
  556. package/ReactCommon/react/timing/React-timing.podspec +2 -0
  557. package/ReactCommon/react/timing/primitives.h +33 -1
  558. package/ReactCommon/{jsinspector-modern → react/utils}/Base64.h +2 -2
  559. package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
  560. package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
  561. package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
  562. package/ReactCommon/yoga/yoga/YGNode.h +1 -1
  563. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
  564. package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
  565. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
  566. package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
  567. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
  568. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
  569. package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
  570. package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
  571. package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
  572. package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
  573. package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
  574. package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
  575. package/ReactCommon/yoga/yoga/event/event.h +1 -0
  576. package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
  577. package/ReactCommon/yoga/yoga/node/Node.h +4 -4
  578. package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
  579. package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
  580. package/ReactCommon/yoga/yoga/style/Style.h +261 -71
  581. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
  582. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  583. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
  584. package/changes.json +12 -12
  585. package/cli.js +1 -1
  586. package/flow/HermesInternalType.js +1 -1
  587. package/flow/bom.js.flow +95 -3
  588. package/flow/dom.js.flow +89 -89
  589. package/gradle/libs.versions.toml +3 -1
  590. package/index.js +30 -3
  591. package/index.js.flow +23 -1
  592. package/package.json +31 -31
  593. package/react-native.config.js +3 -3
  594. package/scripts/cocoapods/rncore.rb +65 -11
  595. package/scripts/cocoapods/rndependencies.rb +65 -11
  596. package/scripts/cocoapods/utils.rb +53 -0
  597. package/scripts/codegen/generate-artifacts-executor/generateAppDependencyProvider.js +4 -4
  598. package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +4 -4
  599. package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +15 -7
  600. package/scripts/codegen/generate-artifacts-executor/generatePackageSwift.js +2 -2
  601. package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +4 -3
  602. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +4 -3
  603. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +19 -8
  604. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
  605. package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +4 -4
  606. package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
  607. package/scripts/codegen/generate-artifacts-executor/utils.js +49 -1
  608. package/scripts/codegen/generate-specs-cli-executor.js +1 -1
  609. package/scripts/generate-codegen-artifacts.js +20 -2
  610. package/scripts/generate-provider-cli.js +1 -1
  611. package/scripts/react_native_pods.rb +26 -2
  612. package/scripts/react_native_pods_utils/script_phases.rb +9 -3
  613. package/scripts/replace-rncore-version.js +91 -14
  614. package/scripts/xcode/with-environment.sh +7 -1
  615. package/sdks/.hermesv1version +1 -1
  616. package/sdks/.hermesversion +1 -1
  617. package/sdks/hermes-engine/hermes-utils.rb +92 -5
  618. package/sdks/hermes-engine/version.properties +2 -2
  619. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  620. package/src/private/animated/createAnimatedPropsHook.js +2 -2
  621. package/src/private/components/virtualcollection/FlingConstants.js +21 -0
  622. package/src/private/components/virtualcollection/Virtual.js +62 -0
  623. package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
  624. package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
  625. package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
  626. package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
  627. package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
  628. package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
  629. package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
  630. package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
  631. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
  632. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
  633. package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
  634. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  635. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
  636. package/src/private/featureflags/ReactNativeFeatureFlags.js +66 -37
  637. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  638. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -7
  639. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
  640. package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
  641. package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
  642. package/src/private/renderer/events/ReactNativeResponder.js +687 -0
  643. package/src/private/renderer/events/ResponderEvent.js +40 -0
  644. package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
  645. package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
  646. package/src/private/setup/setUpDOM.js +20 -0
  647. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  648. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
  649. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
  650. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  651. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  652. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  653. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
  654. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
  655. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
  656. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
  657. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
  658. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
  659. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  660. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
  661. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
  662. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  663. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
  664. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
  665. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
  666. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
  667. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
  668. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
  669. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
  670. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
  671. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
  672. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
  673. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
  674. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  675. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
  676. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
  677. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
  678. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
  679. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  680. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
  681. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
  682. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
  683. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
  684. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
  685. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
  686. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
  687. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
  688. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
  689. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
  690. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  691. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
  692. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
  693. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
  694. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
  695. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
  696. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
  697. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
  698. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
  699. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
  700. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
  701. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
  702. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
  703. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
  704. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
  705. package/src/private/styles/composeStyles.js +1 -1
  706. package/src/private/types/HostComponent.js +1 -1
  707. package/src/private/utilities/toExtendedError.js +1 -1
  708. package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
  709. package/src/private/webapis/dom/events/Event.js +10 -1
  710. package/src/private/webapis/dom/events/EventTarget.js +60 -18
  711. package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
  712. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
  713. package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
  714. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
  715. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
  716. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
  717. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
  718. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
  719. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
  720. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
  721. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
  722. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
  723. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
  724. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  725. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  726. package/src/private/webapis/webidl/PlatformObjects.js +4 -4
  727. package/types_generated/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +5 -1
  728. package/types_generated/Libraries/Components/LayoutConformance/LayoutConformance.d.ts +3 -4
  729. package/types_generated/Libraries/Components/Pressable/useAndroidRippleForView.d.ts +5 -2
  730. package/types_generated/Libraries/Components/TextInput/TextInput.flow.d.ts +14 -2
  731. package/types_generated/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +8 -6
  732. package/types_generated/Libraries/Components/View/ViewPropTypes.d.ts +4 -2
  733. package/types_generated/Libraries/Network/XMLHttpRequest.d.ts +23 -4
  734. package/types_generated/Libraries/ReactNative/AppRegistry.flow.d.ts +2 -3
  735. package/types_generated/Libraries/{Utilities/IPerformanceLogger.d.ts → ReactNative/IPerformanceLogger.flow.d.ts} +12 -6
  736. package/types_generated/Libraries/ReactNative/RendererImplementation.d.ts +12 -25
  737. package/types_generated/Libraries/ReactNative/RendererProxy.d.ts +1 -16
  738. package/types_generated/Libraries/Renderer/shims/ReactNativeTypes.d.ts +1 -16
  739. package/types_generated/Libraries/StyleSheet/StyleSheetTypes.d.ts +3 -3
  740. package/types_generated/Libraries/Utilities/BackHandler.d.ts +6 -2
  741. package/types_generated/index.d.ts +11 -2
  742. package/types_generated/src/private/components/virtualcollection/FlingConstants.d.ts +20 -0
  743. package/types_generated/src/private/components/virtualcollection/Virtual.d.ts +46 -0
  744. package/types_generated/src/private/components/virtualcollection/VirtualCollectionView.d.ts +81 -0
  745. package/types_generated/src/private/components/virtualcollection/column/VirtualColumn.d.ts +23 -0
  746. package/types_generated/src/private/components/virtualcollection/column/VirtualColumnGenerator.d.ts +17 -0
  747. package/types_generated/src/private/components/virtualcollection/dom/getScrollParent.d.ts +21 -0
  748. package/types_generated/src/private/components/virtualcollection/row/VirtualRow.d.ts +23 -0
  749. package/types_generated/src/private/webapis/dom/events/Event.d.ts +1 -9
  750. package/types_generated/src/private/webapis/dom/events/EventTarget.d.ts +1 -13
  751. package/types_generated/src/private/webapis/dom/nodes/ReadOnlyNode.d.ts +5 -2
  752. package/types_generated/src/private/webapis/dom/nodes/internals/NodeInternals.d.ts +8 -1
  753. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19668
  754. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
  755. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
  756. package/Libraries/Renderer/shims/ReactNative.js +0 -27
  757. package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
  758. package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
  759. package/Libraries/Utilities/createPerformanceLogger.js +0 -329
  760. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
  761. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
  762. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
  763. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
  764. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
  765. package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
  766. package/types_generated/Libraries/Renderer/shims/ReactNative.d.ts +0 -16
  767. package/types_generated/Libraries/Utilities/createPerformanceLogger.d.ts +0 -23
@@ -0,0 +1,125 @@
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
+ #import "RCTRedBoxHMRClient+Internal.h"
9
+
10
+ #if RCT_DEV_MENU
11
+
12
+ @implementation RCTRedBoxHMRClient {
13
+ NSURL *_bundleURL;
14
+ NSURLSessionWebSocketTask *_webSocketTask;
15
+ NSURLSession *_session;
16
+ void (^_onFileChange)(void);
17
+ BOOL _stopped;
18
+ }
19
+
20
+ - (instancetype)initWithBundleURL:(NSURL *)bundleURL onFileChange:(void (^)(void))onFileChange
21
+ {
22
+ if (self = [super init]) {
23
+ _bundleURL = bundleURL;
24
+ _onFileChange = [onFileChange copy];
25
+ }
26
+ return self;
27
+ }
28
+
29
+ - (void)start
30
+ {
31
+ if (![_bundleURL.scheme hasPrefix:@"http"]) {
32
+ return;
33
+ }
34
+
35
+ NSURLComponents *components = [[NSURLComponents alloc] initWithURL:_bundleURL resolvingAgainstBaseURL:NO];
36
+ components.scheme = [_bundleURL.scheme isEqualToString:@"https"] ? @"wss" : @"ws";
37
+ components.path = @"/hot";
38
+ components.query = nil;
39
+ components.fragment = nil;
40
+ NSURL *wsURL = components.URL;
41
+ if (!wsURL) {
42
+ return;
43
+ }
44
+
45
+ _session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
46
+ delegate:self
47
+ delegateQueue:nil];
48
+ _webSocketTask = [_session webSocketTaskWithURL:wsURL];
49
+ [_webSocketTask resume];
50
+ }
51
+
52
+ - (void)stop
53
+ {
54
+ _stopped = YES;
55
+ _onFileChange = nil;
56
+ [_webSocketTask cancel];
57
+ _webSocketTask = nil;
58
+ [_session invalidateAndCancel];
59
+ _session = nil;
60
+ }
61
+
62
+ - (void)URLSession:(__unused NSURLSession *)session
63
+ webSocketTask:(__unused NSURLSessionWebSocketTask *)webSocketTask
64
+ didOpenWithProtocol:(__unused NSString *)protocol
65
+ {
66
+ NSDictionary *registration = @{
67
+ @"type" : @"register-entrypoints",
68
+ @"entryPoints" : @[ _bundleURL.absoluteString ],
69
+ };
70
+ NSData *json = [NSJSONSerialization dataWithJSONObject:registration options:0 error:nil];
71
+ NSURLSessionWebSocketMessage *msg = [[NSURLSessionWebSocketMessage alloc]
72
+ initWithString:[[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding]];
73
+ [_webSocketTask sendMessage:msg
74
+ completionHandler:^(__unused NSError *error){
75
+ }];
76
+ [self _listenForNextMessage];
77
+ }
78
+
79
+ - (void)_listenForNextMessage
80
+ {
81
+ if (_stopped) {
82
+ return;
83
+ }
84
+ __weak __typeof(self) weakSelf = self;
85
+ [_webSocketTask receiveMessageWithCompletionHandler:^(NSURLSessionWebSocketMessage *message, NSError *error) {
86
+ if (error || !message) {
87
+ return;
88
+ }
89
+ [weakSelf _handleMessage:message];
90
+ [weakSelf _listenForNextMessage];
91
+ }];
92
+ }
93
+
94
+ - (void)_handleMessage:(NSURLSessionWebSocketMessage *)message
95
+ {
96
+ if (message.type != NSURLSessionWebSocketMessageTypeString || _stopped) {
97
+ return;
98
+ }
99
+ NSData *data = [message.string dataUsingEncoding:NSUTF8StringEncoding];
100
+ NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
101
+ if ([json[@"type"] isEqualToString:@"update-start"]) {
102
+ // Ignore the initial update that fires when the client first registers.
103
+ // Only react to subsequent file changes.
104
+ NSDictionary *body = json[@"body"];
105
+ if ([body isKindOfClass:[NSDictionary class]] && [body[@"isInitialUpdate"] boolValue]) {
106
+ return;
107
+ }
108
+ dispatch_async(dispatch_get_main_queue(), ^{
109
+ if (self->_onFileChange) {
110
+ self->_onFileChange();
111
+ }
112
+ });
113
+ }
114
+ }
115
+
116
+ - (void)URLSession:(__unused NSURLSession *)session
117
+ webSocketTask:(__unused NSURLSessionWebSocketTask *)task
118
+ didCloseWithCode:(__unused NSURLSessionWebSocketCloseCode)closeCode
119
+ reason:(__unused NSData *)reason
120
+ {
121
+ }
122
+
123
+ @end
124
+
125
+ #endif
@@ -10,6 +10,7 @@
10
10
  #import <objc/runtime.h>
11
11
 
12
12
  #import <FBReactNativeSpec/FBReactNativeSpec.h>
13
+ #import <React/RCTAssert.h>
13
14
  #import <React/RCTConvert.h>
14
15
  #import <React/RCTUtils.h>
15
16
  #import <SocketRocket/SRWebSocket.h>
@@ -73,6 +74,12 @@ RCT_EXPORT_METHOD(
73
74
  connect : (NSURL *)URL protocols : (NSArray *)protocols options : (JS::NativeWebSocketModule::SpecConnectOptions &)
74
75
  options socketID : (double)socketID)
75
76
  {
77
+ if (URL == nil || URL.absoluteString.length == 0u) {
78
+ RCTAssert(NO, @"RCTWebSocketModule: Invalid WebSocket URL passed to connect");
79
+ [self sendEventWithName:@"websocketFailed" body:@{@"message" : @"Invalid WebSocket URL", @"id" : @(socketID)}];
80
+ return;
81
+ }
82
+
76
83
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
77
84
 
78
85
  // We load cookies from sharedHTTPCookieStorage (shared with XHR and
@@ -84,14 +91,33 @@ RCT_EXPORT_METHOD(
84
91
  }
85
92
 
86
93
  // Load and set the cookie header.
87
- NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:components.URL];
88
- request.allHTTPHeaderFields = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
94
+ if (components != nil && components.URL != nil) {
95
+ NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:components.URL];
96
+ request.allHTTPHeaderFields = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
97
+ } else {
98
+ RCTLogError(@"RCTWebSocketModule: Invalid URL components - components or components.URL is nil");
99
+ }
89
100
 
90
101
  // Load supplied headers
91
102
  if ([options.headers() isKindOfClass:NSDictionary.class]) {
92
103
  NSDictionary *headers = (NSDictionary *)options.headers();
93
- [headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL *stop) {
94
- [request addValue:[RCTConvert NSString:value] forHTTPHeaderField:key];
104
+ [headers enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
105
+ NSString *headerKey = [RCTConvert NSString:key];
106
+ NSString *headerValue = [RCTConvert NSString:value];
107
+
108
+ if (headerKey == nil || headerValue == nil) {
109
+ RCTLogError(
110
+ @"RCTWebSocketModule: Invalid header key and/or value types. "
111
+ "Expected NSString for both, got key of type %@ and value of type %@.",
112
+ NSStringFromClass([key class]),
113
+ NSStringFromClass([value class]));
114
+ }
115
+
116
+ if (headerKey == nil) {
117
+ return;
118
+ }
119
+
120
+ [request addValue:headerValue == nil ? @"" : headerValue forHTTPHeaderField:headerKey];
95
121
  }];
96
122
  }
97
123
 
@@ -153,6 +179,9 @@ RCT_EXPORT_METHOD(close : (double)code reason : (NSString *)reason socketID : (d
153
179
  NSString *type;
154
180
 
155
181
  NSNumber *socketID = [webSocket reactTag];
182
+ if (!socketID) {
183
+ return;
184
+ }
156
185
  id contentHandler = _contentHandlers[socketID];
157
186
  if (contentHandler) {
158
187
  message = [contentHandler processWebsocketMessage:message forSocketID:socketID withType:&type];
@@ -165,18 +194,25 @@ RCT_EXPORT_METHOD(close : (double)code reason : (NSString *)reason socketID : (d
165
194
  }
166
195
  }
167
196
 
168
- [self sendEventWithName:@"websocketMessage" body:@{@"data" : message, @"type" : type, @"id" : webSocket.reactTag}];
197
+ [self sendEventWithName:@"websocketMessage" body:@{@"data" : message, @"type" : type, @"id" : socketID}];
169
198
  }
170
199
 
171
200
  - (void)webSocketDidOpen:(SRWebSocket *)webSocket
172
201
  {
202
+ NSNumber *socketID = [webSocket reactTag];
203
+ if (!socketID) {
204
+ return;
205
+ }
173
206
  [self sendEventWithName:@"websocketOpen"
174
- body:@{@"id" : webSocket.reactTag, @"protocol" : webSocket.protocol ? webSocket.protocol : @""}];
207
+ body:@{@"id" : socketID, @"protocol" : webSocket.protocol ? webSocket.protocol : @""}];
175
208
  }
176
209
 
177
210
  - (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error
178
211
  {
179
212
  NSNumber *socketID = [webSocket reactTag];
213
+ if (!socketID) {
214
+ return;
215
+ }
180
216
  _contentHandlers[socketID] = nil;
181
217
  _sockets[socketID] = nil;
182
218
  NSDictionary *body =
@@ -190,6 +226,9 @@ RCT_EXPORT_METHOD(close : (double)code reason : (NSString *)reason socketID : (d
190
226
  wasClean:(BOOL)wasClean
191
227
  {
192
228
  NSNumber *socketID = [webSocket reactTag];
229
+ if (!socketID) {
230
+ return;
231
+ }
193
232
  _contentHandlers[socketID] = nil;
194
233
  _sockets[socketID] = nil;
195
234
  [self sendEventWithName:@"websocketClosed"
@@ -51,6 +51,7 @@ Pod::Spec.new do |s|
51
51
  s.dependency "React-Core/CoreModulesHeaders", version
52
52
  s.dependency "React-RCTImage", version
53
53
  s.dependency "React-jsi", version
54
+ add_dependency(s, "React-featureflags")
54
55
  s.dependency 'React-RCTBlob'
55
56
  add_dependency(s, "React-debug")
56
57
  add_dependency(s, "React-runtimeexecutor", :additional_framework_paths => ["platform/ios"])
@@ -28,7 +28,6 @@ void RCTDefaultCxxLogFunction(ReactNativeLogLevel level, const char *message)
28
28
  break;
29
29
  case ReactNativeLogLevelFatal:
30
30
  LOG(FATAL) << message;
31
- break;
32
31
  }
33
32
  }
34
33
 
@@ -0,0 +1,24 @@
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
+ #import <Foundation/Foundation.h>
9
+
10
+ #ifdef __cplusplus
11
+ #import <jsinspector-modern/tracing/FrameTimingSequence.h>
12
+
13
+ using RCTFrameTimingCallback = void (^)(facebook::react::jsinspector_modern::tracing::FrameTimingSequence);
14
+ #endif
15
+
16
+ @interface RCTFrameTimingsObserver : NSObject
17
+
18
+ #ifdef __cplusplus
19
+ - (instancetype)initWithScreenshotsEnabled:(BOOL)screenshotsEnabled callback:(RCTFrameTimingCallback)callback;
20
+ #endif
21
+ - (void)start;
22
+ - (void)stop;
23
+
24
+ @end
@@ -0,0 +1,298 @@
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
+ #import "RCTFrameTimingsObserver.h"
9
+
10
+ #import <UIKit/UIKit.h>
11
+
12
+ #import <mach/thread_act.h>
13
+ #import <pthread.h>
14
+
15
+ #import <atomic>
16
+ #import <chrono>
17
+ #import <mutex>
18
+ #import <optional>
19
+ #import <vector>
20
+
21
+ #import <react/timing/primitives.h>
22
+
23
+ using namespace facebook::react;
24
+
25
+ static constexpr CGFloat kScreenshotScaleFactor = 1.0;
26
+ static constexpr CGFloat kScreenshotJPEGQuality = 0.8;
27
+
28
+ namespace {
29
+
30
+ // Stores a captured frame screenshot and its associated metadata, used for
31
+ // buffering frames during dynamic sampling.
32
+ struct FrameData {
33
+ UIImage *image;
34
+ uint64_t frameId;
35
+ jsinspector_modern::tracing::ThreadId threadId;
36
+ HighResTimeStamp beginTimestamp;
37
+ HighResTimeStamp endTimestamp;
38
+ };
39
+
40
+ } // namespace
41
+
42
+ @implementation RCTFrameTimingsObserver {
43
+ BOOL _screenshotsEnabled;
44
+ RCTFrameTimingCallback _callback;
45
+ CADisplayLink *_displayLink;
46
+ uint64_t _frameCounter;
47
+ // Serial queue for encoding work (single background thread). We limit to 1
48
+ // thread to minimize the performance impact of screenshot recording.
49
+ dispatch_queue_t _encodingQueue;
50
+ std::atomic<bool> _running;
51
+ uint64_t _lastScreenshotHash;
52
+
53
+ // Stores the most recently captured frame to opportunistically encode after
54
+ // the current frame. Replaced frames are emitted as timings without
55
+ // screenshots.
56
+ std::mutex _lastFrameMutex;
57
+ std::optional<FrameData> _lastFrameData;
58
+
59
+ std::atomic<bool> _encodingInProgress;
60
+ }
61
+
62
+ - (instancetype)initWithScreenshotsEnabled:(BOOL)screenshotsEnabled callback:(RCTFrameTimingCallback)callback
63
+ {
64
+ if (self = [super init]) {
65
+ _screenshotsEnabled = screenshotsEnabled;
66
+ _callback = [callback copy];
67
+ _frameCounter = 0;
68
+ _encodingQueue = dispatch_queue_create("com.facebook.react.frame-timings-observer", DISPATCH_QUEUE_SERIAL);
69
+ _running.store(false);
70
+ _lastScreenshotHash = 0;
71
+ _encodingInProgress.store(false);
72
+ }
73
+ return self;
74
+ }
75
+
76
+ - (void)start
77
+ {
78
+ _running.store(true, std::memory_order_relaxed);
79
+ _frameCounter = 0;
80
+ _lastScreenshotHash = 0;
81
+ _encodingInProgress.store(false, std::memory_order_relaxed);
82
+ {
83
+ std::lock_guard<std::mutex> lock(_lastFrameMutex);
84
+ _lastFrameData.reset();
85
+ }
86
+
87
+ // Emit initial frame event
88
+ auto now = HighResTimeStamp::now();
89
+ [self _emitFrameTimingWithBeginTimestamp:now endTimestamp:now];
90
+
91
+ _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(_displayLinkTick:)];
92
+ [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
93
+ }
94
+
95
+ - (void)stop
96
+ {
97
+ _running.store(false, std::memory_order_relaxed);
98
+ [_displayLink invalidate];
99
+ _displayLink = nil;
100
+ {
101
+ std::lock_guard<std::mutex> lock(_lastFrameMutex);
102
+ _lastFrameData.reset();
103
+ }
104
+ }
105
+
106
+ - (void)_displayLinkTick:(CADisplayLink *)sender
107
+ {
108
+ // CADisplayLink.timestamp and targetTimestamp are in the same timebase as
109
+ // CACurrentMediaTime() / mach_absolute_time(), which on Apple platforms maps
110
+ // to CLOCK_UPTIME_RAW — the same clock backing std::chrono::steady_clock.
111
+ auto beginNanos = static_cast<int64_t>(sender.timestamp * 1e9);
112
+ auto endNanos = static_cast<int64_t>(sender.targetTimestamp * 1e9);
113
+
114
+ auto beginTimestamp = HighResTimeStamp::fromChronoSteadyClockTimePoint(
115
+ std::chrono::steady_clock::time_point(std::chrono::nanoseconds(beginNanos)));
116
+ auto endTimestamp = HighResTimeStamp::fromChronoSteadyClockTimePoint(
117
+ std::chrono::steady_clock::time_point(std::chrono::nanoseconds(endNanos)));
118
+
119
+ [self _emitFrameTimingWithBeginTimestamp:beginTimestamp endTimestamp:endTimestamp];
120
+ }
121
+
122
+ - (void)_emitFrameTimingWithBeginTimestamp:(HighResTimeStamp)beginTimestamp endTimestamp:(HighResTimeStamp)endTimestamp
123
+ {
124
+ uint64_t frameId = _frameCounter++;
125
+ auto threadId = static_cast<jsinspector_modern::tracing::ThreadId>(pthread_mach_thread_np(pthread_self()));
126
+
127
+ if (!_screenshotsEnabled) {
128
+ // Screenshots disabled - emit without screenshot
129
+ [self _emitFrameEventWithFrameId:frameId
130
+ threadId:threadId
131
+ beginTimestamp:beginTimestamp
132
+ endTimestamp:endTimestamp
133
+ screenshot:std::nullopt];
134
+ return;
135
+ }
136
+
137
+ UIImage *image = [self _captureScreenshot];
138
+ if (image == nil) {
139
+ // Failed to capture (e.g. no window, duplicate hash) - emit without screenshot
140
+ [self _emitFrameEventWithFrameId:frameId
141
+ threadId:threadId
142
+ beginTimestamp:beginTimestamp
143
+ endTimestamp:endTimestamp
144
+ screenshot:std::nullopt];
145
+ return;
146
+ }
147
+
148
+ FrameData frameData{image, frameId, threadId, beginTimestamp, endTimestamp};
149
+
150
+ bool expected = false;
151
+ if (_encodingInProgress.compare_exchange_strong(expected, true)) {
152
+ // Not encoding - encode this frame immediately
153
+ [self _encodeFrame:std::move(frameData)];
154
+ } else {
155
+ // Encoding thread busy - store current screenshot in buffer for tail-capture
156
+ std::optional<FrameData> oldFrame;
157
+ {
158
+ std::lock_guard<std::mutex> lock(_lastFrameMutex);
159
+ oldFrame = std::move(_lastFrameData);
160
+ _lastFrameData = std::move(frameData);
161
+ }
162
+ if (oldFrame.has_value()) {
163
+ // Skipped frame - emit event without screenshot
164
+ [self _emitFrameEventWithFrameId:oldFrame->frameId
165
+ threadId:oldFrame->threadId
166
+ beginTimestamp:oldFrame->beginTimestamp
167
+ endTimestamp:oldFrame->endTimestamp
168
+ screenshot:std::nullopt];
169
+ }
170
+ }
171
+ }
172
+
173
+ - (void)_emitFrameEventWithFrameId:(uint64_t)frameId
174
+ threadId:(jsinspector_modern::tracing::ThreadId)threadId
175
+ beginTimestamp:(HighResTimeStamp)beginTimestamp
176
+ endTimestamp:(HighResTimeStamp)endTimestamp
177
+ screenshot:(std::optional<std::vector<uint8_t>>)screenshot
178
+ {
179
+ dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), ^{
180
+ if (!self->_running.load(std::memory_order_relaxed)) {
181
+ return;
182
+ }
183
+ jsinspector_modern::tracing::FrameTimingSequence sequence{
184
+ frameId, threadId, beginTimestamp, endTimestamp, std::move(screenshot)};
185
+ self->_callback(std::move(sequence));
186
+ });
187
+ }
188
+
189
+ - (void)_encodeFrame:(FrameData)frameData
190
+ {
191
+ dispatch_async(_encodingQueue, ^{
192
+ if (!self->_running.load(std::memory_order_relaxed)) {
193
+ return;
194
+ }
195
+
196
+ auto screenshot = [self _encodeScreenshot:frameData.image];
197
+ [self _emitFrameEventWithFrameId:frameData.frameId
198
+ threadId:frameData.threadId
199
+ beginTimestamp:frameData.beginTimestamp
200
+ endTimestamp:frameData.endTimestamp
201
+ screenshot:std::move(screenshot)];
202
+
203
+ // Clear encoding flag early, allowing new frames to start fresh encoding
204
+ // sessions
205
+ self->_encodingInProgress.store(false, std::memory_order_release);
206
+
207
+ // Opportunistically encode tail frame (if present) without blocking new
208
+ // frames
209
+ std::optional<FrameData> tailFrame;
210
+ {
211
+ std::lock_guard<std::mutex> lock(self->_lastFrameMutex);
212
+ tailFrame = std::move(self->_lastFrameData);
213
+ self->_lastFrameData.reset();
214
+ }
215
+ if (tailFrame.has_value()) {
216
+ if (!self->_running.load(std::memory_order_relaxed)) {
217
+ return;
218
+ }
219
+ auto tailScreenshot = [self _encodeScreenshot:tailFrame->image];
220
+ [self _emitFrameEventWithFrameId:tailFrame->frameId
221
+ threadId:tailFrame->threadId
222
+ beginTimestamp:tailFrame->beginTimestamp
223
+ endTimestamp:tailFrame->endTimestamp
224
+ screenshot:std::move(tailScreenshot)];
225
+ }
226
+ });
227
+ }
228
+
229
+ // Captures a screenshot of the current window. Must be called on the main
230
+ // thread. Returns nil if capture fails or if the frame content is unchanged.
231
+ - (UIImage *)_captureScreenshot
232
+ {
233
+ UIWindow *keyWindow = [self _getKeyWindow];
234
+ if (keyWindow == nil) {
235
+ return nil;
236
+ }
237
+
238
+ UIView *rootView = keyWindow.rootViewController.view ?: keyWindow;
239
+ CGSize viewSize = rootView.bounds.size;
240
+ CGSize scaledSize = CGSizeMake(viewSize.width * kScreenshotScaleFactor, viewSize.height * kScreenshotScaleFactor);
241
+
242
+ UIGraphicsImageRendererFormat *format = [UIGraphicsImageRendererFormat defaultFormat];
243
+ format.scale = 1.0;
244
+ UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:scaledSize format:format];
245
+
246
+ UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext *context) {
247
+ [rootView drawViewHierarchyInRect:CGRectMake(0, 0, scaledSize.width, scaledSize.height) afterScreenUpdates:NO];
248
+ }];
249
+
250
+ // Skip duplicate frames via sampled FNV-1a pixel hash
251
+ CGImageRef cgImage = image.CGImage;
252
+ CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(cgImage));
253
+ uint64_t hash = 0xcbf29ce484222325ULL;
254
+ const uint8_t *ptr = CFDataGetBytePtr(pixelData);
255
+ CFIndex length = CFDataGetLength(pixelData);
256
+ // Use prime stride to prevent row alignment on power-of-2 pixel widths
257
+ for (CFIndex i = 0; i < length; i += 67) {
258
+ hash ^= ptr[i];
259
+ hash *= 0x100000001b3ULL;
260
+ }
261
+ CFRelease(pixelData);
262
+
263
+ if (hash == _lastScreenshotHash) {
264
+ return nil;
265
+ }
266
+ _lastScreenshotHash = hash;
267
+
268
+ return image;
269
+ }
270
+
271
+ - (std::optional<std::vector<uint8_t>>)_encodeScreenshot:(UIImage *)image
272
+ {
273
+ NSData *jpegData = UIImageJPEGRepresentation(image, kScreenshotJPEGQuality);
274
+ if (jpegData == nil) {
275
+ return std::nullopt;
276
+ }
277
+
278
+ const auto *bytes = static_cast<const uint8_t *>(jpegData.bytes);
279
+ return std::vector<uint8_t>(bytes, bytes + jpegData.length);
280
+ }
281
+
282
+ - (UIWindow *)_getKeyWindow
283
+ {
284
+ for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) {
285
+ if (scene.activationState == UISceneActivationStateForegroundActive &&
286
+ [scene isKindOfClass:[UIWindowScene class]]) {
287
+ auto windowScene = (UIWindowScene *)scene;
288
+ for (UIWindow *window = nullptr in windowScene.windows) {
289
+ if (window.isKeyWindow) {
290
+ return window;
291
+ }
292
+ }
293
+ }
294
+ }
295
+ return nil;
296
+ }
297
+
298
+ @end
@@ -28,6 +28,10 @@ static NSString *getServerHost(NSURL *bundleURL)
28
28
  if (host == nullptr) {
29
29
  host = @"localhost";
30
30
  }
31
+ // NSURL.host strips IPv6 brackets, but URL authority requires them.
32
+ if ([host containsString:@":"] && ![host hasPrefix:@"["] && ![host hasSuffix:@"]"]) {
33
+ host = [NSString stringWithFormat:@"[%@]", host];
34
+ }
31
35
 
32
36
  // Use explicit port from URL if available
33
37
  if ([bundleURL port] != nullptr) {
@@ -64,22 +64,24 @@ struct Registration {
64
64
 
65
65
  static RCTReconnectingWebSocket *socketForLocation(NSString *const serverHostPort, NSString *scheme)
66
66
  {
67
- NSString *serverHost;
68
- NSString *serverPort;
69
- NSArray *locationComponents = [serverHostPort componentsSeparatedByString:@":"];
70
- if ([locationComponents count] > 0) {
71
- serverHost = locationComponents[0];
72
- }
73
- if ([locationComponents count] > 1) {
74
- serverPort = locationComponents[1];
75
- }
76
67
  if (![scheme length]) {
77
68
  scheme = @"http";
78
69
  }
70
+
71
+ NSString *location = serverHostPort;
72
+ if (![location length]) {
73
+ location = @"localhost";
74
+ }
75
+
76
+ NSString *locationURLString = [location rangeOfString:@"://"].location == NSNotFound
77
+ ? [NSString stringWithFormat:@"%@://%@/", scheme, location]
78
+ : location;
79
+ NSURLComponents *locationURL = [NSURLComponents componentsWithString:locationURLString];
80
+
79
81
  NSURLComponents *const components = [NSURLComponents new];
80
- components.host = serverHost ?: @"localhost";
82
+ components.host = locationURL.host ?: @"localhost";
81
83
  components.scheme = scheme;
82
- components.port = serverPort ? @(serverPort.integerValue) : @(kRCTBundleURLProviderDefaultPort);
84
+ components.port = locationURL.port ?: @(kRCTBundleURLProviderDefaultPort);
83
85
  components.path = @"/message";
84
86
  components.queryItems = @[ [NSURLQueryItem queryItemWithName:@"role" value:RCTPlatformName] ];
85
87
  static dispatch_queue_t queue;