react-native 0.83.0-rc.0 → 0.84.0-nightly-20251106-de5141a3d

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 (157) hide show
  1. package/Libraries/AppDelegate/RCTReactNativeFactory.h +3 -0
  2. package/Libraries/AppDelegate/RCTReactNativeFactory.mm +12 -0
  3. package/Libraries/AppDelegate/RCTRootViewFactory.h +10 -4
  4. package/Libraries/AppDelegate/RCTRootViewFactory.mm +21 -5
  5. package/Libraries/Blob/RCTBlobManager.mm +4 -1
  6. package/Libraries/Blob/RCTFileReaderModule.mm +4 -1
  7. package/Libraries/Core/ReactNativeVersion.js +2 -2
  8. package/Libraries/Image/RCTBundleAssetImageLoader.mm +4 -1
  9. package/Libraries/Image/RCTGIFImageDecoder.mm +4 -1
  10. package/Libraries/Image/RCTImageEditingManager.mm +4 -1
  11. package/Libraries/Image/RCTImageLoader.mm +4 -1
  12. package/Libraries/Image/RCTImageStoreManager.mm +4 -1
  13. package/Libraries/Image/RCTImageViewManager.mm +4 -1
  14. package/Libraries/Image/RCTLocalAssetImageLoader.mm +4 -1
  15. package/Libraries/LinkingIOS/RCTLinkingManager.mm +4 -1
  16. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +4 -1
  17. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +4 -1
  18. package/Libraries/Network/RCTDataRequestHandler.mm +4 -1
  19. package/Libraries/Network/RCTFileRequestHandler.mm +4 -1
  20. package/Libraries/Network/RCTHTTPRequestHandler.mm +4 -1
  21. package/Libraries/Network/RCTNetworking.mm +4 -1
  22. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +4 -1
  23. package/Libraries/Settings/RCTSettingsManager.mm +4 -1
  24. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +2 -2
  25. package/Libraries/Text/BaseText/RCTBaseTextViewManager.mm +4 -1
  26. package/Libraries/Text/RawText/RCTRawTextViewManager.mm +4 -1
  27. package/Libraries/Text/Text/RCTTextViewManager.mm +4 -1
  28. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.mm +4 -1
  29. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +3 -0
  30. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +4 -1
  31. package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.mm +4 -1
  32. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm +4 -1
  33. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.mm +4 -1
  34. package/Libraries/Vibration/RCTVibration.mm +4 -1
  35. package/React/Base/RCTBundleManager.h +59 -7
  36. package/React/Base/RCTBundleManager.m +98 -0
  37. package/React/Base/RCTBundleURLProvider.h +24 -0
  38. package/React/Base/RCTBundleURLProvider.mm +49 -4
  39. package/React/Base/RCTVersion.m +2 -2
  40. package/React/CoreModules/RCTAccessibilityManager.mm +4 -1
  41. package/React/CoreModules/RCTActionSheetManager.mm +4 -1
  42. package/React/CoreModules/RCTAlertManager.mm +4 -1
  43. package/React/CoreModules/RCTAppState.mm +4 -1
  44. package/React/CoreModules/RCTAppearance.mm +4 -1
  45. package/React/CoreModules/RCTClipboard.mm +4 -1
  46. package/React/CoreModules/RCTDevLoadingView.mm +4 -1
  47. package/React/CoreModules/RCTDevMenu.mm +4 -1
  48. package/React/CoreModules/RCTDevSettings.mm +4 -1
  49. package/React/CoreModules/RCTDevToolsRuntimeSettingsModule.mm +5 -1
  50. package/React/CoreModules/RCTDeviceInfo.mm +4 -1
  51. package/React/CoreModules/RCTEventDispatcher.mm +4 -1
  52. package/React/CoreModules/RCTExceptionsManager.mm +4 -1
  53. package/React/CoreModules/RCTI18nManager.mm +4 -1
  54. package/React/CoreModules/RCTKeyboardObserver.mm +4 -1
  55. package/React/CoreModules/RCTLogBox.mm +4 -1
  56. package/React/CoreModules/RCTPerfMonitor.mm +4 -1
  57. package/React/CoreModules/RCTPlatform.mm +7 -3
  58. package/React/CoreModules/RCTRedBox.mm +4 -1
  59. package/React/CoreModules/RCTSourceCode.mm +4 -1
  60. package/React/CoreModules/RCTStatusBarManager.mm +4 -1
  61. package/React/CoreModules/RCTTiming.mm +4 -1
  62. package/React/CoreModules/RCTWebSocketModule.mm +4 -1
  63. package/React/CoreModules/React-CoreModules.podspec +1 -0
  64. package/React/CxxBridge/RCTCxxBridge.mm +1 -2
  65. package/React/CxxModule/RCTCxxUtils.mm +1 -11
  66. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +135 -143
  67. package/React/Fabric/Surface/RCTFabricSurface.mm +1 -1
  68. package/React/Modules/RCTUIManager.mm +4 -1
  69. package/React/Runtime/React-RCTRuntime.podspec +1 -0
  70. package/React/Views/RCTActivityIndicatorViewManager.m +4 -1
  71. package/React/Views/RCTDebuggingOverlayManager.m +4 -1
  72. package/React/Views/RCTModalHostViewManager.m +4 -1
  73. package/React/Views/RCTModalManager.m +4 -1
  74. package/React/Views/RCTSwitchManager.m +4 -1
  75. package/React/Views/RCTViewManager.m +4 -1
  76. package/React/Views/RefreshControl/RCTRefreshControlManager.m +4 -1
  77. package/React/Views/SafeAreaView/RCTSafeAreaViewManager.m +4 -1
  78. package/React/Views/ScrollView/RCTScrollContentViewManager.m +4 -1
  79. package/React/Views/ScrollView/RCTScrollViewManager.m +4 -1
  80. package/ReactAndroid/gradle.properties +1 -1
  81. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.kt +7 -7
  82. package/ReactAndroid/src/main/java/com/facebook/react/ViewManagerOnDemandReactPackage.kt +53 -4
  83. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/CxxInspectorPackagerConnection.kt +99 -9
  84. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/inspector/InspectorNetworkHelper.kt +1 -1
  85. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayManager.kt +22 -1
  86. package/ReactAndroid/src/main/java/com/facebook/react/devsupport/perfmonitor/PerfMonitorOverlayView.kt +4 -3
  87. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +8 -14
  88. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -21
  89. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -5
  90. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -5
  91. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -23
  92. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -5
  93. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +2 -2
  94. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +1 -2
  95. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAxOrderHelper.kt +47 -0
  96. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/FabricEventDispatcher.kt +3 -36
  97. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +5 -4
  98. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +27 -3
  99. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +11 -2
  100. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.kt +11 -1
  101. package/ReactAndroid/src/main/jni/react/devsupport/JCxxInspectorPackagerConnectionWebSocket.cpp +29 -2
  102. package/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp +36 -26
  103. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -29
  104. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -7
  105. package/ReactAndroid/src/main/jni/react/jni/JSLoader.cpp +1 -1
  106. package/ReactAndroid/src/main/jni/react/jni/JSLoader.h +2 -1
  107. package/ReactAndroid/src/main/res/devsupport/drawable/ic_perf_issue.xml +10 -0
  108. package/ReactCommon/cxxreact/JSBigString.h +14 -5
  109. package/ReactCommon/cxxreact/JSIndexedRAMBundle.cpp +4 -5
  110. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -0
  111. package/ReactCommon/cxxreact/ReactNativeVersion.h +3 -3
  112. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -0
  113. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.cpp +2 -3
  114. package/ReactCommon/jsiexecutor/jsireact/JSIExecutor.h +2 -2
  115. package/ReactCommon/jsinspector-modern/PerfMonitorV2.cpp +9 -1
  116. package/ReactCommon/jsinspector-modern/PerfMonitorV2.h +4 -1
  117. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +1 -7
  118. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +3 -55
  119. package/ReactCommon/jsinspector-modern/tests/TracingTest.h +82 -0
  120. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.cpp +99 -0
  121. package/ReactCommon/jsinspector-modern/tracing/PerformanceTracer.h +47 -1
  122. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +4 -0
  123. package/ReactCommon/jsitooling/React-jsitooling.podspec +1 -0
  124. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -9
  125. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +7 -12
  126. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +85 -103
  127. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -6
  128. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -9
  129. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -19
  130. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -3
  131. package/ReactCommon/react/nativemodule/core/platform/ios/ReactCommon/RCTTurboModuleManager.mm +4 -27
  132. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +6 -11
  133. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +3 -5
  134. package/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm +4 -1
  135. package/ReactCommon/react/performance/cdpmetrics/CdpPerfIssuesReporter.cpp +4 -2
  136. package/ReactCommon/react/renderer/css/CSSSyntaxParser.h +7 -0
  137. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +0 -20
  138. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.h +3 -3
  139. package/ReactCommon/react/renderer/scheduler/SurfaceManager.cpp +2 -3
  140. package/ReactCommon/react/runtime/ReactInstance.cpp +4 -4
  141. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h +3 -2
  142. package/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm +10 -6
  143. package/ReactCommon/react/utils/React-utils.podspec +3 -1
  144. package/ReactCommon/yoga/yoga/style/StyleLength.h +7 -0
  145. package/ReactCommon/yoga/yoga/style/StyleSizeLength.h +7 -0
  146. package/package.json +10 -9
  147. package/sdks/hermes-engine/version.properties +1 -1
  148. package/src/private/components/virtualview/VirtualView.js +16 -9
  149. package/src/private/components/virtualview/logger/VirtualViewLogger.js +21 -0
  150. package/src/private/components/virtualview/logger/VirtualViewLoggerTypes.js +24 -0
  151. package/src/private/featureflags/ReactNativeFeatureFlags.js +7 -12
  152. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -3
  153. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +48 -0
  154. package/types_generated/src/private/components/virtualview/VirtualView.d.ts +3 -1
  155. package/React/CxxModule/RCTCxxModule.h +0 -29
  156. package/React/CxxModule/RCTCxxModule.mm +0 -87
  157. package/sdks/.hermesversion +0 -1
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<13ed11b5c260fae79048ea80745d22fe>>
7
+ * @generated SignedSource<<0527dbb4a838be34b80d76b11d18cea0>>
8
8
  */
