react-native-windows 0.76.3 → 0.77.0-preview.2

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 (367) hide show
  1. package/.flowconfig +5 -1
  2. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +1 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +13 -0
  4. package/Libraries/Animated/AnimatedEvent.js +1 -1
  5. package/Libraries/Animated/AnimatedImplementation.js +2 -2
  6. package/Libraries/Animated/NativeAnimatedAllowlist.js +20 -9
  7. package/Libraries/Animated/animations/Animation.js +60 -25
  8. package/Libraries/Animated/animations/DecayAnimation.js +26 -38
  9. package/Libraries/Animated/animations/SpringAnimation.js +33 -39
  10. package/Libraries/Animated/animations/TimingAnimation.js +34 -42
  11. package/Libraries/Animated/components/AnimatedFlatList.js +1 -1
  12. package/Libraries/Animated/components/AnimatedSectionList.js +3 -1
  13. package/Libraries/Animated/createAnimatedComponent.js +60 -33
  14. package/Libraries/Animated/nodes/AnimatedColor.js +1 -1
  15. package/Libraries/Animated/nodes/AnimatedInterpolation.js +1 -1
  16. package/Libraries/Animated/nodes/AnimatedNode.js +39 -45
  17. package/Libraries/Animated/nodes/AnimatedObject.js +13 -3
  18. package/Libraries/Animated/nodes/AnimatedProps.js +104 -46
  19. package/Libraries/Animated/nodes/AnimatedStyle.js +116 -39
  20. package/Libraries/Animated/nodes/AnimatedTransform.js +56 -23
  21. package/Libraries/Animated/nodes/AnimatedValue.js +1 -1
  22. package/Libraries/Animated/nodes/AnimatedWithChildren.js +1 -3
  23. package/Libraries/Animated/useAnimatedProps.js +41 -35
  24. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +19 -3
  25. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +77 -5
  26. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.windows.js +82 -5
  27. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +4 -4
  28. package/Libraries/Components/Button.js +9 -4
  29. package/Libraries/Components/Button.windows.js +19 -5
  30. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +3 -1
  31. package/Libraries/Components/Glyph/Glyph.js +2 -1
  32. package/Libraries/Components/Keyboard/KeyboardAvoidingView.js +7 -0
  33. package/Libraries/Components/Popup/PopupNativeComponent.js +0 -1
  34. package/Libraries/Components/Pressable/Pressable.js +4 -4
  35. package/Libraries/Components/Pressable/Pressable.windows.js +10 -4
  36. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +13 -7
  37. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +3 -2
  38. package/Libraries/Components/SafeAreaView/SafeAreaView.js +4 -4
  39. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -1
  40. package/Libraries/Components/ScrollView/ScrollView.js +49 -88
  41. package/Libraries/Components/ScrollView/ScrollViewCommands.js +1 -1
  42. package/Libraries/Components/ScrollView/ScrollViewContext.js +2 -0
  43. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -2
  44. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +0 -5
  45. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +8 -9
  46. package/Libraries/Components/Switch/Switch.js +8 -6
  47. package/Libraries/Components/Switch/Switch.windows.js +8 -6
  48. package/Libraries/Components/TextInput/InputAccessoryView.js +1 -1
  49. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +4 -4
  50. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +6 -4
  51. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +2 -1
  52. package/Libraries/Components/TextInput/TextInput.d.ts +27 -4
  53. package/Libraries/Components/TextInput/TextInput.flow.js +36 -19
  54. package/Libraries/Components/TextInput/TextInput.js +37 -13
  55. package/Libraries/Components/TextInput/TextInput.windows.js +47 -16
  56. package/Libraries/Components/TextInput/TextInputState.js +11 -13
  57. package/Libraries/Components/TextInput/TextInputState.windows.js +11 -13
  58. package/Libraries/Components/Touchable/BoundingDimensions.js +11 -3
  59. package/Libraries/Components/Touchable/Position.js +7 -2
  60. package/Libraries/Components/Touchable/Touchable.js +4 -0
  61. package/Libraries/Components/Touchable/Touchable.windows.js +4 -0
  62. package/Libraries/Components/Touchable/TouchableBounce.js +6 -2
  63. package/Libraries/Components/Touchable/TouchableBounce.windows.js +227 -0
  64. package/Libraries/Components/Touchable/TouchableHighlight.js +5 -5
  65. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +5 -5
  66. package/Libraries/Components/Touchable/TouchableNativeFeedback.windows.js +371 -0
  67. package/Libraries/Components/Touchable/TouchableOpacity.js +6 -5
  68. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +11 -5
  69. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +1 -2
  70. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +9 -3
  71. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -1
  72. package/Libraries/Components/View/View.js +4 -4
  73. package/Libraries/Components/View/View.windows.js +12 -5
  74. package/Libraries/Components/View/ViewAccessibility.d.ts +10 -0
  75. package/Libraries/Components/View/ViewAccessibility.windows.js +2 -0
  76. package/Libraries/Components/View/ViewNativeComponent.js +6 -98
  77. package/Libraries/Components/View/ViewPropTypes.d.ts +7 -0
  78. package/Libraries/Components/View/ViewPropTypes.js +0 -3
  79. package/Libraries/Components/View/ViewPropTypes.windows.js +2 -3
  80. package/Libraries/Core/ExceptionsManager.js +50 -29
  81. package/Libraries/Core/ReactNativeVersion.js +3 -3
  82. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +0 -1
  83. package/Libraries/Core/setUpBatchedBridge.js +1 -10
  84. package/Libraries/Core/setUpDeveloperTools.js +1 -5
  85. package/Libraries/Core/setUpErrorHandling.js +20 -18
  86. package/Libraries/Core/setUpReactDevTools.js +107 -8
  87. package/Libraries/Core/setUpSegmentFetcher.js +1 -0
  88. package/Libraries/Core/setUpTimers.js +21 -18
  89. package/Libraries/Debugging/DebuggingOverlay.js +4 -5
  90. package/Libraries/Image/AssetSourceResolver.js +12 -1
  91. package/Libraries/Image/AssetSourceResolver.windows.js +12 -1
  92. package/Libraries/Image/Image.android.js +1 -5
  93. package/Libraries/Image/Image.d.ts +20 -29
  94. package/Libraries/Image/Image.ios.js +0 -2
  95. package/Libraries/Image/Image.windows.js +5 -1
  96. package/Libraries/Image/ImageBackground.js +2 -5
  97. package/Libraries/Image/ImageProps.js +7 -6
  98. package/Libraries/Image/ImageResizeMode.d.ts +8 -1
  99. package/Libraries/Image/ImageResizeMode.js +4 -1
  100. package/Libraries/Image/ImageSource.d.ts +0 -2
  101. package/Libraries/Image/ImageSource.js +0 -2
  102. package/Libraries/Image/ImageTypes.flow.js +11 -9
  103. package/Libraries/Image/ImageUtils.js +6 -3
  104. package/Libraries/Image/ImageViewNativeComponent.js +5 -3
  105. package/Libraries/Inspector/Inspector.js +1 -0
  106. package/Libraries/Inspector/NetworkOverlay.js +4 -0
  107. package/Libraries/Inspector/ReactDevToolsOverlay.js +8 -14
  108. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +3 -5
  109. package/Libraries/Interaction/InteractionManager.js +6 -1
  110. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  111. package/Libraries/Interaction/TouchHistoryMath.js +22 -19
  112. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  113. package/Libraries/Lists/FlatList.d.ts +1 -2
  114. package/Libraries/Lists/FlatList.js +2 -2
  115. package/Libraries/Lists/SectionListModern.js +7 -7
  116. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +2 -2
  117. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +1 -1
  118. package/Libraries/LogBox/Data/LogBoxData.js +3 -3
  119. package/Libraries/LogBox/LogBox.js +18 -5
  120. package/Libraries/LogBox/LogBoxInspectorContainer.js +1 -1
  121. package/Libraries/LogBox/LogBoxNotificationContainer.js +2 -2
  122. package/Libraries/LogBox/UI/AnsiHighlight.js +26 -17
  123. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +6 -1
  124. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.windows.js +6 -1
  125. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +1 -1
  126. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +1 -1
  127. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +1 -1
  128. package/Libraries/LogBox/UI/LogBoxMessage.js +2 -2
  129. package/Libraries/Modal/Modal.d.ts +12 -0
  130. package/Libraries/Modal/Modal.js +31 -4
  131. package/Libraries/Modal/Modal.windows.js +18 -0
  132. package/Libraries/NativeComponent/BaseViewConfig.android.js +72 -1
  133. package/Libraries/NativeComponent/BaseViewConfig.ios.js +2 -1
  134. package/Libraries/NativeComponent/BaseViewConfig.windows.js +3 -11
  135. package/Libraries/NativeComponent/NativeComponentRegistry.js +3 -3
  136. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -1
  137. package/Libraries/Network/FormData.js +11 -3
  138. package/Libraries/Network/XHRInterceptor.js +63 -14
  139. package/Libraries/Network/XMLHttpRequest.js +26 -1
  140. package/Libraries/NewAppScreen/components/HermesBadge.js +1 -1
  141. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +49 -2
  142. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +4 -4
  143. package/Libraries/Pressability/HoverState.js +2 -0
  144. package/Libraries/Pressability/Pressability.js +2 -3
  145. package/Libraries/Pressability/Pressability.windows.js +2 -3
  146. package/Libraries/Pressability/usePressability.js +4 -1
  147. package/Libraries/ReactNative/AppContainer.js +1 -1
  148. package/Libraries/ReactNative/AppRegistry.js +1 -11
  149. package/Libraries/ReactNative/DisplayMode.js +1 -1
  150. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +2 -3
  151. package/Libraries/ReactNative/RendererImplementation.js +18 -17
  152. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +1 -3
  153. package/Libraries/ReactNative/renderApplication.js +9 -8
  154. package/Libraries/ReactNative/requireNativeComponent.js +5 -2
  155. package/Libraries/Renderer/shims/ReactFabric.js +3 -3
  156. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  157. package/Libraries/Renderer/shims/ReactNative.js +3 -3
  158. package/Libraries/Renderer/shims/ReactNativeTypes.js +22 -35
  159. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +5 -6
  160. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  161. package/Libraries/StyleSheet/StyleSheet.js +7 -1
  162. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +13 -2
  163. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -6
  164. package/Libraries/StyleSheet/processBackgroundImage.js +87 -110
  165. package/Libraries/StyleSheet/processTransform.js +3 -34
  166. package/Libraries/Text/Text.js +248 -249
  167. package/Libraries/Text/Text.windows.js +298 -292
  168. package/Libraries/Text/TextNativeComponent.js +0 -1
  169. package/Libraries/Text/TextProps.windows.js +2 -0
  170. package/Libraries/TurboModule/TurboModuleRegistry.js +5 -5
  171. package/Libraries/Types/CoreEventTypes.d.ts +3 -10
  172. package/Libraries/Types/CoreEventTypes.js +4 -6
  173. package/Libraries/Types/CoreEventTypes.windows.js +4 -6
  174. package/Libraries/Utilities/Appearance.js +3 -1
  175. package/Libraries/Utilities/BackHandler.android.js +6 -18
  176. package/Libraries/Utilities/BackHandler.d.ts +0 -4
  177. package/Libraries/Utilities/BackHandler.ios.js +0 -7
  178. package/Libraries/Utilities/BackHandler.windows.js +6 -18
  179. package/Libraries/Utilities/HMRClient.js +3 -4
  180. package/Libraries/Utilities/Platform.flow.js +2 -2
  181. package/Libraries/Utilities/Platform.flow.windows.js +3 -2
  182. package/Libraries/Utilities/__mocks__/BackHandler.js +3 -8
  183. package/Libraries/Utilities/codegenNativeComponent.js +1 -1
  184. package/Libraries/Utilities/useMergeRefs.js +26 -7
  185. package/Libraries/WebSocket/WebSocketEvent.js +4 -1
  186. package/Libraries/WebSocket/WebSocketInterceptor.js +31 -13
  187. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +6 -5
  188. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  189. package/Microsoft.ReactNative/AsynchronousEventBeat.cpp +9 -8
  190. package/Microsoft.ReactNative/AsynchronousEventBeat.h +5 -5
  191. package/Microsoft.ReactNative/FBReactNativeSpec/FBReactNativeSpecJSI.h +5 -0
  192. package/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +2 -2
  193. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.cpp +197 -18
  194. package/Microsoft.ReactNative/Fabric/Composition/CompositionDynamicAutomationProvider.h +19 -1
  195. package/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +13 -0
  196. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +1 -1
  197. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentDescriptor.h +6 -8
  198. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +2 -2
  199. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +3 -2
  200. package/Microsoft.ReactNative/Fabric/Composition/TooltipService.cpp +1 -1
  201. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.cpp +24 -0
  202. package/Microsoft.ReactNative/Fabric/Composition/UiaHelpers.h +5 -0
  203. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +12 -12
  204. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +4 -4
  205. package/Microsoft.ReactNative/Fabric/ImageRequest.cpp +4 -8
  206. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewProps.cpp +16 -15
  207. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.cpp +15 -0
  208. package/Microsoft.ReactNative/Modules/AccessibilityInfoModule.h +9 -0
  209. package/Microsoft.ReactNative/ReactHost/ReactHost.cpp +20 -1
  210. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -6
  211. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  212. package/Microsoft.ReactNative/SynchronousEventBeat.cpp +14 -4
  213. package/Microsoft.ReactNative/SynchronousEventBeat.h +4 -2
  214. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.cpp +78 -0
  215. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.h +51 -0
  216. package/Microsoft.ReactNative.Cxx/ApiLoaders/JSRuntimeApi.inc +48 -0
  217. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.cpp +41 -0
  218. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.h +127 -0
  219. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi.inc +125 -0
  220. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_posix.cpp +16 -0
  221. package/Microsoft.ReactNative.Cxx/ApiLoaders/NodeApi_win.cpp +23 -0
  222. package/Microsoft.ReactNative.Cxx/JSI/decorator.h +834 -0
  223. package/Microsoft.ReactNative.Cxx/JSI/instrumentation.h +117 -0
  224. package/Microsoft.ReactNative.Cxx/JSI/jsi-inl.h +366 -0
  225. package/Microsoft.ReactNative.Cxx/JSI/jsi.cpp +560 -0
  226. package/Microsoft.ReactNative.Cxx/JSI/jsi.h +1611 -0
  227. package/Microsoft.ReactNative.Cxx/JSI/threadsafe.h +79 -0
  228. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +7 -11
  229. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -1
  230. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.cpp +2878 -0
  231. package/Microsoft.ReactNative.Cxx/NodeApiJsiRuntime.h +36 -0
  232. package/Microsoft.ReactNative.Cxx/ReactCommon/CallInvoker.h +64 -0
  233. package/Microsoft.ReactNative.Cxx/ReactCommon/SchedulerPriority.h +22 -0
  234. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModule.cpp +63 -63
  235. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModule.h +165 -0
  236. package/Microsoft.ReactNative.Cxx/ReactCommon/TurboModuleUtils.cpp +105 -0
  237. package/{ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core → Microsoft.ReactNative.Cxx}/ReactCommon/TurboModuleUtils.h +57 -58
  238. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/AString.h +42 -0
  239. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Array.h +151 -0
  240. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Base.h +177 -154
  241. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bool.h +25 -0
  242. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Bridging.h +21 -0
  243. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/CallbackWrapper.h +67 -0
  244. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Class.h +90 -0
  245. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Convert.h +170 -172
  246. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Error.h +51 -0
  247. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/EventEmitter.h +134 -136
  248. package/{ReactCommon/TEMP_UntilReactCommonUpdate → Microsoft.ReactNative.Cxx/ReactCommon}/react/bridging/Function.h +283 -283
  249. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.cpp +63 -0
  250. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/LongLivedObject.h +61 -0
  251. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Object.h +93 -0
  252. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Promise.h +104 -0
  253. package/Microsoft.ReactNative.Cxx/ReactCommon/react/bridging/Value.h +107 -0
  254. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/flags.h +22 -0
  255. package/Microsoft.ReactNative.Cxx/ReactCommon/react/debug/react_native_assert.h +72 -0
  256. package/Microsoft.ReactNative.Cxx/node-api/js_native_api.h +553 -0
  257. package/Microsoft.ReactNative.Cxx/node-api/js_native_api_types.h +167 -0
  258. package/Microsoft.ReactNative.Cxx/node-api/js_runtime_api.h +186 -0
  259. package/Microsoft.ReactNative.Cxx/stubs/glog/logging.h +82 -0
  260. package/PropertySheets/Bundle.Common.targets +1 -1
  261. package/PropertySheets/Bundle.props +3 -0
  262. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  263. package/PropertySheets/ManagedCodeGen/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  264. package/PropertySheets/OutputMSBuildProperties.targets +3 -1
  265. package/PropertySheets/React.Cpp.props +6 -0
  266. package/ReactCommon/ReactCommon.vcxproj +5 -0
  267. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +2 -3
  268. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +61 -0
  269. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +26 -23
  270. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp +150 -0
  271. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/AccessibilityPrimitives.h +252 -0
  272. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/view/accessibilityPropsConversions.h +795 -0
  273. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/runtimescheduler/SchedulerPriorityUtils.h +59 -0
  274. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +227 -74
  275. package/Scripts/Microsoft.ReactNative.Managed.CodeGen.targets +1 -1
  276. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +97 -62
  277. package/Shared/InspectorPackagerConnection.cpp +3 -6
  278. package/Shared/InspectorPackagerConnection.h +2 -2
  279. package/Shared/InstanceManager.h +1 -1
  280. package/Shared/OInstance.h +1 -1
  281. package/Shared/Shared.vcxitems +17 -2
  282. package/Shared/Shared.vcxitems.filters +3 -1
  283. package/Shared/TurboModuleManager.cpp +29 -4
  284. package/codegen/NativeAccessibilityInfoSpec.g.h +27 -9
  285. package/codegen/NativeAccessibilityManagerSpec.g.h +19 -13
  286. package/codegen/NativeActionSheetManagerSpec.g.h +4 -0
  287. package/codegen/NativeExceptionsManagerSpec.g.h +1 -7
  288. package/codegen/NativeIntersectionObserverSpec.g.h +2 -0
  289. package/codegen/NativePerformanceSpec.g.h +127 -3
  290. package/codegen/NativeReactDevToolsRuntimeSettingsModuleSpec.g.h +67 -0
  291. package/codegen/NativeReactDevToolsSettingsManagerSpec.g.h +41 -0
  292. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +125 -137
  293. package/codegen/react/components/rnwcore/ComponentDescriptors.h +0 -1
  294. package/codegen/react/components/rnwcore/Props.cpp +1 -0
  295. package/codegen/react/components/rnwcore/Props.h +1 -0
  296. package/codegen/react/components/rnwcore/ShadowNodes.cpp +0 -1
  297. package/codegen/react/components/rnwcore/ShadowNodes.h +0 -11
  298. package/codegen/react/components/rnwcore/States.h +0 -12
  299. package/codegen/rnwcoreJSI-generated.cpp +219 -186
  300. package/codegen/rnwcoreJSI.h +942 -511
  301. package/index.js +10 -3
  302. package/index.windows.js +10 -3
  303. package/jest/setup.js +36 -1
  304. package/just-task.js +15 -0
  305. package/package.json +22 -22
  306. package/src/private/animated/NativeAnimatedHelper.js +18 -16
  307. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  308. package/src/private/components/HScrollViewNativeComponents.js +1 -27
  309. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +11 -8
  310. package/src/private/components/VScrollViewNativeComponents.js +2 -25
  311. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  312. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  313. package/src/private/debugging/ReactDevToolsSettingsManager.windows.js +20 -0
  314. package/src/private/{fusebox → debugging}/setUpFuseboxReactDevToolsDispatcher.js +6 -0
  315. package/src/private/devmenu/DevMenu.d.ts +20 -0
  316. package/src/private/devmenu/DevMenu.js +31 -0
  317. package/src/private/featureflags/ReactNativeFeatureFlags.js +95 -86
  318. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +8 -2
  319. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +17 -19
  320. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  321. package/src/private/setup/setUpDOM.js +14 -6
  322. package/src/private/setup/setUpMutationObserver.js +5 -0
  323. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +1 -0
  324. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +8 -0
  325. package/src/private/specs/modules/NativeAccessibilityInfo.js +9 -0
  326. package/src/private/specs/modules/NativeAccessibilityManager.js +4 -0
  327. package/src/private/specs/modules/NativeActionSheetManager.js +2 -0
  328. package/src/private/specs/modules/NativeAppearance.js +4 -10
  329. package/src/private/specs/modules/NativeExceptionsManager.js +0 -12
  330. package/src/private/specs/modules/{NativeDevToolsSettingsManager.js → NativeReactDevToolsSettingsManager.js} +3 -5
  331. package/src/private/webapis/dom/geometry/DOMRect.js +2 -2
  332. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +2 -2
  333. package/src/private/webapis/dom/nodes/ReactNativeElement.js +2 -3
  334. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +102 -11
  335. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +26 -0
  336. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +1 -0
  337. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +1 -0
  338. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +9 -0
  339. package/src/private/webapis/performance/EventTiming.js +13 -8
  340. package/src/private/webapis/performance/Performance.js +66 -73
  341. package/src/private/webapis/performance/PerformanceEntry.js +2 -5
  342. package/src/private/webapis/performance/PerformanceObserver.js +65 -164
  343. package/src/private/webapis/performance/RawPerformanceEntry.js +1 -1
  344. package/src/private/webapis/performance/UserTiming.js +11 -7
  345. package/src/private/webapis/performance/Utilities.js +18 -0
  346. package/src/private/webapis/performance/specs/NativePerformance.js +71 -2
  347. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  348. package/templates/cpp-lib/template.config.js +13 -7
  349. package/templates/templateUtils.js +10 -0
  350. package/types/index.d.ts +1 -1
  351. package/types/public/ReactNativeTypes.d.ts +4 -8
  352. package/Libraries/DevToolsSettings/DevToolsSettingsManager.android.js +0 -35
  353. package/Libraries/DevToolsSettings/DevToolsSettingsManager.d.ts +0 -20
  354. package/Libraries/DevToolsSettings/DevToolsSettingsManager.ios.js +0 -49
  355. package/Libraries/DevToolsSettings/DevToolsSettingsManager.windows.js +0 -35
  356. package/Libraries/DevToolsSettings/NativeDevToolsSettingsManager.js +0 -13
  357. package/Libraries/ReactNative/ReactFabricInternals.js +0 -17
  358. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +0 -101
  359. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +0 -569
  360. package/codegen/NativeDevToolsSettingsManagerSpec.g.h +0 -53
  361. package/codegen/NativePerformanceObserverSpec.g.h +0 -131
  362. package/src/private/components/useSyncOnScroll.js +0 -48
  363. package/src/private/webapis/performance/specs/NativePerformanceObserver.js +0 -61
  364. package/src/private/webapis/performance/specs/__mocks__/NativePerformance.js +0 -67
  365. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceObserver.js +0 -127
  366. package/types/experimental.d.ts +0 -59
  367. /package/src/private/{fusebox → debugging}/FuseboxSessionObserver.js +0 -0
