react-native-tvos 0.85.2-0 → 0.86.0-0rc2

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 (731) 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 +96 -91
  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/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/React/Base/RCTBundleURLProvider.h +19 -1
  145. package/React/Base/RCTBundleURLProvider.mm +82 -0
  146. package/React/Base/RCTDefines.h +1 -1
  147. package/React/Base/RCTMultipartDataTask.h +1 -1
  148. package/React/Base/RCTMultipartDataTask.m +0 -3
  149. package/React/Base/RCTRootView.h +4 -0
  150. package/React/Base/RCTRootViewDelegate.h +5 -2
  151. package/React/Base/RCTVersion.m +3 -3
  152. package/React/Base/Surface/RCTSurface.h +3 -0
  153. package/React/Base/Surface/RCTSurfaceDelegate.h +7 -3
  154. package/React/Base/Surface/RCTSurfaceRootView.mm +1 -1
  155. package/React/Base/Surface/RCTSurfaceView.mm +2 -1
  156. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingProxyRootView.mm +2 -0
  157. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.h +0 -3
  158. package/React/Base/Surface/SurfaceHostingView/RCTSurfaceHostingView.mm +3 -1
  159. package/React/CoreModules/RCTDevMenuConfigurationDecorator.h +2 -2
  160. package/React/CoreModules/RCTJscSafeUrl+Internal.h +23 -0
  161. package/React/CoreModules/RCTJscSafeUrl.mm +38 -0
  162. package/React/CoreModules/RCTRedBox+Internal.h +42 -0
  163. package/React/CoreModules/RCTRedBox.mm +30 -471
  164. package/React/CoreModules/RCTRedBox2AnsiParser+Internal.h +22 -0
  165. package/React/CoreModules/RCTRedBox2AnsiParser.mm +55 -0
  166. package/React/CoreModules/RCTRedBox2Controller+Internal.h +34 -0
  167. package/React/CoreModules/RCTRedBox2Controller.mm +764 -0
  168. package/React/CoreModules/RCTRedBox2ErrorParser+Internal.h +46 -0
  169. package/React/CoreModules/RCTRedBox2ErrorParser.mm +57 -0
  170. package/React/CoreModules/RCTRedBoxController+Internal.h +31 -0
  171. package/React/CoreModules/RCTRedBoxController.mm +447 -0
  172. package/React/CoreModules/RCTRedBoxHMRClient+Internal.h +26 -0
  173. package/React/CoreModules/RCTRedBoxHMRClient.mm +125 -0
  174. package/React/CoreModules/RCTWebSocketModule.mm +45 -6
  175. package/React/CoreModules/React-CoreModules.podspec +1 -0
  176. package/React/CxxLogUtils/RCTDefaultCxxLogFunction.mm +0 -1
  177. package/React/DevSupport/RCTFrameTimingsObserver.h +24 -0
  178. package/React/DevSupport/RCTFrameTimingsObserver.mm +298 -0
  179. package/React/DevSupport/RCTInspectorDevServerHelper.mm +4 -0
  180. package/React/DevSupport/RCTPackagerConnection.mm +13 -11
  181. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +148 -43
  182. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.h +1 -0
  183. package/React/Fabric/Mounting/ComponentViews/RCTFabricComponentsPlugins.mm +1 -0
  184. package/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.h +1 -1
  185. package/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm +2 -2
  186. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +70 -8
  187. package/React/Fabric/RCTConversions.h +14 -0
  188. package/React/Fabric/RCTScheduler.mm +18 -0
  189. package/React/Fabric/RCTSurfacePointerHandler.mm +8 -2
  190. package/React/Fabric/RCTSurfaceTouchHandler.mm +1 -0
  191. package/React/Fabric/Surface/RCTFabricSurface.mm +3 -0
  192. package/React/I18n/strings/pt.lproj/fbt_language_pack.bin +0 -0
  193. package/React/Modules/RCTUIManager.mm +1 -1
  194. package/React/Profiler/RCTProfile.h +5 -0
  195. package/React/Profiler/RCTProfile.m +2 -1
  196. package/React/Profiler/RCTProfileTrampoline-arm.S +1 -1
  197. package/React/Profiler/RCTProfileTrampoline-arm64.S +1 -1
  198. package/React/Profiler/RCTProfileTrampoline-i386.S +1 -1
  199. package/React/Profiler/RCTProfileTrampoline-x86_64.S +1 -1
  200. package/React/Tests/Mounting/RCTViewComponentViewTests.mm +186 -0
  201. package/React/Tests/Text/RCTAttributedTextUtilsTest.mm +5 -5
  202. package/React/Views/RCTLayout.m +4 -3
  203. package/React/Views/ScrollView/RCTScrollView.h +6 -2
  204. package/ReactAndroid/api/ReactAndroid.api +37 -27
  205. package/ReactAndroid/build.gradle.kts +28 -21
  206. package/ReactAndroid/gradle.properties +1 -1
  207. package/ReactAndroid/hermes-engine/build.gradle.kts +17 -0
  208. package/ReactAndroid/publish.gradle +20 -46
  209. package/ReactAndroid/src/main/java/com/facebook/hermes/instrumentation/HermesSamplingProfiler.kt +2 -0
  210. package/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +1 -3
  211. package/ReactAndroid/src/main/java/com/facebook/react/ReactAndroidHWInputDeviceHelper.kt +2 -0
  212. package/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +40 -110
  213. package/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +32 -87
  214. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.kt +1 -0
  215. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.kt +9 -99
  216. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.kt +7 -28
  217. package/ReactAndroid/src/main/java/com/facebook/react/animated/PropsAnimatedNode.kt +2 -19
  218. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.kt +15 -23
  219. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +36 -0
  220. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJNISoLoader.kt +2 -0
  221. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactNativeJniCommonSoLoader.kt +2 -0
  222. package/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactSoftExceptionLogger.kt +4 -0
  223. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultSoLoader.kt +2 -0
  224. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/FpsView.kt +2 -2
  225. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/InspectorFlags.kt +6 -0
  226. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/LogBoxDialogSurfaceDelegate.kt +15 -2
  227. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxDialogSurfaceDelegate.kt +1 -0
  228. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/DevSupportHttpClient.kt +9 -34
  229. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingSequence.kt +1 -1
  230. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/FrameTimingsObserver.kt +135 -35
  231. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkRequestListener.kt +2 -0
  232. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +10 -10
  233. package/ReactAndroid/src/main/java/com/facebook/react/fabric/AnimationBackendChoreographer.kt +15 -13
  234. package/ReactAndroid/src/main/java/com/facebook/react/fabric/DevToolsReactPerfLogger.kt +4 -1
  235. package/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +139 -43
  236. package/ReactAndroid/src/main/java/com/facebook/react/fabric/ViewTransitionSnapshotManager.kt +223 -0
  237. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/EventEmitterWrapper.kt +25 -8
  238. package/ReactAndroid/src/main/java/com/facebook/react/fabric/events/FabricEventEmitter.kt +34 -1
  239. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +104 -65
  240. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountingManager.kt +9 -1
  241. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/SurfaceMountingManager.kt +172 -36
  242. package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.kt +1 -1
  243. package/ReactAndroid/src/main/java/com/facebook/react/interfaces/ExtraWindowEventListener.kt +29 -0
  244. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +71 -29
  245. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +121 -51
  246. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +25 -11
  247. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +26 -12
  248. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +134 -57
  249. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt +3 -3
  250. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt +1 -4
  251. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +25 -11
  252. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeNewArchitectureFeatureFlagsDefaults.kt +5 -9
  253. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/rewrite_feature_flag_defaults.py +76 -0
  254. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/tests/test_rewrite_feature_flag_defaults.py +63 -0
  255. package/ReactAndroid/src/main/java/com/facebook/react/internal/tracing/PerformanceTracer.kt +40 -1
  256. package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +3 -0
  257. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobModule.kt +10 -5
  258. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.kt +1 -2
  259. package/ReactAndroid/src/main/java/com/facebook/react/modules/clipboard/ClipboardModule.kt +3 -0
  260. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/DeviceEventManagerModule.kt +2 -1
  261. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactChoreographer.kt +21 -20
  262. package/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt +63 -3
  263. package/ReactAndroid/src/main/java/com/facebook/react/modules/image/ImageLoaderModule.kt +59 -62
  264. package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +8 -0
  265. package/ReactAndroid/src/main/java/com/facebook/react/modules/statusbar/StatusBarModule.kt +45 -36
  266. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +3 -3
  267. package/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.kt +5 -2
  268. package/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.kt +4 -0
  269. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.kt +68 -15
  270. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImplDevHelper.kt +8 -1
  271. package/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactSurfaceView.kt +21 -19
  272. package/ReactAndroid/src/main/java/com/facebook/react/shell/MainReactPackage.kt +4 -0
  273. package/ReactAndroid/src/main/java/com/facebook/react/soloader/OpenSourceMergedSoMapping.kt +4 -0
  274. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BackgroundStyleApplicator.kt +77 -72
  275. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManager.java +7 -16
  276. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/BlendModeHelper.kt +3 -2
  277. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/DisplayMetricsHolder.kt +3 -0
  278. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/FilterHelper.kt +3 -1
  279. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +25 -0
  280. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.kt +2 -2
  281. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactRootViewTagGenerator.kt +3 -2
  282. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/RootViewUtil.kt +17 -7
  283. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.kt +18 -0
  284. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TouchTargetHelper.kt +20 -12
  285. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/TransformHelper.kt +18 -24
  286. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIConstantsProviderBinding.kt +2 -0
  287. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +4 -0
  288. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerHelper.kt +11 -71
  289. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java +10 -17
  290. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/common/ViewUtil.kt +29 -30
  291. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/BackgroundImageDrawable.kt +5 -3
  292. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/drawable/InsetBoxShadowDrawable.kt +12 -13
  293. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +1 -0
  294. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +1 -0
  295. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTModernEventEmitter.kt +30 -0
  296. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/SynchronousEventReceiver.kt +28 -0
  297. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.kt +9 -9
  298. package/ReactAndroid/src/main/java/com/facebook/react/util/AndroidVersion.kt +27 -3
  299. package/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.kt +4 -0
  300. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/MaintainVisibleScrollPositionHelper.kt +1 -14
  301. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerViewManager.kt +1 -22
  302. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +18 -20
  303. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactNestedScrollView.java +20 -21
  304. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -20
  305. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +14 -5
  306. package/ReactAndroid/src/main/java/com/facebook/react/views/text/FontMetricsUtil.kt +2 -3
  307. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +5 -162
  308. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.kt +1 -1
  309. package/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt +71 -97
  310. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/CustomStyleSpan.kt +1 -4
  311. package/ReactAndroid/src/main/java/com/facebook/react/views/text/internal/span/DrawCommandSpan.kt +1 -1
  312. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.kt +7 -13
  313. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.kt +40 -2
  314. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactDrawableHelper.kt +59 -20
  315. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +84 -20
  316. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.kt +41 -65
  317. package/ReactAndroid/src/main/java/com/facebook/react/views/view/WindowUtil.kt +85 -13
  318. package/ReactAndroid/src/main/java/com/facebook/soloader/annotation/SoLoaderLibrary.kt +17 -0
  319. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaAlign.java +5 -1
  320. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.kt +30 -0
  321. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaDisplay.java +3 -1
  322. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaExperimentalFeature.java +3 -1
  323. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaGridTrackType.java +39 -0
  324. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaJustify.java +20 -12
  325. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIBase.java +101 -0
  326. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.kt +33 -0
  327. package/ReactAndroid/src/main/jni/CMakeLists.txt +17 -1
  328. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.cpp +22 -0
  329. package/ReactAndroid/src/main/jni/react/devsupport/JInspectorFlags.h +2 -0
  330. package/ReactAndroid/src/main/jni/react/fabric/ComponentFactory.cpp +0 -1
  331. package/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +0 -2
  332. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.cpp +26 -6
  333. package/ReactAndroid/src/main/jni/react/fabric/EventEmitterWrapper.h +3 -3
  334. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.cpp +47 -0
  335. package/ReactAndroid/src/main/jni/react/fabric/FabricMountingManager.h +20 -6
  336. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +24 -1
  337. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.h +6 -0
  338. package/ReactAndroid/src/main/jni/react/fabric/FocusOrderingHelper.cpp +0 -1
  339. package/ReactAndroid/src/main/jni/react/fabric/SurfaceHandlerBinding.cpp +1 -0
  340. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.cpp +85 -0
  341. package/ReactAndroid/src/main/jni/react/fabric/test_helper/FabricMountingManagerTestHelper.h +46 -0
  342. package/ReactAndroid/src/main/jni/react/fabric/test_helper/OnLoad.cpp +16 -0
  343. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +167 -69
  344. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +36 -15
  345. package/ReactAndroid/src/main/jni/react/hermes/instrumentation/HermesSamplingProfiler.cpp +1 -1
  346. package/ReactAndroid/src/main/jni/react/jni/OnLoad-common.cpp +0 -2
  347. package/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +2 -1
  348. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.cpp +37 -30
  349. package/ReactAndroid/src/main/jni/react/reactnativeblob/BlobCollector.h +11 -8
  350. package/ReactAndroid/src/main/jni/react/reactnativeblob/CMakeLists.txt +2 -1
  351. package/ReactAndroid/src/main/jni/react/reactnativeblob/OnLoad.cpp +1 -1
  352. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +24 -0
  353. package/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +25 -4
  354. package/ReactAndroid/src/main/jni/react/tracing/CMakeLists.txt +28 -0
  355. package/ReactCommon/React-Fabric.podspec +13 -0
  356. package/ReactCommon/React-FabricComponents.podspec +1 -1
  357. package/ReactCommon/cxxreact/ReactNativeVersion.h +5 -5
  358. package/ReactCommon/jsc/JSCRuntime.cpp +9 -0
  359. package/ReactCommon/jserrorhandler/JsErrorHandler.cpp +1 -0
  360. package/ReactCommon/jserrorhandler/JsErrorHandler.h +1 -1
  361. package/ReactCommon/jsi/jsi/JSIDynamic.cpp +1 -0
  362. package/ReactCommon/jsi/jsi/decorator.h +93 -0
  363. package/ReactCommon/jsi/jsi/jsi-inl.h +97 -68
  364. package/ReactCommon/jsi/jsi/jsi.cpp +208 -27
  365. package/ReactCommon/jsi/jsi/jsi.h +553 -224
  366. package/ReactCommon/jsi/jsi/test/testlib.cpp +453 -0
  367. package/ReactCommon/jsiexecutor/jsireact/JSINativeModules.cpp +1 -1
  368. package/ReactCommon/jsinspector-modern/EmulationAgent.cpp +108 -0
  369. package/ReactCommon/jsinspector-modern/EmulationAgent.h +47 -0
  370. package/ReactCommon/jsinspector-modern/HostAgent.cpp +46 -1
  371. package/ReactCommon/jsinspector-modern/HostTarget.cpp +7 -1
  372. package/ReactCommon/jsinspector-modern/HostTarget.h +50 -0
  373. package/ReactCommon/jsinspector-modern/HostTargetTracing.cpp +1 -1
  374. package/ReactCommon/jsinspector-modern/HostTargetTracing.h +4 -4
  375. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +18 -2
  376. package/ReactCommon/jsinspector-modern/InspectorFlags.h +17 -2
  377. package/ReactCommon/jsinspector-modern/InspectorPackagerConnection.cpp +19 -2
  378. package/ReactCommon/jsinspector-modern/InspectorPackagerConnectionImpl.h +3 -0
  379. package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +1 -1
  380. package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +19 -0
  381. package/ReactCommon/jsinspector-modern/RuntimeAgent.h +7 -0
  382. package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +33 -0
  383. package/ReactCommon/jsinspector-modern/RuntimeTarget.h +6 -0
  384. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +10 -0
  385. package/ReactCommon/jsinspector-modern/tests/HostTargetTest.cpp +12 -0
  386. package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +3 -2
  387. package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +1 -0
  388. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +1 -1
  389. package/ReactCommon/jsinspector-modern/tests/TracingTest.cpp +1 -1
  390. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.cpp +10 -0
  391. package/ReactCommon/jsinspector-modern/tests/utils/InspectorFlagOverridesGuard.h +3 -1
  392. package/ReactCommon/jsinspector-modern/tracing/CMakeLists.txt +1 -0
  393. package/ReactCommon/jsinspector-modern/tracing/FrameTimingSequence.h +7 -3
  394. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.cpp +52 -29
  395. package/ReactCommon/jsinspector-modern/tracing/HostTracingProfileSerializer.h +6 -6
  396. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracerSection.h +113 -0
  397. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +1 -0
  398. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.cpp +12 -5
  399. package/ReactCommon/jsinspector-modern/tracing/TraceEventGenerator.h +3 -1
  400. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.cpp +42 -0
  401. package/ReactCommon/jsinspector-modern/tracing/TraceEventSerializer.h +7 -0
  402. package/ReactCommon/jsinspector-modern/tracing/TracingCategory.h +0 -1
  403. package/ReactCommon/logger/react_native_log.cpp +0 -1
  404. package/ReactCommon/react/bridging/Array.h +1 -1
  405. package/ReactCommon/react/debug/CMakeLists.txt +2 -1
  406. package/ReactCommon/react/debug/React-debug.podspec +7 -1
  407. package/ReactCommon/react/debug/redbox/AnsiParser.cpp +139 -0
  408. package/ReactCommon/react/debug/redbox/AnsiParser.h +35 -0
  409. package/ReactCommon/react/debug/redbox/JscSafeUrl.cpp +179 -0
  410. package/ReactCommon/react/debug/redbox/JscSafeUrl.h +27 -0
  411. package/ReactCommon/react/debug/redbox/RedBoxErrorParser.cpp +171 -0
  412. package/ReactCommon/react/debug/redbox/RedBoxErrorParser.h +40 -0
  413. package/ReactCommon/react/debug/redbox/tests/AnsiParserTest.cpp +97 -0
  414. package/ReactCommon/react/debug/redbox/tests/JscSafeUrlTest.cpp +173 -0
  415. package/ReactCommon/react/debug/redbox/tests/RedBoxErrorParserTest.cpp +107 -0
  416. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +49 -21
  417. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +60 -25
  418. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +267 -141
  419. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +28 -14
  420. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +48 -20
  421. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +106 -43
  422. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSExperimental.h +3 -3
  423. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +14 -7
  424. package/ReactCommon/react/featureflags/rewrite_feature_flag_defaults.py +111 -0
  425. package/ReactCommon/react/featureflags/tests/test_rewrite_feature_flag_defaults.py +60 -0
  426. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTInteropTurboModule.h +3 -9
  427. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModule.mm +0 -1
  428. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +2 -0
  429. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +14 -0
  430. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +2 -0
  431. package/ReactCommon/react/nativemodule/fantomtestspecificmethods/NativeFantomTestSpecificMethods.cpp +2 -2
  432. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +60 -25
  433. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +25 -11
  434. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.cpp +3 -2
  435. package/ReactCommon/react/nativemodule/mutationobserver/NativeMutationObserver.h +4 -0
  436. package/ReactCommon/react/nativemodule/mutationobserver/React-mutationobservernativemodule.podspec +66 -0
  437. package/ReactCommon/react/nativemodule/viewtransition/CMakeLists.txt +24 -0
  438. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.cpp +92 -0
  439. package/ReactCommon/react/nativemodule/viewtransition/NativeViewTransition.h +37 -0
  440. package/ReactCommon/react/nativemodule/viewtransition/React-viewtransitionnativemodule.podspec +58 -0
  441. package/ReactCommon/react/nativemodule/webperformance/NativePerformance.cpp +10 -1
  442. package/ReactCommon/react/networking/NetworkReporter.h +0 -1
  443. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.h +0 -1
  444. package/ReactCommon/react/performance/timeline/PerformanceEntry.h +1 -1
  445. package/ReactCommon/react/performance/timeline/PerformanceObserver.cpp +18 -6
  446. package/ReactCommon/react/performance/timeline/PerformanceObserver.h +2 -0
  447. package/ReactCommon/react/performance/timeline/tests/PerformanceEntryTest.cpp +62 -0
  448. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +24 -12
  449. package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +1 -1
  450. package/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp +3 -0
  451. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.cpp +10 -3
  452. package/ReactCommon/react/renderer/animationbackend/AnimatedPropsRegistry.h +1 -0
  453. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.cpp +4 -0
  454. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +1 -1
  455. package/ReactCommon/react/renderer/animationbackend/AnimationBackendCommitHook.h +0 -1
  456. package/ReactCommon/react/renderer/animations/LayoutAnimationDriver.cpp +8 -3
  457. package/ReactCommon/react/renderer/animations/tests/MutationComparatorTest.cpp +273 -0
  458. package/ReactCommon/react/renderer/animations/utils.h +12 -1
  459. package/ReactCommon/react/renderer/attributedstring/TextAttributes.cpp +1 -1
  460. package/ReactCommon/react/renderer/attributedstring/conversions.h +104 -3
  461. package/ReactCommon/react/renderer/components/image/conversions.h +2 -3
  462. package/ReactCommon/react/renderer/components/scrollview/ScrollViewEventEmitter.h +0 -1
  463. package/ReactCommon/react/renderer/components/scrollview/conversions.h +0 -1
  464. package/ReactCommon/react/renderer/components/text/stateConversions.h +0 -1
  465. package/ReactCommon/react/renderer/components/view/AccessibilityProps.cpp +531 -21
  466. package/ReactCommon/react/renderer/components/view/AccessibilityProps.h +9 -0
  467. package/ReactCommon/react/renderer/components/view/BaseTouch.cpp +3 -2
  468. package/ReactCommon/react/renderer/components/view/BaseTouch.h +7 -0
  469. package/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +8 -0
  470. package/ReactCommon/react/renderer/components/view/PointerEvent.cpp +2 -0
  471. package/ReactCommon/react/renderer/components/view/PointerEvent.h +5 -0
  472. package/ReactCommon/react/renderer/components/view/TouchEvent.h +0 -2
  473. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.cpp +23 -5
  474. package/ReactCommon/react/renderer/components/view/TouchEventEmitter.h +1 -0
  475. package/ReactCommon/react/renderer/components/view/YogaLayoutableShadowNode.cpp +5 -0
  476. package/ReactCommon/react/renderer/components/view/YogaStylableProps.cpp +33 -28
  477. package/ReactCommon/react/renderer/components/view/accessibilityPropsConversions.h +0 -1
  478. package/ReactCommon/react/renderer/components/view/conversions.h +44 -28
  479. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/HostPlatformViewProps.cpp +53 -5
  480. package/ReactCommon/react/renderer/components/view/platform/android/react/renderer/components/view/NativeDrawable.h +47 -16
  481. package/ReactCommon/react/renderer/components/view/platform/cxx/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +2 -2
  482. package/ReactCommon/react/renderer/{graphics/DoubleConversions.h → components/view/platform/tvos/react/renderer/components/view/HostPlatformTouch.h} +2 -4
  483. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewEventEmitter.h +14 -0
  484. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.cpp +38 -0
  485. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewProps.h +29 -0
  486. package/ReactCommon/react/renderer/components/view/platform/tvos/react/renderer/components/view/HostPlatformViewTraitsInitializer.h +30 -0
  487. package/ReactCommon/react/renderer/components/view/propsConversions.h +8 -2
  488. package/ReactCommon/react/renderer/components/view/tests/ConversionsTest.cpp +86 -0
  489. package/ReactCommon/react/renderer/components/view/tests/ViewTest.cpp +34 -0
  490. package/ReactCommon/react/renderer/core/EventEmitter.cpp +67 -2
  491. package/ReactCommon/react/renderer/core/EventEmitter.h +25 -0
  492. package/ReactCommon/react/renderer/core/EventPipe.h +3 -1
  493. package/ReactCommon/react/renderer/core/EventQueueProcessor.cpp +18 -10
  494. package/ReactCommon/react/renderer/core/EventTarget.cpp +8 -5
  495. package/ReactCommon/react/renderer/core/LayoutContext.h +9 -2
  496. package/ReactCommon/react/renderer/core/LayoutMetrics.cpp +5 -3
  497. package/ReactCommon/react/renderer/core/LayoutPrimitives.h +1 -0
  498. package/ReactCommon/react/renderer/core/Props.cpp +20 -0
  499. package/ReactCommon/react/renderer/core/RawEvent.cpp +4 -2
  500. package/ReactCommon/react/renderer/core/RawEvent.h +6 -6
  501. package/ReactCommon/react/renderer/core/ShadowNode.h +2 -2
  502. package/ReactCommon/react/renderer/core/conversions.h +4 -0
  503. package/ReactCommon/react/renderer/core/graphicsConversions.h +4 -4
  504. package/ReactCommon/react/renderer/core/propsConversions.h +1 -1
  505. package/ReactCommon/react/renderer/core/tests/EventQueueProcessorTest.cpp +52 -3
  506. package/ReactCommon/react/renderer/core/tests/EventTargetTests.cpp +26 -0
  507. package/ReactCommon/react/renderer/css/tests/CSSValueParserTest.cpp +1 -1
  508. package/ReactCommon/react/renderer/debug/DebugStringConvertible.cpp +42 -26
  509. package/ReactCommon/react/renderer/debug/DebugStringConvertible.h +4 -2
  510. package/ReactCommon/react/renderer/debug/tests/DebugStringConvertibleTest.cpp +34 -3
  511. package/ReactCommon/react/renderer/graphics/BlendMode.h +5 -0
  512. package/ReactCommon/react/renderer/graphics/CMakeLists.txt +1 -0
  513. package/ReactCommon/react/renderer/graphics/ColorStop.h +3 -0
  514. package/ReactCommon/react/renderer/graphics/LinearGradient.h +3 -0
  515. package/ReactCommon/react/renderer/graphics/RadialGradient.h +4 -0
  516. package/ReactCommon/react/renderer/graphics/React-graphics.podspec +1 -0
  517. package/ReactCommon/react/renderer/graphics/ValueUnit.cpp +1 -1
  518. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +0 -5
  519. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageManager.cpp +2 -2
  520. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +0 -4
  521. package/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTSyncImageManager.mm +5 -1
  522. package/ReactCommon/react/renderer/mapbuffer/MapBufferBuilder.cpp +12 -4
  523. package/ReactCommon/react/renderer/mounting/CMakeLists.txt +1 -0
  524. package/ReactCommon/react/renderer/mounting/Differentiator.cpp +307 -4
  525. package/ReactCommon/react/renderer/mounting/ShadowTree.cpp +27 -2
  526. package/ReactCommon/react/renderer/mounting/internal/LongestIncreasingSubsequence.h +95 -0
  527. package/ReactCommon/react/renderer/mounting/tests/DifferentiatorUnflattenTest.cpp +212 -0
  528. package/ReactCommon/react/renderer/mounting/tests/LongestIncreasingSubsequenceTest.cpp +154 -0
  529. package/ReactCommon/react/renderer/mounting/tests/ShadowTreeLifeCycleTest.cpp +314 -18
  530. package/ReactCommon/react/renderer/mounting/updateMountedFlag.cpp +38 -20
  531. package/ReactCommon/react/renderer/runtimescheduler/tests/RuntimeSchedulerTest.cpp +20 -22
  532. package/ReactCommon/react/renderer/scheduler/CMakeLists.txt +1 -0
  533. package/ReactCommon/react/renderer/scheduler/Scheduler.cpp +76 -3
  534. package/ReactCommon/react/renderer/scheduler/Scheduler.h +12 -0
  535. package/ReactCommon/react/renderer/scheduler/SchedulerDelegate.h +5 -0
  536. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +0 -7
  537. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +2 -1
  538. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +16 -1
  539. package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -0
  540. package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +1 -0
  541. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +347 -5
  542. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +5 -3
  543. package/ReactCommon/react/renderer/uimanager/UIManagerDelegate.h +5 -0
  544. package/ReactCommon/react/renderer/uimanager/UIManagerViewTransitionDelegate.h +82 -0
  545. package/ReactCommon/react/renderer/viewtransition/CMakeLists.txt +22 -0
  546. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.cpp +520 -0
  547. package/ReactCommon/react/renderer/viewtransition/ViewTransitionModule.h +161 -0
  548. package/ReactCommon/react/runtime/TimerManager.cpp +4 -2
  549. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +152 -0
  550. package/ReactCommon/react/timing/PrivacyInfo.xcprivacy +21 -0
  551. package/ReactCommon/react/timing/React-timing.podspec +2 -0
  552. package/ReactCommon/react/timing/primitives.h +33 -1
  553. package/ReactCommon/{jsinspector-modern → react/utils}/Base64.h +2 -2
  554. package/ReactCommon/yoga/yoga/YGEnums.cpp +32 -0
  555. package/ReactCommon/yoga/yoga/YGEnums.h +20 -4
  556. package/ReactCommon/yoga/yoga/YGMacros.h +2 -0
  557. package/ReactCommon/yoga/yoga/YGNode.h +1 -1
  558. package/ReactCommon/yoga/yoga/YGNodeStyle.cpp +269 -0
  559. package/ReactCommon/yoga/yoga/YGNodeStyle.h +93 -1
  560. package/ReactCommon/yoga/yoga/algorithm/AbsoluteLayout.cpp +40 -9
  561. package/ReactCommon/yoga/yoga/algorithm/Align.h +12 -1
  562. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp +106 -14
  563. package/ReactCommon/yoga/yoga/algorithm/CalculateLayout.h +22 -0
  564. package/ReactCommon/yoga/yoga/enums/Align.h +3 -1
  565. package/ReactCommon/yoga/yoga/enums/Display.h +2 -1
  566. package/ReactCommon/yoga/yoga/enums/ExperimentalFeature.h +2 -1
  567. package/ReactCommon/yoga/yoga/enums/GridTrackType.h +43 -0
  568. package/ReactCommon/yoga/yoga/enums/Justify.h +5 -1
  569. package/ReactCommon/yoga/yoga/event/event.cpp +2 -0
  570. package/ReactCommon/yoga/yoga/event/event.h +1 -0
  571. package/ReactCommon/yoga/yoga/node/Node.cpp +6 -1
  572. package/ReactCommon/yoga/yoga/node/Node.h +4 -4
  573. package/ReactCommon/yoga/yoga/style/GridLine.h +53 -0
  574. package/ReactCommon/yoga/yoga/style/GridTrack.h +63 -0
  575. package/ReactCommon/yoga/yoga/style/Style.h +261 -71
  576. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -1
  577. package/ReactCommon/yoga/yoga/style/StyleValueHandle.h +8 -0
  578. package/ReactCommon/yoga/yoga/style/StyleValuePool.h +10 -0
  579. package/cli.js +1 -1
  580. package/flow/HermesInternalType.js +1 -1
  581. package/flow/bom.js.flow +95 -3
  582. package/flow/dom.js.flow +89 -89
  583. package/gradle/libs.versions.toml +3 -1
  584. package/index.js +30 -3
  585. package/index.js.flow +23 -1
  586. package/package.json +13 -13
  587. package/react-native.config.js +3 -3
  588. package/scripts/cocoapods/rncore.rb +65 -11
  589. package/scripts/cocoapods/rndependencies.rb +65 -11
  590. package/scripts/cocoapods/utils.rb +53 -0
  591. package/scripts/codegen/generate-artifacts-executor/generateCustomURLHandlers.js +1 -1
  592. package/scripts/codegen/generate-artifacts-executor/generateNativeCode.js +13 -4
  593. package/scripts/codegen/generate-artifacts-executor/generateRCTModuleProviders.js +1 -1
  594. package/scripts/codegen/generate-artifacts-executor/generateRCTThirdPartyComponents.js +1 -1
  595. package/scripts/codegen/generate-artifacts-executor/generateReactCodegenPodspec.js +17 -6
  596. package/scripts/codegen/generate-artifacts-executor/generateSchemaInfos.js +1 -1
  597. package/scripts/codegen/generate-artifacts-executor/generateUnstableModulesRequiringMainQueueSetupProvider.js +1 -1
  598. package/scripts/codegen/generate-artifacts-executor/index.js +2 -0
  599. package/scripts/codegen/generate-artifacts-executor/utils.js +1 -1
  600. package/scripts/codegen/generate-specs-cli-executor.js +1 -1
  601. package/scripts/generate-codegen-artifacts.js +20 -2
  602. package/scripts/generate-provider-cli.js +1 -1
  603. package/scripts/react_native_pods.rb +26 -2
  604. package/scripts/react_native_pods_utils/script_phases.rb +9 -3
  605. package/scripts/replace-rncore-version.js +91 -14
  606. package/scripts/xcode/with-environment.sh +7 -1
  607. package/sdks/.hermesv1version +1 -1
  608. package/sdks/.hermesversion +1 -1
  609. package/sdks/hermes-engine/hermes-utils.rb +92 -5
  610. package/sdks/hermes-engine/version.properties +2 -2
  611. package/src/private/animated/NativeAnimatedValidation.js +1 -1
  612. package/src/private/animated/createAnimatedPropsHook.js +2 -2
  613. package/src/private/components/virtualcollection/FlingConstants.js +21 -0
  614. package/src/private/components/virtualcollection/Virtual.js +62 -0
  615. package/src/private/components/virtualcollection/VirtualCollectionView.js +238 -0
  616. package/src/private/components/virtualcollection/column/VirtualColumn.js +43 -0
  617. package/src/private/components/virtualcollection/column/VirtualColumnGenerator.js +72 -0
  618. package/src/private/components/virtualcollection/debug/FlingItemOverlay.js +13 -0
  619. package/src/private/components/virtualcollection/dom/getScrollParent.js +43 -0
  620. package/src/private/components/virtualcollection/dom/isScrollableNode.js +22 -0
  621. package/src/private/components/virtualcollection/row/VirtualRow.js +43 -0
  622. package/src/private/components/virtualcollection/row/VirtualRowGenerator.js +72 -0
  623. package/src/private/devsupport/devmenu/elementinspector/getInspectorDataForViewAtPoint.js +2 -2
  624. package/src/private/devsupport/devmenu/elementinspector/useExternalInspection.js +1 -1
  625. package/src/private/devsupport/devmenu/specs/NativeDevMenu.js +1 -1
  626. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsRuntimeSettingsModule.js +2 -2
  627. package/src/private/devsupport/rndevtools/specs/NativeReactDevToolsSettingsManager.js +2 -2
  628. package/src/private/featureflags/ReactNativeFeatureFlags.js +66 -37
  629. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +3 -3
  630. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +14 -7
  631. package/src/private/renderer/errorhandling/ErrorHandlers.js +3 -3
  632. package/src/private/renderer/events/LegacySyntheticEvent.js +90 -0
  633. package/src/private/renderer/events/ReactNativeEventTypeMapping.js +103 -0
  634. package/src/private/renderer/events/ReactNativeResponder.js +687 -0
  635. package/src/private/renderer/events/ResponderEvent.js +40 -0
  636. package/src/private/renderer/events/ResponderTouchHistoryStore.js +258 -0
  637. package/src/private/renderer/events/dispatchNativeEvent.js +83 -0
  638. package/src/private/setup/setUpDOM.js +20 -0
  639. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
  640. package/src/private/specs_DEPRECATED/components/ActivityIndicatorViewNativeComponent.js +2 -2
  641. package/src/private/specs_DEPRECATED/components/AndroidDrawerLayoutNativeComponent.js +2 -2
  642. package/src/private/specs_DEPRECATED/components/AndroidHorizontalScrollContentViewNativeComponent.js +2 -2
  643. package/src/private/specs_DEPRECATED/components/AndroidSwipeRefreshLayoutNativeComponent.js +2 -2
  644. package/src/private/specs_DEPRECATED/components/AndroidSwitchNativeComponent.js +2 -2
  645. package/src/private/specs_DEPRECATED/components/DebuggingOverlayNativeComponent.js +2 -2
  646. package/src/private/specs_DEPRECATED/components/ProgressBarAndroidNativeComponent.js +2 -2
  647. package/src/private/specs_DEPRECATED/components/PullToRefreshViewNativeComponent.js +2 -2
  648. package/src/private/specs_DEPRECATED/components/RCTInputAccessoryViewNativeComponent.js +2 -2
  649. package/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js +2 -2
  650. package/src/private/specs_DEPRECATED/components/RCTSafeAreaViewNativeComponent.js +2 -2
  651. package/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js +2 -2
  652. package/src/private/specs_DEPRECATED/components/UnimplementedNativeViewNativeComponent.js +2 -2
  653. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityInfo.js +1 -1
  654. package/src/private/specs_DEPRECATED/modules/NativeAccessibilityManager.js +1 -1
  655. package/src/private/specs_DEPRECATED/modules/NativeActionSheetManager.js +1 -1
  656. package/src/private/specs_DEPRECATED/modules/NativeAlertManager.js +1 -1
  657. package/src/private/specs_DEPRECATED/modules/NativeAppState.js +1 -1
  658. package/src/private/specs_DEPRECATED/modules/NativeAppearance.js +1 -1
  659. package/src/private/specs_DEPRECATED/modules/NativeBlobModule.js +1 -1
  660. package/src/private/specs_DEPRECATED/modules/NativeClipboard.js +1 -1
  661. package/src/private/specs_DEPRECATED/modules/NativeDevLoadingView.js +1 -1
  662. package/src/private/specs_DEPRECATED/modules/NativeDevSettings.js +1 -1
  663. package/src/private/specs_DEPRECATED/modules/NativeDeviceEventManager.js +1 -1
  664. package/src/private/specs_DEPRECATED/modules/NativeDialogManagerAndroid.js +1 -1
  665. package/src/private/specs_DEPRECATED/modules/NativeFileReaderModule.js +2 -2
  666. package/src/private/specs_DEPRECATED/modules/NativeFrameRateLogger.js +1 -1
  667. package/src/private/specs_DEPRECATED/modules/NativeHeadlessJsTaskSupport.js +1 -1
  668. package/src/private/specs_DEPRECATED/modules/NativeI18nManager.js +1 -1
  669. package/src/private/specs_DEPRECATED/modules/NativeImageEditor.js +2 -2
  670. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderAndroid.js +1 -1
  671. package/src/private/specs_DEPRECATED/modules/NativeImageLoaderIOS.js +1 -1
  672. package/src/private/specs_DEPRECATED/modules/NativeImageStoreAndroid.js +2 -2
  673. package/src/private/specs_DEPRECATED/modules/NativeImageStoreIOS.js +2 -2
  674. package/src/private/specs_DEPRECATED/modules/NativeIntentAndroid.js +1 -1
  675. package/src/private/specs_DEPRECATED/modules/NativeJSCHeapCapture.js +1 -1
  676. package/src/private/specs_DEPRECATED/modules/NativeKeyboardObserver.js +1 -1
  677. package/src/private/specs_DEPRECATED/modules/NativeLinkingManager.js +1 -1
  678. package/src/private/specs_DEPRECATED/modules/NativeLogBox.js +1 -1
  679. package/src/private/specs_DEPRECATED/modules/NativeModalManager.js +1 -1
  680. package/src/private/specs_DEPRECATED/modules/NativeNetworkingAndroid.js +1 -1
  681. package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -1
  682. package/src/private/specs_DEPRECATED/modules/NativePermissionsAndroid.js +1 -1
  683. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsAndroid.js +2 -2
  684. package/src/private/specs_DEPRECATED/modules/NativePlatformConstantsIOS.js +2 -2
  685. package/src/private/specs_DEPRECATED/modules/NativePushNotificationManagerIOS.js +2 -2
  686. package/src/private/specs_DEPRECATED/modules/NativeRedBox.js +1 -1
  687. package/src/private/specs_DEPRECATED/modules/NativeSampleTurboModule.js +2 -2
  688. package/src/private/specs_DEPRECATED/modules/NativeSegmentFetcher.js +1 -1
  689. package/src/private/specs_DEPRECATED/modules/NativeSettingsManager.js +2 -2
  690. package/src/private/specs_DEPRECATED/modules/NativeShareModule.js +1 -1
  691. package/src/private/specs_DEPRECATED/modules/NativeSoundManager.js +1 -1
  692. package/src/private/specs_DEPRECATED/modules/NativeTiming.js +1 -1
  693. package/src/private/specs_DEPRECATED/modules/NativeToastAndroid.js +1 -1
  694. package/src/private/specs_DEPRECATED/modules/NativeUIManager.js +1 -1
  695. package/src/private/specs_DEPRECATED/modules/NativeVibration.js +1 -1
  696. package/src/private/specs_DEPRECATED/modules/NativeWebSocketModule.js +2 -2
  697. package/src/private/styles/composeStyles.js +1 -1
  698. package/src/private/types/HostComponent.js +1 -1
  699. package/src/private/utilities/toExtendedError.js +1 -1
  700. package/src/private/viewtransition/specs/NativeViewTransition.js +33 -0
  701. package/src/private/webapis/dom/events/Event.js +10 -1
  702. package/src/private/webapis/dom/events/EventTarget.js +60 -18
  703. package/src/private/webapis/dom/events/internals/EventInternals.js +18 -1
  704. package/src/private/webapis/dom/events/internals/EventTargetInternals.js +12 -0
  705. package/src/private/webapis/dom/nodes/ReactNativeElement.js +24 -0
  706. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +4 -6
  707. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +70 -1
  708. package/src/private/webapis/dom/nodes/internals/NodeInternals.js +10 -0
  709. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +1 -1
  710. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +2 -2
  711. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +5 -9
  712. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +2 -2
  713. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +2 -2
  714. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +2 -2
  715. package/src/private/webapis/performance/internals/RawPerformanceEntry.js +1 -1
  716. package/src/private/webapis/performance/specs/NativePerformance.js +1 -1
  717. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  718. package/src/private/webapis/webidl/PlatformObjects.js +4 -4
  719. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +0 -19669
  720. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +0 -11129
  721. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +0 -12930
  722. package/Libraries/Renderer/shims/ReactNative.js +0 -27
  723. package/Libraries/Utilities/GlobalPerformanceLogger.js +0 -24
  724. package/Libraries/Utilities/PerformanceLoggerContext.js +0 -33
  725. package/Libraries/Utilities/createPerformanceLogger.js +0 -329
  726. package/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaMethodWrapper.kt +0 -442
  727. package/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobCollector.kt +0 -31
  728. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollContainerLegacyView.kt +0 -47
  729. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaConfigJNIFinalizer.java +0 -31
  730. package/ReactAndroid/src/main/java/com/facebook/yoga/YogaNodeJNIFinalizer.java +0 -35
  731. package/ReactCommon/react/renderer/graphics/DoubleConversions.cpp +0 -38
@@ -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;