9
9
 
10
10
  /**
@@ -87,6 +87,12 @@ class ReactNativeFeatureFlagsJavaProvider
87
87
  return method(javaProvider_);
88
88
  }
89
89
 
90
+ bool disableSubviewClippingAndroid() override {
91
+ static const auto method =
92
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("disableSubviewClippingAndroid");
93
+ return method(javaProvider_);
94
+ }
95
+
90
96
  bool disableTextLayoutManagerCacheAndroid() override {
91
97
  static const auto method =
92
98
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("disableTextLayoutManagerCacheAndroid");
@@ -429,12 +435,6 @@ class ReactNativeFeatureFlagsJavaProvider
429
435
  return method(javaProvider_);
430
436
  }
431
437
 
432
- bool sweepActiveTouchOnChildNativeGesturesAndroid() override {
433
- static const auto method =
434
- getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("sweepActiveTouchOnChildNativeGesturesAndroid");
435
- return method(javaProvider_);
436
- }
437
-
438
438
  bool traceTurboModulePromiseRejectionsOnAndroid() override {
439
439
  static const auto method =
440
440
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("traceTurboModulePromiseRejectionsOnAndroid");
@@ -477,12 +477,6 @@ class ReactNativeFeatureFlagsJavaProvider
477
477
  return method(javaProvider_);
478
478
  }
479
479
 
480
- bool useOptimizedEventBatchingOnAndroid() override {
481
- static const auto method =
482
- getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useOptimizedEventBatchingOnAndroid");
483
- return method(javaProvider_);
484
- }
485
-
486
480
  bool useRawPropsJsiValue() override {
487
481
  static const auto method =
488
482
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("useRawPropsJsiValue");
@@ -581,6 +575,11 @@ bool JReactNativeFeatureFlagsCxxInterop::disableOldAndroidAttachmentMetricsWorka
581
575
  return ReactNativeFeatureFlags::disableOldAndroidAttachmentMetricsWorkarounds();
582
576
  }
583
577
 
578
+ bool JReactNativeFeatureFlagsCxxInterop::disableSubviewClippingAndroid(
579
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
580
+ return ReactNativeFeatureFlags::disableSubviewClippingAndroid();
581
+ }
582
+
584
583
  bool JReactNativeFeatureFlagsCxxInterop::disableTextLayoutManagerCacheAndroid(
585
584
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
586
585
  return ReactNativeFeatureFlags::disableTextLayoutManagerCacheAndroid();
@@ -866,11 +865,6 @@ bool JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPaus
866
865
  return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
867
866
  }
868
867
 
869
- bool JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid(
870
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
871
- return ReactNativeFeatureFlags::sweepActiveTouchOnChildNativeGesturesAndroid();
872
- }
873
-
874
868
  bool JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid(
875
869
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
876
870
  return ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid();
@@ -906,11 +900,6 @@ bool JReactNativeFeatureFlagsCxxInterop::useNativeViewConfigsInBridgelessMode(
906
900
  return ReactNativeFeatureFlags::useNativeViewConfigsInBridgelessMode();
907
901
  }
908
902
 
909
- bool JReactNativeFeatureFlagsCxxInterop::useOptimizedEventBatchingOnAndroid(
910
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
911
- return ReactNativeFeatureFlags::useOptimizedEventBatchingOnAndroid();
912
- }
913
-
914
903
  bool JReactNativeFeatureFlagsCxxInterop::useRawPropsJsiValue(
915
904
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
916
905
  return ReactNativeFeatureFlags::useRawPropsJsiValue();
@@ -1011,6 +1000,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1011
1000
  makeNativeMethod(
1012
1001
  "disableOldAndroidAttachmentMetricsWorkarounds",
1013
1002
  JReactNativeFeatureFlagsCxxInterop::disableOldAndroidAttachmentMetricsWorkarounds),
1003
+ makeNativeMethod(
1004
+ "disableSubviewClippingAndroid",
1005
+ JReactNativeFeatureFlagsCxxInterop::disableSubviewClippingAndroid),
1014
1006
  makeNativeMethod(
1015
1007
  "disableTextLayoutManagerCacheAndroid",
1016
1008
  JReactNativeFeatureFlagsCxxInterop::disableTextLayoutManagerCacheAndroid),
@@ -1182,9 +1174,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1182
1174
  makeNativeMethod(
1183
1175
  "skipActivityIdentityAssertionOnHostPause",
1184
1176
  JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause),
1185
- makeNativeMethod(
1186
- "sweepActiveTouchOnChildNativeGesturesAndroid",
1187
- JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid),
1188
1177
  makeNativeMethod(
1189
1178
  "traceTurboModulePromiseRejectionsOnAndroid",
1190
1179
  JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid),
@@ -1206,9 +1195,6 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1206
1195
  makeNativeMethod(
1207
1196
  "useNativeViewConfigsInBridgelessMode",
1208
1197
  JReactNativeFeatureFlagsCxxInterop::useNativeViewConfigsInBridgelessMode),
1209
- makeNativeMethod(
1210
- "useOptimizedEventBatchingOnAndroid",
1211
- JReactNativeFeatureFlagsCxxInterop::useOptimizedEventBatchingOnAndroid),
1212
1198
  makeNativeMethod(
1213
1199
  "useRawPropsJsiValue",
1214
1200
  JReactNativeFeatureFlagsCxxInterop::useRawPropsJsiValue),
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @generated SignedSource<<1e57bf8252c16fc10bbfcae08710af85>>
7
+ * @generated SignedSource<<a1deb0145d8c51d608903e1704e96b8d>>
8
8
  */
