react-native 0.83.0-rc.0 → 0.83.0-rc.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 (55) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/React/Base/RCTVersion.m +1 -1
  3. package/React/CoreModules/React-CoreModules.podspec +1 -0
  4. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +16 -0
  5. package/React/Runtime/React-RCTRuntime.podspec +1 -0
  6. package/ReactAndroid/gradle.properties +1 -1
  7. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
  8. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +8 -4
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt +3 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  15. package/ReactAndroid/src/main/jni/CMakeLists.txt +5 -0
  16. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
  17. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
  18. package/ReactCommon/React-Fabric.podspec +8 -2
  19. package/ReactCommon/cxxreact/React-cxxreact.podspec +1 -0
  20. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  21. package/ReactCommon/jsiexecutor/React-jsiexecutor.podspec +1 -0
  22. package/ReactCommon/jsinspector-modern/HostAgent.cpp +33 -0
  23. package/ReactCommon/jsinspector-modern/HostAgent.h +6 -0
  24. package/ReactCommon/jsinspector-modern/HostTarget.h +5 -0
  25. package/ReactCommon/jsinspector-modern/InspectorFlags.cpp +6 -0
  26. package/ReactCommon/jsinspector-modern/InspectorFlags.h +7 -0
  27. package/ReactCommon/jsinspector-modern/InspectorInterfaces.cpp +37 -0
  28. package/ReactCommon/jsinspector-modern/InspectorInterfaces.h +12 -1
  29. package/ReactCommon/jsinspector-modern/TracingAgent.cpp +11 -1
  30. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +4 -0
  31. package/ReactCommon/jsitooling/React-jsitooling.podspec +1 -0
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
  33. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
  34. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +90 -54
  35. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
  36. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +12 -4
  37. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
  38. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsOverridesOSSCanary.h +5 -1
  39. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
  40. package/ReactCommon/react/nativemodule/defaults/CMakeLists.txt +1 -0
  41. package/ReactCommon/react/nativemodule/defaults/DefaultTurboModules.cpp +7 -0
  42. package/ReactCommon/react/nativemodule/defaults/React-defaultsnativemodule.podspec +5 -1
  43. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
  44. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
  45. package/ReactCommon/react/nativemodule/intersectionobserver/NativeIntersectionObserver.h +4 -0
  46. package/ReactCommon/react/nativemodule/intersectionobserver/React-intersectionobservernativemodule.podspec +66 -0
  47. package/ReactCommon/react/utils/React-utils.podspec +3 -1
  48. package/package.json +9 -8
  49. package/scripts/cocoapods/rncore.rb +3 -2
  50. package/scripts/react_native_pods.rb +1 -0
  51. package/sdks/.hermesv1version +1 -0
  52. package/sdks/hermes-engine/version.properties +1 -1
  53. package/src/private/featureflags/ReactNativeFeatureFlags.js +14 -4
  54. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
  55. package/src/private/setup/setUpDefaultReactNativeEnvironment.js +6 -0
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
29
29
  static major: number = 0;
30
30
  static minor: number = 83;
31
31
  static patch: number = 0;
32
- static prerelease: string | null = 'rc.0';
32
+ static prerelease: string | null = 'rc.2';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(83),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"rc.0",
27
+ RCTVersionPrerelease: @"rc.2",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -61,6 +61,7 @@ Pod::Spec.new do |s|
61
61
  add_dependency(s, "React-RCTFBReactNativeSpec")
62
62
  add_dependency(s, "ReactCommon", :subspec => "turbomodule/core", :additional_framework_paths => ["react/nativemodule/core"])
63
63
  add_dependency(s, "React-NativeModulesApple")
64
+ add_dependency(s, "React-utils", :additional_framework_paths => ["react/utils/platform/ios"])
64
65
 
65
66
  add_rn_third_party_dependencies(s)
66
67
  add_rncore_dependency(s)
@@ -254,6 +254,7 @@ protected:
254
254
  methodMap_["enableImmediateUpdateModeForContentOffsetChanges"] = MethodMetadata {.argCount = 0, .invoker = __enableImmediateUpdateModeForContentOffsetChanges};
255
255
  methodMap_["enableImperativeFocus"] = MethodMetadata {.argCount = 0, .invoker = __enableImperativeFocus};