@@ -0,0 +1,61 @@
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
+ #pragma once
9
+
10
+ #include <jsi/jsi.h>
11
+ #include <memory>
12
+ #include <mutex>
13
+ #include <unordered_set>
14
+
15
+ namespace facebook::react {
16
+
17
+ /**
18
+ * A simple wrapper class that can be registered to a collection that keep it
19
+ * alive for extended period of time. This object can be removed from the
20
+ * collection when needed.
21
+ *
22
+ * The subclass of this class must be created using std::make_shared<T>().
23
+ * After creation, add it to the `LongLivedObjectCollection`. When done with the
24
+ * object, call `allowRelease()` to reclaim its memory.
25
+ *
26
+ * When using LongLivedObject to keep JS values alive, ensure you only hold weak
27
+ * references to the object outside the JS thread to avoid accessing deallocated
28
+ * values when the JS VM is shutdown.
29
+ */
30
+ class LongLivedObject {
31
+ public:
32
+ virtual void allowRelease();
33
+
34
+ protected:
35
+ explicit LongLivedObject(jsi::Runtime& runtime) : runtime_(runtime) {}
36
+ virtual ~LongLivedObject() = default;
37
+ jsi::Runtime& runtime_;
38
+ };
39
+
40
+ /**
41
+ * A singleton, thread-safe, write-only collection for the `LongLivedObject`s.
42
+ */
43
+ class LongLivedObjectCollection {
44
+ public:
45
+ static LongLivedObjectCollection& get(jsi::Runtime& runtime);
46
+
47
+ LongLivedObjectCollection() = default;
48
+ LongLivedObjectCollection(const LongLivedObjectCollection&) = delete;
49
+ void operator=(const LongLivedObjectCollection&) = delete;
50
+
51
+ void add(std::shared_ptr<LongLivedObject> o);
52
+ void remove(const LongLivedObject* o);
53
+ void clear();
54
+ size_t size() const;
55
+
56
+ private:
57
+ std::unordered_set<std::shared_ptr<LongLivedObject>> collection_;
58
+ mutable std::mutex collectionMutex_;
59
+ };
60
+
61
+ } // namespace facebook::react
@@ -0,0 +1,93 @@
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
+ #pragma once
9
+
10
+ #include <react/bridging/AString.h>
11
+ #include <react/bridging/Base.h>
12
+
13
+ #include <map>
14
+ #include <unordered_map>
15
+
16
+ namespace facebook::react {
17
+
18
+ template <>
19
+ struct Bridging<jsi::WeakObject> {
20
+ static jsi::WeakObject fromJs(jsi::Runtime& rt, const jsi::Object& value) {
21
+ return jsi::WeakObject(rt, value);
22
+ }
23
+
24
+ static jsi::Value toJs(jsi::Runtime& rt, jsi::WeakObject& value) {
25
+ return value.lock(rt);
26
+ }
27
+ };
28
+
29
+ template <typename T>
30
+ struct Bridging<
31
+ std::shared_ptr<T>,
32
+ std::enable_if_t<std::is_base_of_v<jsi::HostObject, T>>> {
33
+ static std::shared_ptr<T> fromJs(jsi::Runtime& rt, const jsi::Object& value) {
34
+ return value.getHostObject<T>(rt);
35
+ }
36
+
37
+ static jsi::Object toJs(jsi::Runtime& rt, std::shared_ptr<T> value) {
38
+ return jsi::Object::createFromHostObject(rt, std::move(value));
39
+ }
40
+ };
41
+
42
+ namespace map_detail {
43
+
44
+ template <typename T>
45
+ struct Bridging {
46
+ static T fromJs(
47
+ jsi::Runtime& rt,
48
+ const jsi::Object& value,
49
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
50
+ T result;
51
+ auto propertyNames = value.getPropertyNames(rt);
52
+ auto length = propertyNames.length(rt);
53
+
54
+ for (size_t i = 0; i < length; i++) {
55
+ auto propertyName = propertyNames.getValueAtIndex(rt, i);
56
+
57
+ result.emplace(
58
+ bridging::fromJs<std::string>(rt, propertyName, jsInvoker),
59
+ bridging::fromJs<typename T::mapped_type>(
60
+ rt, value.getProperty(rt, propertyName.asString(rt)), jsInvoker));
61
+ }
62
+
63
+ return result;
64
+ }
65
+
66
+ static jsi::Object toJs(
67
+ jsi::Runtime& rt,
68
+ const T& map,
69
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
70
+ auto resultObject = jsi::Object(rt);
71
+
72
+ for (const auto& [key, value] : map) {
73
+ resultObject.setProperty(
74
+ rt,
75
+ jsi::PropNameID::forUtf8(rt, key),
76
+ bridging::toJs(rt, value, jsInvoker));
77
+ }
78
+
79
+ return resultObject;
80
+ }
81
+ };
82
+
83
+ } // namespace map_detail
84
+
85
+ template <typename... Args>
86
+ struct Bridging<std::map<std::string, Args...>>
87
+ : map_detail::Bridging<std::map<std::string, Args...>> {};
88
+
89
+ template <typename... Args>
90
+ struct Bridging<std::unordered_map<std::string, Args...>>
91
+ : map_detail::Bridging<std::unordered_map<std::string, Args...>> {};
92
+
93
+ } // namespace facebook::react
@@ -0,0 +1,104 @@
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
+ #pragma once
9
+
10
+ #include <react/bridging/Error.h>
11
+ #include <react/bridging/Function.h>
12
+ #include <react/bridging/LongLivedObject.h>
13
+
14
+ #include <mutex>
15
+ #include <optional>
16
+
17
+ namespace facebook::react {
18
+
19
+ template <typename T>
20
+ class AsyncPromise {
21
+ public:
22
+ AsyncPromise(jsi::Runtime& rt, const std::shared_ptr<CallInvoker>& jsInvoker)
23
+ : state_(std::make_shared<SharedState>()) {
24
+ auto constructor = rt.global().getPropertyAsFunction(rt, "Promise");
25
+
26
+ auto promise = constructor.callAsConstructor(
27
+ rt,
28
+ bridging::toJs(
29
+ rt,
30
+ // Safe to capture this since this is called synchronously.
31
+ [this](AsyncCallback<T> resolve, AsyncCallback<Error> reject) {
32
+ state_->resolve = std::move(resolve);
33
+ state_->reject = std::move(reject);
34
+ },
35
+ jsInvoker));
36
+
37
+ auto promiseHolder =
38
+ std::make_shared<PromiseHolder>(rt, promise.asObject(rt));
39
+ LongLivedObjectCollection::get(rt).add(promiseHolder);
40
+
41
+ // The shared state can retain the promise holder weakly now.
42
+ state_->promiseHolder = promiseHolder;
43
+ }
44
+
45
+ void resolve(T value) {
46
+ std::lock_guard<std::mutex> lock(state_->mutex);
47
+
48
+ if (state_->resolve) {
49
+ state_->resolve->call(std::move(value));
50
+ state_->resolve.reset();
51
+ state_->reject.reset();
52
+ }
53
+ }
54
+
55
+ void reject(Error error) {
56
+ std::lock_guard<std::mutex> lock(state_->mutex);
57
+
58
+ if (state_->reject) {
59
+ state_->reject->call(std::move(error));
60
+ state_->reject.reset();
61
+ state_->resolve.reset();
62
+ }
63
+ }
64
+
65
+ jsi::Object get(jsi::Runtime& rt) const {
66
+ if (auto holder = state_->promiseHolder.lock()) {
67
+ return jsi::Value(rt, holder->promise).asObject(rt);
68
+ } else {
69
+ throw jsi::JSError(rt, "Failed to get invalidated promise");
70
+ }
71
+ }
72
+
73
+ private:
74
+ struct PromiseHolder : LongLivedObject {
75
+ PromiseHolder(jsi::Runtime& runtime, jsi::Object p)
76
+ : LongLivedObject(runtime), promise(std::move(p)) {}
77
+
78
+ jsi::Object promise;
79
+ };
80
+
81
+ struct SharedState {
82
+ ~SharedState() {
83
+ if (auto holder = promiseHolder.lock()) {
84
+ holder->allowRelease();
85
+ }
86
+ }
87
+
88
+ std::mutex mutex;
89
+ std::weak_ptr<PromiseHolder> promiseHolder;
90
+ std::optional<AsyncCallback<T>> resolve;
91
+ std::optional<AsyncCallback<Error>> reject;
92
+ };
93
+
94
+ std::shared_ptr<SharedState> state_;
95
+ };
96
+
97
+ template <typename T>
98
+ struct Bridging<AsyncPromise<T>> {
99
+ static jsi::Object toJs(jsi::Runtime& rt, const AsyncPromise<T>& promise) {
100
+ return promise.get(rt);
101
+ }
102
+ };
103
+
104
+ } // namespace facebook::react
@@ -0,0 +1,107 @@
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
+ #pragma once
9
+
10
+ #include <react/bridging/Base.h>
11
+
12
+ #include <memory>
13
+ #include <optional>
14
+
15
+ namespace facebook::react {
16
+
17
+ template <>
18
+ struct Bridging<std::nullptr_t> {
19
+ static std::nullptr_t fromJs(jsi::Runtime& rt, const jsi::Value& value) {
20
+ if (value.isNull() || value.isUndefined()) {
21
+ return nullptr;
22
+ } else {
23
+ throw jsi::JSError(rt, "Cannot convert value to nullptr");
24
+ }
25
+ }
26
+
27
+ static std::nullptr_t toJs(jsi::Runtime&, std::nullptr_t) {
28
+ return nullptr;
29
+ }
30
+ };
31
+
32
+ template <typename T>
33
+ struct Bridging<std::optional<T>> {
34
+ static std::optional<T> fromJs(
35
+ jsi::Runtime& rt,
36
+ const jsi::Value& value,
37
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
38
+ if (value.isNull() || value.isUndefined()) {
39
+ return {};
40
+ }
41
+ return bridging::fromJs<T>(rt, value, jsInvoker);
42
+ }
43
+
44
+ template <typename U>
45
+ static std::optional<T> fromJs(
46
+ jsi::Runtime& rt,
47
+ const std::optional<U>& value,
48
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
49
+ if (value) {
50
+ return bridging::fromJs<T>(rt, *value, jsInvoker);
51
+ }
52
+ return {};
53
+ }
54
+
55
+ static jsi::Value toJs(
56
+ jsi::Runtime& rt,
57
+ const std::optional<T>& value,
58
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
59
+ if (value) {
60
+ return bridging::toJs(rt, *value, jsInvoker);
61
+ }
62
+ return jsi::Value::null();
63
+ }
64
+ };
65
+
66
+ template <typename T>
67
+ struct Bridging<
68
+ std::shared_ptr<T>,
69
+ std::enable_if_t<!std::is_base_of_v<jsi::HostObject, T>>> {
70
+ static jsi::Value toJs(
71
+ jsi::Runtime& rt,
72
+ const std::shared_ptr<T>& ptr,
73
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
74
+ if (ptr) {
75
+ return bridging::toJs(rt, *ptr, jsInvoker);
76
+ }
77
+ return jsi::Value::null();
78
+ }
79
+ };
80
+
81
+ template <typename T>
82
+ struct Bridging<std::unique_ptr<T>> {
83
+ static jsi::Value toJs(
84
+ jsi::Runtime& rt,
85
+ const std::unique_ptr<T>& ptr,
86
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
87
+ if (ptr) {
88
+ return bridging::toJs(rt, *ptr, jsInvoker);
89
+ }
90
+ return jsi::Value::null();
91
+ }
92
+ };
93
+
94
+ template <typename T>
95
+ struct Bridging<std::weak_ptr<T>> {
96
+ static jsi::Value toJs(
97
+ jsi::Runtime& rt,
98
+ const std::weak_ptr<T>& weakPtr,
99
+ const std::shared_ptr<CallInvoker>& jsInvoker) {
100
+ if (auto ptr = weakPtr.lock()) {
101
+ return bridging::toJs(rt, *ptr, jsInvoker);
102
+ }
103
+ return jsi::Value::null();
104
+ }
105
+ };
106
+
107
+ } // namespace facebook::react
@@ -0,0 +1,22 @@
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
+ #pragma once
9
+
10
+ //
11
+ // Preprocessor flags which control whether code meant for debugging the
12
+ // internals of React Native is included in the build. E.g. debug assertions.
13
+ //
14
+ // This flag is normally derived from NDEBUG, but may be set explicitly by
15
+ // defining `REACT_NATIVE_DEBUG` or `REACT_NATIVE_PRODUCTION`.
16
+ #if !(defined(REACT_NATIVE_DEBUG) || defined(REACT_NATIVE_PRODUCTION))
17
+ #ifdef NDEBUG
18
+ #define REACT_NATIVE_PRODUCTION
19
+ #else
20
+ #define REACT_NATIVE_DEBUG
21
+ #endif
22
+ #endif
@@ -0,0 +1,72 @@
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
+ // No header guards since it is legitimately possible to include this file more
9
+ // than once with and without REACT_NATIVE_DEBUG.
10
+
11
+ // react_native_assert allows us to opt-in to specific asserts on Android and
12
+ // test before moving on. When all issues have been found, maybe we can use
13
+ // `UNDEBUG` flag to disable NDEBUG in debug builds on Android.
14
+
15
+ // Asserting is appropriate for conditions that:
16
+ // 1. May or may not be recoverable, and
17
+ // 2. imply there is a bug in React Native when violated.
18
+ // For recoverable conditions that can be violated by user mistake (e.g. JS
19
+ // code passes an unexpected prop value), consider react_native_expect instead.
20
+
21
+ #pragma once
22
+
23
+ #include "flags.h"
24
+
25
+ #undef react_native_assert
26
+
27
+ #ifndef REACT_NATIVE_DEBUG
28
+
29
+ #define react_native_assert(e) ((void)0)
30
+
31
+ #else // REACT_NATIVE_DEBUG
32
+
33
+ #ifdef __ANDROID__
34
+
35
+ #include <android/log.h>
36
+
37
+ #ifdef __cplusplus
38
+ extern "C" {
39
+ #endif // __cplusplus
40
+ void react_native_assert_fail(
41
+ const char* func,
42
+ const char* file,
43
+ int line,
44
+ const char* expr);
45
+ #ifdef __cplusplus
46
+ }
47
+ #endif // __cpusplus
48
+
49
+ #define react_native_assert(e) \
50
+ ((e) ? (void)0 : react_native_assert_fail(__func__, __FILE__, __LINE__, #e))
51
+
52
+ #else // __ANDROID__
53
+
54
+ #include <glog/logging.h>
55
+ #include <cassert>
56
+
57
+ // For all platforms, but iOS+Xcode especially: flush logs because some might be
58
+ // lost on iOS if an assert is hit right after this. If you are trying to debug
59
+ // something actively and have added lots of LOG statements to track down an
60
+ // issue, there is race between flushing the final logs and stopping execution
61
+ // when the assert hits. Thus, if we know an assert will fail, we force flushing
62
+ // to happen right before the assert.
63
+ #define react_native_assert(cond) \
64
+ if (!(cond)) { \
65
+ LOG(ERROR) << "react_native_assert failure: " << #cond; \
66
+ google::FlushLogFiles(google::GLOG_INFO); \
67
+ assert(cond); \
68
+ }
69
+
70
+ #endif // platforms besides __ANDROID__
71
+
72
+ #endif // REACT_NATIVE_DEBUG