9
9
 
10
10
  /**
@@ -54,6 +54,9 @@ class JReactNativeFeatureFlagsCxxInterop
54
54
  static bool disableOldAndroidAttachmentMetricsWorkarounds(
55
55
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
56
56
 
57
+ static bool disableSubviewClippingAndroid(
58
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
59
+
57
60
  static bool disableTextLayoutManagerCacheAndroid(
58
61
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
59
62
 
@@ -225,9 +228,6 @@ class JReactNativeFeatureFlagsCxxInterop
225
228
  static bool skipActivityIdentityAssertionOnHostPause(
226
229
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
227
230
 
228
- static bool sweepActiveTouchOnChildNativeGesturesAndroid(
229
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
230
-
231
231
  static bool traceTurboModulePromiseRejectionsOnAndroid(
232
232
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
233
233
 
@@ -249,9 +249,6 @@ class JReactNativeFeatureFlagsCxxInterop
249
249
  static bool useNativeViewConfigsInBridgelessMode(
250
250
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
251
251
 
252
- static bool useOptimizedEventBatchingOnAndroid(
253
- facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
254
-
255
252
  static bool useRawPropsJsiValue(
256
253
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
257
254
 
@@ -72,7 +72,7 @@ loadScriptFromAssets(AAssetManager* manager, const std::string& assetName) {
72
72
  }
73
73
 
74
74
  auto buf = std::make_unique<JSBigBufferString>(script->size());
75
- memcpy(buf->data(), script->c_str(), script->size());
75
+ memcpy(buf->mutableData(), script->c_str(), script->size());
76
76
  return buf;
77
77
  }
78
78
  }
@@ -10,11 +10,12 @@
10
10
  #include <string>
11
11
 
12
12
  #include <android/asset_manager.h>
13
- #include <cxxreact/JSExecutor.h>
14
13
  #include <fbjni/fbjni.h>
15
14
 
16
15
  namespace facebook::react {
17
16
 
17
+ class JSBigString;
18
+
18
19
  struct JAssetManager : jni::JavaClass<JAssetManager> {
19
20
  static constexpr auto kJavaDescriptor = "Landroid/content/res/AssetManager;";
20
21
  };
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:width="24dp"
4
+ android:height="24dp"
5
+ android:viewportWidth="960"
6
+ android:viewportHeight="960">
7
+ <path
8
+ android:fillColor="@android:color/white"
9
+ android:pathData="M80,880L80,160Q80,127 103.5,103.5Q127,80 160,80L800,80Q833,80 856.5,103.5Q880,127 880,160L880,640Q880,673 856.5,696.5Q833,720 800,720L240,720L80,880ZM480,600Q497,600 508.5,588.5Q520,577 520,560Q520,543 508.5,531.5Q497,520 480,520Q463,520 451.5,531.5Q440,543 440,560Q440,577 451.5,588.5Q463,600 480,600ZM440,440L520,440L520,200L440,200L440,440Z"/>
10
+ </vector>
@@ -10,6 +10,8 @@
10
10
  #include <memory>
11
11
  #include <string>
12
12
 
13
+ #include <jsi/jsi.h>
14
+
13
15
  #ifndef RN_EXPORT
14
16
  #ifdef _MSC_VER
15
17
  #define RN_EXPORT
@@ -27,15 +29,17 @@ namespace facebook::react {
27
29
  // large string needs to be curried into a std::function<>, which must
28
30
  // by CopyConstructible.
29
31
 
30
- class JSBigString {
32
+ class JSBigString : public facebook::jsi::Buffer {
31
33
  public:
32
34
  JSBigString() = default;
33
35
 
34
- // Not copyable
36
+ // Not copyable or movable
35
37
  JSBigString(const JSBigString &) = delete;
36
38
  JSBigString &operator=(const JSBigString &) = delete;
39
+ JSBigString(JSBigString &&) = delete;
40
+ JSBigString &operator=(JSBigString &&) = delete;
37
41
 
38
- virtual ~JSBigString() = default;
42
+ ~JSBigString() override = default;
39
43
 
40
44
  virtual bool isAscii() const = 0;
41
45
 
@@ -43,7 +47,12 @@ class JSBigString {
43
47
  virtual const char *c_str() const = 0;
44
48
 
45
49
  // Length of the c_str without the NULL byte.
46
- virtual size_t size() const = 0;
50
+ size_t size() const override = 0;
51
+
52
+ const uint8_t *data() const final
53
+ {
54
+ return reinterpret_cast<const uint8_t *>(c_str());
55
+ }
47
56
  };
48
57
 
49
58
  // Concrete JSBigString implementation which holds a std::string
@@ -105,7 +114,7 @@ class RN_EXPORT JSBigBufferString : public JSBigString {
105
114
  return m_size;
106
115
  }
107
116
 
108
- char *data()
117
+ char *mutableData()
109
118
  {
110
119
  return m_data;
111
120
  }
@@ -60,8 +60,8 @@ void JSIndexedRAMBundle::init() {
60
60
  "header size must exactly match the input file format");
61
61
 
62
62
  readBundle(reinterpret_cast<char*>(header), sizeof(header));
63
- const size_t numTableEntries = folly::Endian::little(header[1]);
64
- const size_t startupCodeSize = folly::Endian::little(header[2]);
63
+ size_t numTableEntries = folly::Endian::little(header[1]);
64
+ std::streamsize startupCodeSize = folly::Endian::little(header[2]);
65
65
 
66
66
  // allocate memory for meta data and lookup table.
67
67
  m_table = ModuleTable(numTableEntries);
@@ -73,7 +73,7 @@ void JSIndexedRAMBundle::init() {
73
73
  // read the startup code
74
74
  m_startupCode = std::make_unique<JSBigBufferString>(startupCodeSize - 1);
75
75
 
76
- readBundle(m_startupCode->data(), startupCodeSize - 1);
76
+ readBundle(m_startupCode->mutableData(), startupCodeSize - 1);
77
77
  }
78
78
 
79
79
  JSIndexedRAMBundle::Module JSIndexedRAMBundle::getModule(
@@ -109,8 +109,7 @@ std::string JSIndexedRAMBundle::getModuleCode(const uint32_t id) const {
109
109
  return ret;
110
110
  }
111
111
 
112
- void JSIndexedRAMBundle::readBundle(char* buffer, const std::streamsize bytes)
113
- const {
112
+ void JSIndexedRAMBundle::readBundle(char* buffer, std::streamsize bytes) const {
114
113
  if (!m_bundle->read(buffer, bytes)) {
115
114
  if ((m_bundle->rdstate() & std::ios::eofbit) != 0) {
116
115
  throw std::ios_base::failure("Unexpected end of RAM Bundle file");
@@ -44,6 +44,7 @@ Pod::Spec.new do |s|
44
44
  s.dependency "React-logger", version
45
45
  s.dependency "React-debug", version
46
46
  s.dependency "React-timing", version
47
+ add_dependency(s, "React-utils", :additional_framework_paths => ["react/utils/platform/ios"])
47
48
 
48
49
  s.resource_bundles = {'React-cxxreact_privacy' => 'PrivacyInfo.xcprivacy'}
49
50
 
@@ -13,16 +13,16 @@
13
13
  #include <string_view>
14
14
 
15
15
  #define REACT_NATIVE_VERSION_MAJOR 0
16
- #define REACT_NATIVE_VERSION_MINOR 83
16
+ #define REACT_NATIVE_VERSION_MINOR 84
17
17
  #define REACT_NATIVE_VERSION_PATCH 0
18
18
 
19
19
  namespace facebook::react {
20
20
 
21
21
  constexpr struct {
22
22
  int32_t Major = 0;
23
- int32_t Minor = 83;
23
+ int32_t Minor = 84;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "rc.0";
25
+ std::string_view Prerelease = "nightly-20251106-de5141a3d";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -37,6 +37,7 @@ Pod::Spec.new do |s|
37
37
  add_dependency(s, "React-jsinspector", :framework_name => 'jsinspector_modern')
38
38
  add_dependency(s, "React-jsinspectorcdp", :framework_name => 'jsinspector_moderncdp')
39
39
  add_dependency(s, "React-jsinspectortracing", :framework_name => 'jsinspector_moderntracing')
40
+ add_dependency(s, "React-utils", :additional_framework_paths => ["react/utils/platform/ios"])
40
41
  if use_hermes()
41
42
  s.dependency 'hermes-engine'
42
43
  end
@@ -168,8 +168,7 @@ void JSIExecutor::loadBundle(
168
168
  ReactMarker::logTaggedMarker(
169
169
  ReactMarker::RUN_JS_BUNDLE_START, scriptName.c_str());
170
170
  }
171
- runtime_->evaluateJavaScript(
172
- std::make_unique<BigStringBuffer>(std::move(script)), sourceURL);
171
+ runtime_->evaluateJavaScript(std::move(script), sourceURL);
173
172
  flush();
174
173
  if (hasLogger) {
175
174
  ReactMarker::logTaggedMarker(
@@ -212,7 +211,7 @@ void JSIExecutor::registerBundle(
212
211
  "Empty bundle registered with ID " + tag + " from " + bundlePath);
213
212
  }
214
213
  runtime_->evaluateJavaScript(
215
- std::make_unique<BigStringBuffer>(std::move(script)),
214
+ std::move(script),
216
215
  JSExecutor::getSyntheticBundlePath(bundleId, bundlePath));
217
216
  }
218
217
  ReactMarker::logTaggedMarker(
@@ -49,7 +49,7 @@ namespace facebook::react {
49
49
  using JSIScopedTimeoutInvoker =
50
50
  std::function<void(const std::function<void()> &invokee, std::function<std::string()> errorMessageProducer)>;
51
51
 
52
- class BigStringBuffer : public jsi::Buffer {
52
+ class [[deprecated("JSBigString implements jsi::Buffer directly")]] BigStringBuffer : public jsi::Buffer {
53
53
  public:
54
54
  BigStringBuffer(std::unique_ptr<const JSBigString> script) : script_(std::move(script)) {}
55
55
 
@@ -60,7 +60,7 @@ class BigStringBuffer : public jsi::Buffer {
60
60
 
61
61
  const uint8_t *data() const override
62
62
  {
63
- return reinterpret_cast<const uint8_t *>(script_->c_str());
63
+ return script_->data();
64
64
  }
65
65
 
66
66
  private:
@@ -21,7 +21,15 @@ void PerfMonitorUpdateHandler::handlePerfIssueAdded(
21
21
  delegate_.unstable_onPerfIssueAdded(
22
22
  PerfIssuePayload{
23
23
  .name = payload["name"].asString(),
24
- .severity = payload["severity"].asString(),
24
+ .severity = payload["severity"].isNull()
25
+ ? std::nullopt
26
+ : std::make_optional(payload["severity"].asString()),
27
+ .description = payload["description"].isNull()
28
+ ? std::nullopt
29
+ : std::make_optional(payload["description"].asString()),
30
+ .learnMoreUrl = payload["learnMoreUrl"].isNull()
31
+ ? std::nullopt
32
+ : std::make_optional(payload["learnMoreUrl"].asString()),
25
33
  });
26
34
  }
27
35
  }
@@ -7,6 +7,7 @@
7
7
 
8
8
  #pragma once
9
9
 
10
+ #include <optional>
10
11
  #include <string>
11
12
 
12
13
  namespace facebook::react::jsinspector_modern {
@@ -15,7 +16,9 @@ class HostTargetDelegate;
15
16
 
16
17
  struct PerfIssuePayload {
17
18
  std::string name;
18
- std::string severity;
19
+ std::optional<std::string> severity;
20
+ std::optional<std::string> description;
21
+ std::optional<std::string> learnMoreUrl;
19
22
  };
20
23
 
21
24
  /**
@@ -26,12 +26,8 @@ const uint16_t TRACE_EVENT_CHUNK_SIZE = 1000;
26
26
  /**
27
27
  * The maximum number of ProfileChunk trace events
28
28
  * that will be sent in a single CDP Tracing.dataCollected message.
29
- * TODO(T219394401): Increase the size once we manage the queue on OkHTTP
30
- side
31
- * properly and avoid WebSocket disconnections when sending a message larger
32
- * than 16MB.
33
29
  */