256
256
  methodMap_["enableInteropViewManagerClassLookUpOptimizationIOS"] = MethodMetadata {.argCount = 0, .invoker = __enableInteropViewManagerClassLookUpOptimizationIOS};
257
+ methodMap_["enableIntersectionObserverByDefault"] = MethodMetadata {.argCount = 0, .invoker = __enableIntersectionObserverByDefault};
257
258
  methodMap_["enableKeyEvents"] = MethodMetadata {.argCount = 0, .invoker = __enableKeyEvents};
258
259
  methodMap_["enableLayoutAnimationsOnAndroid"] = MethodMetadata {.argCount = 0, .invoker = __enableLayoutAnimationsOnAndroid};
259
260
  methodMap_["enableLayoutAnimationsOnIOS"] = MethodMetadata {.argCount = 0, .invoker = __enableLayoutAnimationsOnIOS};
@@ -278,6 +279,7 @@ protected:
278
279
  methodMap_["enableVirtualViewWindowFocusDetection"] = MethodMetadata {.argCount = 0, .invoker = __enableVirtualViewWindowFocusDetection};
279
280
  methodMap_["enableWebPerformanceAPIsByDefault"] = MethodMetadata {.argCount = 0, .invoker = __enableWebPerformanceAPIsByDefault};
280
281
  methodMap_["fixMappingOfEventPrioritiesBetweenFabricAndReact"] = MethodMetadata {.argCount = 0, .invoker = __fixMappingOfEventPrioritiesBetweenFabricAndReact};
282
+ methodMap_["fuseboxAssertSingleHostState"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxAssertSingleHostState};
281
283
  methodMap_["fuseboxEnabledRelease"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxEnabledRelease};
282
284
  methodMap_["fuseboxNetworkInspectionEnabled"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxNetworkInspectionEnabled};
283
285
  methodMap_["hideOffscreenVirtualViewsOnIOS"] = MethodMetadata {.argCount = 0, .invoker = __hideOffscreenVirtualViewsOnIOS};
@@ -527,6 +529,13 @@ private:
527
529
  return bridging::callFromJs<bool>(rt, &T::enableInteropViewManagerClassLookUpOptimizationIOS, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
528
530
  }
529
531
 