34
- const uint16_t PROFILE_TRACE_EVENT_CHUNK_SIZE = 1;
30
+ const uint16_t PROFILE_TRACE_EVENT_CHUNK_SIZE = 10;
35
31
 
36
32
  } // namespace
37
33
 
@@ -53,7 +49,6 @@ TracingAgent::~TracingAgent() {
53
49
 
54
50
  bool TracingAgent::handleRequest(const cdp::PreparsedRequest& req) {
55
51
  if (req.method == "Tracing.start") {
56
- // @cdp Tracing.start support is experimental.
57
52
  if (sessionState_.isDebuggerDomainEnabled) {
58
53
  frontendChannel_(
59
54
  cdp::jsonError(
@@ -81,7 +76,6 @@ bool TracingAgent::handleRequest(const cdp::PreparsedRequest& req) {
81
76
 
82
77
  return true;
83
78
  } else if (req.method == "Tracing.end") {
84
- // @cdp Tracing.end support is experimental.
85
79
  auto state = hostTargetController_.stopTracing();
86
80
 
87
81
  sessionState_.hasPendingTraceRecording = false;
@@ -5,7 +5,7 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- #include "JsiIntegrationTest.h"
8
+ #include "TracingTest.h"
9
9
  #include "engines/JsiIntegrationTestHermesEngineAdapter.h"
10
10
 
11
11
  #include <folly/executors/QueuedImmediateExecutor.h>
@@ -31,13 +31,13 @@ struct NetworkReporterTestParams {
31
31
  */
32
32
  template <typename Params>
33
33
  requires std::convertible_to<Params, NetworkReporterTestParams>
34
- class NetworkReporterTestBase : public JsiIntegrationPortableTestBase<
34
+ class NetworkReporterTestBase : public TracingTestBase<
35
35
  JsiIntegrationTestHermesEngineAdapter,
36
36
  folly::QueuedImmediateExecutor>,
37
37
  public WithParamInterface<Params> {
38
38
  protected:
39
39
  NetworkReporterTestBase()
40
- : JsiIntegrationPortableTestBase({
40
+ : TracingTestBase({
41
41
  .networkInspectionEnabled = true,
42
42
  .enableNetworkEventReporting =
43
43
  WithParamInterface<Params>::GetParam()
@@ -68,58 +68,6 @@ class NetworkReporterTestBase : public JsiIntegrationPortableTestBase<
68
68
  urlMatcher);
69
69
  }
70
70
 
71
- void startTracing() {
72
- this->expectMessageFromPage(JsonEq(R"({
73
- "id": 1,
74
- "result": {}
75
- })"));
76
-
77
- this->toPage_->sendMessage(R"({
78
- "id": 1,
79
- "method": "Tracing.start"
80
- })");
81
- }
82
-
83
- /**
84
- * Helper method to end tracing and collect all trace events from potentially
85
- * multiple chunked Tracing.dataCollected messages.
86
- * \returns A vector containing all collected trace events
87
- */
88
- std::vector<folly::dynamic> endTracingAndCollectEvents() {
89
- InSequence s;
90
-
91
- this->expectMessageFromPage(JsonEq(R"({
92
- "id": 1,
93
- "result": {}
94
- })"));
95
-
96
- std::vector<folly::dynamic> allTraceEvents;
97
-
98
- EXPECT_CALL(
99
- fromPage(),
100
- onMessage(JsonParsed(AtJsonPtr("/method", "Tracing.dataCollected"))))
101
- .Times(AtLeast(1))
102
- .WillRepeatedly(Invoke([&allTraceEvents](const std::string& message) {
103
- auto parsedMessage = folly::parseJson(message);
104
- auto& events = parsedMessage.at("params").at("value");
105
- allTraceEvents.insert(
106
- allTraceEvents.end(),
107
- std::make_move_iterator(events.begin()),
108
- std::make_move_iterator(events.end()));
109
- }));
110
-
111
- this->expectMessageFromPage(JsonParsed(AllOf(
112
- AtJsonPtr("/method", "Tracing.tracingComplete"),
113
- AtJsonPtr("/params/dataLossOccurred", false))));
114
-
115
- this->toPage_->sendMessage(R"({
116
- "id": 1,
117
- "method": "Tracing.end"
118
- })");
119
-
120
- return allTraceEvents;
121
- }
122
-
123
71
  private:
124
72
  std::optional<std::string> getScriptUrlById(const std::string& scriptId) {
125
73
  auto it = scriptUrlsById_.find(scriptId);
@@ -0,0 +1,82 @@
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 "JsiIntegrationTest.h"
11
+
12
+ #include <folly/dynamic.h>
13
+ #include <folly/json.h>
14
+ #include <gmock/gmock.h>
15
+ #include <vector>
16
+
17
+ #include "FollyDynamicMatchers.h"
18
+
19
+ namespace facebook::react::jsinspector_modern {
20
+
21
+ /**
22
+ * Base test class providing tracing-related test utilities for tests.
23
+ */
24
+ template <typename EngineAdapter, typename Executor>
25
+ class TracingTestBase : public JsiIntegrationPortableTestBase<EngineAdapter, Executor> {
26
+ protected:
27
+ using JsiIntegrationPortableTestBase<EngineAdapter, Executor>::JsiIntegrationPortableTestBase;
28
+
29
+ /**
30
+ * Helper method to start tracing via Tracing.start CDP command.
31
+ */
32
+ void startTracing()
33
+ {
34
+ this->expectMessageFromPage(JsonEq(R"({
35
+ "id": 1,
36
+ "result": {}
37
+ })"));
38
+
39
+ this->toPage_->sendMessage(R"({
40
+ "id": 1,
41
+ "method": "Tracing.start"
42
+ })");
43
+ }
44
+
45
+ /**
46
+ * Helper method to end tracing and collect all trace events from potentially
47
+ * multiple chunked Tracing.dataCollected messages.
48
+ * \returns A vector containing all collected trace events
49
+ */
50
+ std::vector<folly::dynamic> endTracingAndCollectEvents()
51
+ {
52
+ testing::InSequence s;
53
+
54
+ this->expectMessageFromPage(JsonEq(R"({
55
+ "id": 1,
56
+ "result": {}
57
+ })"));
58
+
59
+ std::vector<folly::dynamic> allTraceEvents;
60
+
61
+ EXPECT_CALL(this->fromPage(), onMessage(JsonParsed(AtJsonPtr("/method", "Tracing.dataCollected"))))
62
+ .Times(testing::AtLeast(1))
63
+ .WillRepeatedly(testing::Invoke([&allTraceEvents](const std::string &message) {
64
+ auto parsedMessage = folly::parseJson(message);
65
+ auto &events = parsedMessage.at("params").at("value");
66
+ allTraceEvents.insert(
67
+ allTraceEvents.end(), std::make_move_iterator(events.begin()), std::make_move_iterator(events.end()));
68
+ }));
69
+
70
+ this->expectMessageFromPage(JsonParsed(
71
+ testing::AllOf(AtJsonPtr("/method", "Tracing.tracingComplete"), AtJsonPtr("/params/dataLossOccurred", false))));
72
+
73
+ this->toPage_->sendMessage(R"({
74
+ "id": 1,
75
+ "method": "Tracing.end"
76
+ })");
77
+
78
+ return allTraceEvents;
79
+ }
80
+ };
81
+
82
+ } // namespace facebook::react::jsinspector_modern