532
+ static jsi::Value __enableIntersectionObserverByDefault(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
533
+ static_assert(
534
+ bridging::getParameterCount(&T::enableIntersectionObserverByDefault) == 1,
535
+ "Expected enableIntersectionObserverByDefault(...) to have 1 parameters");
536
+ return bridging::callFromJs<bool>(rt, &T::enableIntersectionObserverByDefault, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
537
+ }
538
+
530
539
  static jsi::Value __enableKeyEvents(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
531
540
  static_assert(
532
541
  bridging::getParameterCount(&T::enableKeyEvents) == 1,
@@ -695,6 +704,13 @@ private:
695
704
  return bridging::callFromJs<bool>(rt, &T::fixMappingOfEventPrioritiesBetweenFabricAndReact, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
696
705
  }
697
706
 
707
+ static jsi::Value __fuseboxAssertSingleHostState(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
708
+ static_assert(
709
+ bridging::getParameterCount(&T::fuseboxAssertSingleHostState) == 1,
710
+ "Expected fuseboxAssertSingleHostState(...) to have 1 parameters");
711
+ return bridging::callFromJs<bool>(rt, &T::fuseboxAssertSingleHostState, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
712
+ }
713
+
698
714
  static jsi::Value __fuseboxEnabledRelease(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
699
715
  static_assert(
700
716
  bridging::getParameterCount(&T::fuseboxEnabledRelease) == 1,
@@ -56,6 +56,7 @@ Pod::Spec.new do |s|
56
56
 
57
57
  add_dependency(s, "React-RuntimeCore")
58
58
  add_dependency(s, "React-RuntimeApple")
59
+ add_dependency(s, "React-utils", :additional_framework_paths => ["react/utils/platform/ios"])
59
60
 
60
61
  if use_third_party_jsc()
61
62
  s.exclude_files = ["RCTHermesInstanceFactory.{mm,h}", "RCTJscInstanceFactory.{mm,h}"]
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.83.0-rc.0
1
+ VERSION_NAME=0.83.0-rc.2
2
2
  react.internal.publishingGroup=com.facebook.react
3
3
  react.internal.hermesPublishingGroup=com.facebook.hermes
4
4
 
@@ -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<<d8dc8c3a2efe8b7e870546e5749ef5ad>>
7
+ * @generated SignedSource<<f350f756268554418a046d0793ee0146>>
8
8
  */
9
9
 
10
10
  /**
@@ -210,6 +210,12 @@ public object ReactNativeFeatureFlags {
210
210
  @JvmStatic
211
211
  public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean = accessor.enableInteropViewManagerClassLookUpOptimizationIOS()
212
212
 
213
+ /**
214
+ * Enables the IntersectionObserver Web API in React Native.
215
+ */
216
+ @JvmStatic
217
+ public fun enableIntersectionObserverByDefault(): Boolean = accessor.enableIntersectionObserverByDefault()
218
+
213
219
  /**
214
220
  * Enables key up/down/press events to be sent to JS from components
215
221
  */
@@ -354,6 +360,12 @@ public object ReactNativeFeatureFlags {
354
360
  @JvmStatic
355
361
  public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean = accessor.fixMappingOfEventPrioritiesBetweenFabricAndReact()
356
362
 
363
+ /**
364
+ * Enable system assertion validating that Fusebox is configured with a single host. When set, the CDP backend will dynamically disable features (Perf and Network) in the event that multiple hosts are registered (undefined behaviour), and broadcast this over `ReactNativeApplication.systemStateChanged`.
365
+ */
366
+ @JvmStatic
367
+ public fun fuseboxAssertSingleHostState(): Boolean = accessor.fuseboxAssertSingleHostState()
368
+
357
369
  /**
358
370
  * Flag determining if the React Native DevTools (Fusebox) CDP backend should be enabled in release builds. This flag is global and should not be changed across React Host lifetimes.
359
371
  */
@@ -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<<447ccc7271b71b0208a2297b7eba5995>>
7
+ * @generated SignedSource<<c9a6711220ca600dacaed5754df5caab>>
8
8
  */
9
9
 
10
10
  /**
@@ -50,6 +50,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
50
50
  private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
51
51
  private var enableImperativeFocusCache: Boolean? = null
52
52
  private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
53
+ private var enableIntersectionObserverByDefaultCache: Boolean? = null
53
54
  private var enableKeyEventsCache: Boolean? = null
54
55
  private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
55
56
  private var enableLayoutAnimationsOnIOSCache: Boolean? = null
@@ -74,6 +75,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
74
75
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
75
76
  private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
76
77
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
78
+ private var fuseboxAssertSingleHostStateCache: Boolean? = null
77
79
  private var fuseboxEnabledReleaseCache: Boolean? = null
78
80
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
79
81
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
@@ -374,6 +376,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
374
376
  return cached
375
377
  }
376
378
 
379
+ override fun enableIntersectionObserverByDefault(): Boolean {
380
+ var cached = enableIntersectionObserverByDefaultCache
381
+ if (cached == null) {
382
+ cached = ReactNativeFeatureFlagsCxxInterop.enableIntersectionObserverByDefault()
383
+ enableIntersectionObserverByDefaultCache = cached
384
+ }
385
+ return cached
386
+ }
387
+
377
388
  override fun enableKeyEvents(): Boolean {
378
389
  var cached = enableKeyEventsCache
379
390
  if (cached == null) {
@@ -590,6 +601,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
590
601
  return cached
591
602
  }
592
603
 
604
+ override fun fuseboxAssertSingleHostState(): Boolean {
605
+ var cached = fuseboxAssertSingleHostStateCache
606
+ if (cached == null) {
607
+ cached = ReactNativeFeatureFlagsCxxInterop.fuseboxAssertSingleHostState()
608
+ fuseboxAssertSingleHostStateCache = cached
609
+ }
610
+ return cached
611
+ }
612
+
593
613
  override fun fuseboxEnabledRelease(): Boolean {
594
614
  var cached = fuseboxEnabledReleaseCache
595
615
  if (cached == null) {
@@ -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<<d6403b67e269ad80ef3e2389ac923c8a>>
7
+ * @generated SignedSource<<d936abca211ad153f40c44187a1f8867>>
8
8
  */
9
9
 
10
10
  /**
@@ -88,6 +88,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
88
88
 
89
89
  @DoNotStrip @JvmStatic public external fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
90
90
 
91
+ @DoNotStrip @JvmStatic public external fun enableIntersectionObserverByDefault(): Boolean
92
+
91
93
  @DoNotStrip @JvmStatic public external fun enableKeyEvents(): Boolean
92
94
 
93
95
  @DoNotStrip @JvmStatic public external fun enableLayoutAnimationsOnAndroid(): Boolean
@@ -136,6 +138,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
136
138
 
137
139
  @DoNotStrip @JvmStatic public external fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
138
140
 
141
+ @DoNotStrip @JvmStatic public external fun fuseboxAssertSingleHostState(): Boolean
142
+
139
143
  @DoNotStrip @JvmStatic public external fun fuseboxEnabledRelease(): Boolean
140
144
 
141
145
  @DoNotStrip @JvmStatic public external fun fuseboxNetworkInspectionEnabled(): Boolean
@@ -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<<ab48ba86a7cf3cd35ec530a216aea774>>
7
+ * @generated SignedSource<<303c55a883b4798288716d168ce82d06>>
8
8
  */
9
9
 
10
10
  /**
@@ -83,6 +83,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
83
83
 
84
84
  override fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean = false
85
85
 
86
+ override fun enableIntersectionObserverByDefault(): Boolean = false
87
+
86
88
  override fun enableKeyEvents(): Boolean = false
87
89
 
88
90
  override fun enableLayoutAnimationsOnAndroid(): Boolean = false
@@ -95,13 +97,13 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
95
97
 
96
98
  override fun enableNativeCSSParsing(): Boolean = false
97
99
 
98
- override fun enableNetworkEventReporting(): Boolean = false
100
+ override fun enableNetworkEventReporting(): Boolean = true
99
101
 
100
102
  override fun enablePreparedTextLayout(): Boolean = false
101
103
 
102
104
  override fun enablePropsUpdateReconciliationAndroid(): Boolean = false
103
105
 
104
- override fun enableResourceTimingAPI(): Boolean = false
106
+ override fun enableResourceTimingAPI(): Boolean = true
105
107
 
106
108
  override fun enableSwiftUIBasedFilters(): Boolean = false
107
109
 
@@ -131,9 +133,11 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
131
133
 
132
134
  override fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean = false
133
135
 
136
+ override fun fuseboxAssertSingleHostState(): Boolean = true
137
+
134
138
  override fun fuseboxEnabledRelease(): Boolean = false
135
139
 
136
- override fun fuseboxNetworkInspectionEnabled(): Boolean = false
140
+ override fun fuseboxNetworkInspectionEnabled(): Boolean = true
137
141
 
138
142
  override fun hideOffscreenVirtualViewsOnIOS(): Boolean = false
139
143
 
@@ -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<<6f6b5abe79764b88cf3ed62fe0230786>>
7
+ * @generated SignedSource<<98eb8f2d7036cf8a3023a8c560375f6a>>
8
8
  */
9
9
 
10
10
  /**
@@ -54,6 +54,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
54
54
  private var enableImmediateUpdateModeForContentOffsetChangesCache: Boolean? = null
55
55
  private var enableImperativeFocusCache: Boolean? = null
56
56
  private var enableInteropViewManagerClassLookUpOptimizationIOSCache: Boolean? = null
57
+ private var enableIntersectionObserverByDefaultCache: Boolean? = null
57
58
  private var enableKeyEventsCache: Boolean? = null
58
59
  private var enableLayoutAnimationsOnAndroidCache: Boolean? = null
59
60
  private var enableLayoutAnimationsOnIOSCache: Boolean? = null
@@ -78,6 +79,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
78
79
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
79
80
  private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
80
81
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
82
+ private var fuseboxAssertSingleHostStateCache: Boolean? = null
81
83
  private var fuseboxEnabledReleaseCache: Boolean? = null
82
84
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
83
85
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
@@ -408,6 +410,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
408
410
  return cached
409
411
  }
410
412
 
413
+ override fun enableIntersectionObserverByDefault(): Boolean {
414
+ var cached = enableIntersectionObserverByDefaultCache
415
+ if (cached == null) {
416
+ cached = currentProvider.enableIntersectionObserverByDefault()
417
+ accessedFeatureFlags.add("enableIntersectionObserverByDefault")
418
+ enableIntersectionObserverByDefaultCache = cached
419
+ }
420
+ return cached
421
+ }
422
+
411
423
  override fun enableKeyEvents(): Boolean {
412
424
  var cached = enableKeyEventsCache
413
425
  if (cached == null) {
@@ -648,6 +660,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
648
660
  return cached
649
661
  }
650
662
 
663
+ override fun fuseboxAssertSingleHostState(): Boolean {
664
+ var cached = fuseboxAssertSingleHostStateCache
665
+ if (cached == null) {
666
+ cached = currentProvider.fuseboxAssertSingleHostState()
667
+ accessedFeatureFlags.add("fuseboxAssertSingleHostState")
668
+ fuseboxAssertSingleHostStateCache = cached
669
+ }
670
+ return cached
671
+ }
672
+
651
673
  override fun fuseboxEnabledRelease(): Boolean {
652
674
  var cached = fuseboxEnabledReleaseCache
653
675
  if (cached == null) {
@@ -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<<f82b5905d822f8009c054a9443f86e39>>
7
+ * @generated SignedSource<<2912fe4c90e3b493770bf14e70264656>>
8
8
  */
9
9
 
10
10
  /**
@@ -27,6 +27,8 @@ public open class ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android : ReactN
27
27
 
28
28
  override fun enableFabricRenderer(): Boolean = true
29
29
 
30
+ override fun enableIntersectionObserverByDefault(): Boolean = true
31
+
30
32
  override fun useNativeViewConfigsInBridgelessMode(): Boolean = true
31
33
 
32
34
  override fun useTurboModuleInterop(): Boolean = true
@@ -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<<6b61490a8d6b1df1d6264016455382f8>>
7
+ * @generated SignedSource<<18744192baedc0d5fa0fc7873adf0422>>
8
8
  */
9
9
 
10
10
  /**
@@ -83,6 +83,8 @@ public interface ReactNativeFeatureFlagsProvider {
83
83
 
84
84
  @DoNotStrip public fun enableInteropViewManagerClassLookUpOptimizationIOS(): Boolean
85
85
 
86
+ @DoNotStrip public fun enableIntersectionObserverByDefault(): Boolean
87
+
86
88
  @DoNotStrip public fun enableKeyEvents(): Boolean
87
89
 
88
90
  @DoNotStrip public fun enableLayoutAnimationsOnAndroid(): Boolean
@@ -131,6 +133,8 @@ public interface ReactNativeFeatureFlagsProvider {
131
133
 
132
134
  @DoNotStrip public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
133
135
 
136
+ @DoNotStrip public fun fuseboxAssertSingleHostState(): Boolean
137
+
134
138
  @DoNotStrip public fun fuseboxEnabledRelease(): Boolean
135
139
 
136
140
  @DoNotStrip public fun fuseboxNetworkInspectionEnabled(): Boolean
@@ -15,6 +15,6 @@ public object ReactNativeVersion {
15
15
  "major" to 0,
16
16
  "minor" to 83,
17
17
  "patch" to 0,
18
- "prerelease" to "rc.0"
18
+ "prerelease" to "rc.2"
19
19
  )
20
20
  }
@@ -114,6 +114,7 @@ add_react_common_subdir(react/renderer/components/scrollview)
114
114
  add_react_common_subdir(react/renderer/components/safeareaview)
115
115
  add_react_common_subdir(react/renderer/leakchecker)
116
116
  add_react_common_subdir(react/renderer/observers/events)
117
+ add_react_common_subdir(react/renderer/observers/intersection)
117
118
  add_react_common_subdir(react/renderer/textlayoutmanager)
118
119
  add_react_common_subdir(react/utils)
119
120
  add_react_common_subdir(react/bridging)
@@ -124,6 +125,7 @@ add_react_common_subdir(react/nativemodule/dom)
124
125
  add_react_common_subdir(react/nativemodule/featureflags)
125
126
  add_react_common_subdir(react/nativemodule/microtasks)
126
127
  add_react_common_subdir(react/nativemodule/idlecallbacks)
128
+ add_react_common_subdir(react/nativemodule/intersectionobserver)
127
129
  add_react_common_subdir(react/nativemodule/webperformance)
128
130
  add_react_common_subdir(react/networking)
129
131
  add_react_common_subdir(jserrorhandler)
@@ -191,6 +193,7 @@ add_library(reactnative
191
193
  $<TARGET_OBJECTS:react_nativemodule_dom>
192
194
  $<TARGET_OBJECTS:react_nativemodule_featureflags>
193
195
  $<TARGET_OBJECTS:react_nativemodule_idlecallbacks>
196
+ $<TARGET_OBJECTS:react_nativemodule_intersectionobserver>
194
197
  $<TARGET_OBJECTS:react_nativemodule_microtasks>
195
198
  $<TARGET_OBJECTS:react_nativemodule_webperformance>
196
199
  $<TARGET_OBJECTS:react_networking>
@@ -211,6 +214,7 @@ add_library(reactnative
211
214
  $<TARGET_OBJECTS:react_renderer_mapbuffer>
212
215
  $<TARGET_OBJECTS:react_renderer_mounting>
213
216
  $<TARGET_OBJECTS:react_renderer_observers_events>
217
+ $<TARGET_OBJECTS:react_renderer_observers_intersection>
214
218
  $<TARGET_OBJECTS:react_renderer_runtimescheduler>
215
219
  $<TARGET_OBJECTS:react_renderer_scheduler>
216
220
  $<TARGET_OBJECTS:react_renderer_telemetry>
@@ -282,6 +286,7 @@ target_include_directories(reactnative
282
286
  $<TARGET_PROPERTY:react_nativemodule_dom,INTERFACE_INCLUDE_DIRECTORIES>
283
287
  $<TARGET_PROPERTY:react_nativemodule_featureflags,INTERFACE_INCLUDE_DIRECTORIES>
284
288
  $<TARGET_PROPERTY:react_nativemodule_idlecallbacks,INTERFACE_INCLUDE_DIRECTORIES>
289
+ $<TARGET_PROPERTY:react_nativemodule_intersectionobserver,INTERFACE_INCLUDE_DIRECTORIES>
285
290
  $<TARGET_PROPERTY:react_nativemodule_microtasks,INTERFACE_INCLUDE_DIRECTORIES>
286
291
  $<TARGET_PROPERTY:react_nativemodule_webperformance,INTERFACE_INCLUDE_DIRECTORIES>
287
292
  $<TARGET_PROPERTY:react_networking,INTERFACE_INCLUDE_DIRECTORIES>
@@ -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<<adc73df33ed2112584feaf83fb8d5e17>>
8
8
  */
9
9
 
10
10
  /**
@@ -219,6 +219,12 @@ class ReactNativeFeatureFlagsJavaProvider
219
219
  return method(javaProvider_);
220
220
  }
221
221
 
222
+ bool enableIntersectionObserverByDefault() override {
223
+ static const auto method =
224
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableIntersectionObserverByDefault");
225
+ return method(javaProvider_);
226
+ }
227
+
222
228
  bool enableKeyEvents() override {
223
229
  static const auto method =
224
230
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("enableKeyEvents");
@@ -363,6 +369,12 @@ class ReactNativeFeatureFlagsJavaProvider
363
369
  return method(javaProvider_);
364
370
  }
365
371
 
372
+ bool fuseboxAssertSingleHostState() override {
373
+ static const auto method =
374
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxAssertSingleHostState");
375
+ return method(javaProvider_);
376
+ }
377
+
366
378
  bool fuseboxEnabledRelease() override {
367
379
  static const auto method =
368
380
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxEnabledRelease");
@@ -691,6 +703,11 @@ bool JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOpti
691
703
  return ReactNativeFeatureFlags::enableInteropViewManagerClassLookUpOptimizationIOS();
692
704
  }
693
705
 
706
+ bool JReactNativeFeatureFlagsCxxInterop::enableIntersectionObserverByDefault(
707
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
708
+ return ReactNativeFeatureFlags::enableIntersectionObserverByDefault();
709
+ }
710
+
694
711
  bool JReactNativeFeatureFlagsCxxInterop::enableKeyEvents(
695
712
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
696
713
  return ReactNativeFeatureFlags::enableKeyEvents();
@@ -811,6 +828,11 @@ bool JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabri
811
828
  return ReactNativeFeatureFlags::fixMappingOfEventPrioritiesBetweenFabricAndReact();
812
829
  }
813
830
 
831
+ bool JReactNativeFeatureFlagsCxxInterop::fuseboxAssertSingleHostState(
832
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
833
+ return ReactNativeFeatureFlags::fuseboxAssertSingleHostState();
834
+ }
835
+
814
836
  bool JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease(
815
837
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
816
838
  return ReactNativeFeatureFlags::fuseboxEnabledRelease();
@@ -1077,6 +1099,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1077
1099
  makeNativeMethod(
1078
1100
  "enableInteropViewManagerClassLookUpOptimizationIOS",
1079
1101
  JReactNativeFeatureFlagsCxxInterop::enableInteropViewManagerClassLookUpOptimizationIOS),
1102
+ makeNativeMethod(
1103
+ "enableIntersectionObserverByDefault",
1104
+ JReactNativeFeatureFlagsCxxInterop::enableIntersectionObserverByDefault),
1080
1105
  makeNativeMethod(
1081
1106
  "enableKeyEvents",
1082
1107
  JReactNativeFeatureFlagsCxxInterop::enableKeyEvents),
@@ -1149,6 +1174,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1149
1174
  makeNativeMethod(
1150
1175
  "fixMappingOfEventPrioritiesBetweenFabricAndReact",
1151
1176
  JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabricAndReact),
1177
+ makeNativeMethod(
1178
+ "fuseboxAssertSingleHostState",
1179
+ JReactNativeFeatureFlagsCxxInterop::fuseboxAssertSingleHostState),
1152
1180
  makeNativeMethod(
1153
1181
  "fuseboxEnabledRelease",
1154
1182
  JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease),
@@ -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<<9853cf162b179249b2c6af120a662cf3>>
8
8
  */
9
9
 
10
10
  /**
@@ -120,6 +120,9 @@ class JReactNativeFeatureFlagsCxxInterop
120
120
  static bool enableInteropViewManagerClassLookUpOptimizationIOS(
121
121
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
122
122
 
123
+ static bool enableIntersectionObserverByDefault(
124
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
125
+
123
126
  static bool enableKeyEvents(
124
127
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
125
128
 
@@ -192,6 +195,9 @@ class JReactNativeFeatureFlagsCxxInterop
192
195
  static bool fixMappingOfEventPrioritiesBetweenFabricAndReact(
193
196
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
194
197
 
198
+ static bool fuseboxAssertSingleHostState(
199
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
200
+
195
201
  static bool fuseboxEnabledRelease(
196
202
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
197
203
 
@@ -54,7 +54,7 @@ Pod::Spec.new do |s|
54
54
  depend_on_js_engine(s)
55
55
  add_rn_third_party_dependencies(s)
56
56
  add_rncore_dependency(s)
57
-
57
+
58
58
  s.subspec "animated" do |ss|
59
59
  ss.source_files = podspec_sources("react/renderer/animated/**/*.{m,mm,cpp,h}", "react/renderer/animated/**/*.{h}")
60
60
  ss.exclude_files = "react/renderer/animated/tests"
@@ -66,7 +66,7 @@ Pod::Spec.new do |s|
66
66
  ss.exclude_files = "react/renderer/animations/tests"
67
67
  ss.header_dir = "react/renderer/animations"
68
68
  end
69
-
69
+
70
70
  s.subspec "animationbackend" do |ss|
71
71
  ss.source_files = podspec_sources("react/renderer/animationbackend/**/*.{m,mm,cpp,h}", "react/renderer/animationbackend/**/*.{h}")
72
72
  ss.header_dir = "react/renderer/animationbackend"
@@ -179,6 +179,12 @@ Pod::Spec.new do |s|
179
179
  sss.exclude_files = "react/renderer/observers/events/tests"
180
180
  sss.header_dir = "react/renderer/observers/events"
181
181
  end
182
+
183
+ ss.subspec "intersection" do |sss|
184
+ sss.source_files = podspec_sources("react/renderer/observers/intersection/**/*.{m,mm,cpp,h}", "react/renderer/observers/intersection/**/*.h")
185
+ sss.exclude_files = "react/renderer/observers/intersection/tests"
186
+ sss.header_dir = "react/renderer/observers/intersection"
187
+ end
182
188
  end
183
189
 
184
190
  s.subspec "templateprocessor" do |ss|
@@ -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
 
@@ -22,7 +22,7 @@ constexpr struct {
22
22
  int32_t Major = 0;
23
23
  int32_t Minor = 83;
24
24
  int32_t Patch = 0;
25
- std::string_view Prerelease = "rc.0";
25
+ std::string_view Prerelease = "rc.2";
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
@@ -10,6 +10,7 @@
10
10
 
11
11
  #ifdef REACT_NATIVE_DEBUGGER_ENABLED
12
12
  #include "InspectorFlags.h"
13
+ #include "InspectorInterfaces.h"
13
14
  #include "NetworkIOAgent.h"
14
15
  #include "SessionState.h"
15
16
  #include "TracingAgent.h"
@@ -145,6 +146,19 @@ class HostAgent::Impl final {
145
146
  }
146
147
  if (InspectorFlags::getInstance().getNetworkInspectionEnabled()) {
147
148
  if (req.method == "Network.enable") {
149
+ auto& inspector = getInspectorInstance();
150
+ if (inspector.getSystemState().registeredPagesCount > 1) {
151
+ frontendChannel_(
152
+ cdp::jsonError(
153
+ req.id,
154
+ cdp::ErrorCode::InternalError,
155
+ "The Network domain is unavailable when multiple React Native hosts are registered."));
156
+ return {
157
+ .isFinishedHandlingRequest = true,
158
+ .shouldSendOKResponse = false,
159
+ };
160
+ }
161
+
148
162
  sessionState_.isNetworkDomainEnabled = true;
149
163
 
150
164
  return {
@@ -216,6 +230,11 @@ class HostAgent::Impl final {
216
230
  cdp::jsonNotification(
217
231
  "ReactNativeApplication.metadataUpdated",
218
232
  createHostMetadataPayload(hostMetadata_)));
233
+ auto& inspector = getInspectorInstance();
234
+ bool isSingleHost = inspector.getSystemState().registeredPagesCount <= 1;
235
+ if (!isSingleHost) {
236
+ emitSystemStateChanged(isSingleHost);
237
+ }
219
238
 
220
239
  auto stashedTraceRecording =
221
240
  targetController_.getDelegate()
@@ -374,6 +393,15 @@ class HostAgent::Impl final {
374
393
  tracingAgent_.emitExternalTraceRecording(std::move(traceRecording));
375
394
  }
376
395
 
396
+ void emitSystemStateChanged(bool isSingleHost) {
397
+ frontendChannel_(
398
+ cdp::jsonNotification(
399
+ "ReactNativeApplication.systemStateChanged",
400
+ folly::dynamic::object("isSingleHost", isSingleHost)));
401
+
402
+ frontendChannel_(cdp::jsonNotification("Network.disable"));
403
+ }
404
+
377
405
  private:
378
406
  enum class FuseboxClientType { Unknown, Fusebox, NonFusebox };
379
407
 
@@ -480,6 +508,7 @@ class HostAgent::Impl final {
480
508
  }
481
509
  void emitExternalTraceRecording(tracing::TraceRecordingState traceRecording) {
482
510
  }
511
+ void emitSystemStateChanged(bool isSingleHost) {}
483
512
  };
484
513
 
485
514
  #endif // REACT_NATIVE_DEBUGGER_ENABLED
@@ -519,6 +548,10 @@ void HostAgent::emitExternalTraceRecording(
519
548
  impl_->emitExternalTraceRecording(std::move(traceRecording));
520
549
  }
521
550
 
551
+ void HostAgent::emitSystemStateChanged(bool isSingleHost) const {
552
+ impl_->emitSystemStateChanged(isSingleHost);
553
+ }
554
+
522
555
  #pragma mark - Tracing
523
556
 
524
557
  HostTracingAgent::HostTracingAgent(tracing::TraceRecordingState& state)