react-native 0.83.0-nightly-20251104-502efe1cc → 0.83.0-rc.1

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 (51) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +0 -3
  3. package/React/Base/RCTVersion.m +1 -1
  4. package/React/CoreModules/React-CoreModules.podspec +1 -0
  5. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +16 -0
  6. package/React/Runtime/React-RCTRuntime.podspec +1 -0
  7. package/ReactAndroid/gradle.properties +1 -1
  8. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -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/java/com/facebook/react/uimanager/JSTouchDispatcher.kt +2 -1
  16. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/PointerEvent.kt +4 -5
  17. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
  18. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
  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 +12 -0
  30. package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +55 -3
  31. package/ReactCommon/jsinspector-modern/tracing/React-jsinspectortracing.podspec +4 -0
  32. package/ReactCommon/jsitooling/React-jsitooling.podspec +1 -0
  33. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
  34. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
  35. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +65 -29
  36. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
  37. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
  38. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
  39. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
  40. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
  41. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
  42. package/ReactCommon/react/utils/React-utils.podspec +3 -1
  43. package/package.json +10 -9
  44. package/scripts/cocoapods/rncore.rb +3 -2
  45. package/sdks/.hermesv1version +1 -0
  46. package/sdks/.hermesversion +1 -0
  47. package/sdks/hermes-engine/version.properties +2 -2
  48. package/src/private/featureflags/ReactNativeFeatureFlags.js +11 -1
  49. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
  50. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +0 -48
  51. package/ReactCommon/jsinspector-modern/tests/TracingTest.h +0 -82
@@ -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 = 'nightly-20251104-502efe1cc';
32
+ static prerelease: string | null = 'rc.1';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -727,9 +727,6 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
727
727
  return @"Join";
728
728
  case UIReturnKeyEmergencyCall:
729
729
  return @"Emergency Call";
730
- case UIReturnKeyDefault:
731
- case UIReturnKeyContinue:
732
- case UIReturnKeyDone:
733
730
  default:
734
731
  return @"Done";
735
732
  }
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(83),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20251104-502efe1cc",
27
+ RCTVersionPrerelease: @"rc.1",
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)
@@ -278,6 +278,7 @@ protected:
278
278
  methodMap_["enableVirtualViewWindowFocusDetection"] = MethodMetadata {.argCount = 0, .invoker = __enableVirtualViewWindowFocusDetection};
279
279
  methodMap_["enableWebPerformanceAPIsByDefault"] = MethodMetadata {.argCount = 0, .invoker = __enableWebPerformanceAPIsByDefault};
280
280
  methodMap_["fixMappingOfEventPrioritiesBetweenFabricAndReact"] = MethodMetadata {.argCount = 0, .invoker = __fixMappingOfEventPrioritiesBetweenFabricAndReact};
281
+ methodMap_["fuseboxAssertSingleHostState"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxAssertSingleHostState};
281
282
  methodMap_["fuseboxEnabledRelease"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxEnabledRelease};
282
283
  methodMap_["fuseboxNetworkInspectionEnabled"] = MethodMetadata {.argCount = 0, .invoker = __fuseboxNetworkInspectionEnabled};
283
284
  methodMap_["hideOffscreenVirtualViewsOnIOS"] = MethodMetadata {.argCount = 0, .invoker = __hideOffscreenVirtualViewsOnIOS};
@@ -289,6 +290,7 @@ protected:
289
290
  methodMap_["shouldPressibilityUseW3CPointerEventsForHover"] = MethodMetadata {.argCount = 0, .invoker = __shouldPressibilityUseW3CPointerEventsForHover};
290
291
  methodMap_["shouldTriggerResponderTransferOnScrollAndroid"] = MethodMetadata {.argCount = 0, .invoker = __shouldTriggerResponderTransferOnScrollAndroid};
291
292
  methodMap_["skipActivityIdentityAssertionOnHostPause"] = MethodMetadata {.argCount = 0, .invoker = __skipActivityIdentityAssertionOnHostPause};
293
+ methodMap_["sweepActiveTouchOnChildNativeGesturesAndroid"] = MethodMetadata {.argCount = 0, .invoker = __sweepActiveTouchOnChildNativeGesturesAndroid};
292
294
  methodMap_["traceTurboModulePromiseRejectionsOnAndroid"] = MethodMetadata {.argCount = 0, .invoker = __traceTurboModulePromiseRejectionsOnAndroid};
293
295
  methodMap_["updateRuntimeShadowNodeReferencesOnCommit"] = MethodMetadata {.argCount = 0, .invoker = __updateRuntimeShadowNodeReferencesOnCommit};
294
296
  methodMap_["useAlwaysAvailableJSErrorHandling"] = MethodMetadata {.argCount = 0, .invoker = __useAlwaysAvailableJSErrorHandling};
@@ -694,6 +696,13 @@ private:
694
696
  return bridging::callFromJs<bool>(rt, &T::fixMappingOfEventPrioritiesBetweenFabricAndReact, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
695
697
  }
696
698
 
699
+ static jsi::Value __fuseboxAssertSingleHostState(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
700
+ static_assert(
701
+ bridging::getParameterCount(&T::fuseboxAssertSingleHostState) == 1,
702
+ "Expected fuseboxAssertSingleHostState(...) to have 1 parameters");
703
+ return bridging::callFromJs<bool>(rt, &T::fuseboxAssertSingleHostState, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
704
+ }
705
+
697
706
  static jsi::Value __fuseboxEnabledRelease(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
698
707
  static_assert(
699
708
  bridging::getParameterCount(&T::fuseboxEnabledRelease) == 1,
@@ -771,6 +780,13 @@ private:
771
780
  return bridging::callFromJs<bool>(rt, &T::skipActivityIdentityAssertionOnHostPause, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
772
781
  }
773
782
 
783
+ static jsi::Value __sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
784
+ static_assert(
785
+ bridging::getParameterCount(&T::sweepActiveTouchOnChildNativeGesturesAndroid) == 1,
786
+ "Expected sweepActiveTouchOnChildNativeGesturesAndroid(...) to have 1 parameters");
787
+ return bridging::callFromJs<bool>(rt, &T::sweepActiveTouchOnChildNativeGesturesAndroid, static_cast<NativeReactNativeFeatureFlagsCxxSpec*>(&turboModule)->jsInvoker_, static_cast<T*>(&turboModule));
788
+ }
789
+
774
790
  static jsi::Value __traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* /*args*/, size_t /*count*/) {
775
791
  static_assert(
776
792
  bridging::getParameterCount(&T::traceTurboModulePromiseRejectionsOnAndroid) == 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-nightly-20251104-502efe1cc
1
+ VERSION_NAME=0.83.0-rc.1
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<<15ede8025e516f2bdc0329efe49f4a62>>
7
+ * @generated SignedSource<<09d1f1bdf5e156afcd7ce15f73ca1c3b>>
8
8
  */
9
9
 
10
10
  /**
@@ -354,6 +354,12 @@ public object ReactNativeFeatureFlags {
354
354
  @JvmStatic
355
355
  public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean = accessor.fixMappingOfEventPrioritiesBetweenFabricAndReact()
356
356
 
357
+ /**
358
+ * 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`.
359
+ */
360
+ @JvmStatic
361
+ public fun fuseboxAssertSingleHostState(): Boolean = accessor.fuseboxAssertSingleHostState()
362
+
357
363
  /**
358
364
  * 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
365
  */
@@ -420,6 +426,12 @@ public object ReactNativeFeatureFlags {
420
426
  @JvmStatic
421
427
  public fun skipActivityIdentityAssertionOnHostPause(): Boolean = accessor.skipActivityIdentityAssertionOnHostPause()
422
428
 
429
+ /**
430
+ * A flag to tell Fabric to sweep active touches from JSTouchDispatcher in Android when a child native gesture is started.
431
+ */
432
+ @JvmStatic
433
+ public fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean = accessor.sweepActiveTouchOnChildNativeGesturesAndroid()
434
+
423
435
  /**
424
436
  * Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause.
425
437
  */
@@ -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<<c62242068e649aa652b1a8f700bf0ab3>>
7
+ * @generated SignedSource<<017aba8e549dc289c27bb4fa93e6d038>>
8
8
  */
9
9
 
10
10
  /**
@@ -74,6 +74,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
74
74
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
75
75
  private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
76
76
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
77
+ private var fuseboxAssertSingleHostStateCache: Boolean? = null
77
78
  private var fuseboxEnabledReleaseCache: Boolean? = null
78
79
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
79
80
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
@@ -85,6 +86,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
85
86
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
86
87
  private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
87
88
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
89
+ private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
88
90
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
89
91
  private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
90
92
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
@@ -589,6 +591,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
589
591
  return cached
590
592
  }
591
593
 
594
+ override fun fuseboxAssertSingleHostState(): Boolean {
595
+ var cached = fuseboxAssertSingleHostStateCache
596
+ if (cached == null) {
597
+ cached = ReactNativeFeatureFlagsCxxInterop.fuseboxAssertSingleHostState()
598
+ fuseboxAssertSingleHostStateCache = cached
599
+ }
600
+ return cached
601
+ }
602
+
592
603
  override fun fuseboxEnabledRelease(): Boolean {
593
604
  var cached = fuseboxEnabledReleaseCache
594
605
  if (cached == null) {
@@ -688,6 +699,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
688
699
  return cached
689
700
  }
690
701
 
702
+ override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean {
703
+ var cached = sweepActiveTouchOnChildNativeGesturesAndroidCache
704
+ if (cached == null) {
705
+ cached = ReactNativeFeatureFlagsCxxInterop.sweepActiveTouchOnChildNativeGesturesAndroid()
706
+ sweepActiveTouchOnChildNativeGesturesAndroidCache = cached
707
+ }
708
+ return cached
709
+ }
710
+
691
711
  override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean {
692
712
  var cached = traceTurboModulePromiseRejectionsOnAndroidCache
693
713
  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<<9a1bdbc2a3ae299433e690b254d7bf0a>>
7
+ * @generated SignedSource<<278f3853a98e1dd72b66ad6168e11686>>
8
8
  */
9
9
 
10
10
  /**
@@ -136,6 +136,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
136
136
 
137
137
  @DoNotStrip @JvmStatic public external fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
138
138
 
139
+ @DoNotStrip @JvmStatic public external fun fuseboxAssertSingleHostState(): Boolean
140
+
139
141
  @DoNotStrip @JvmStatic public external fun fuseboxEnabledRelease(): Boolean
140
142
 
141
143
  @DoNotStrip @JvmStatic public external fun fuseboxNetworkInspectionEnabled(): Boolean
@@ -158,6 +160,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
158
160
 
159
161
  @DoNotStrip @JvmStatic public external fun skipActivityIdentityAssertionOnHostPause(): Boolean
160
162
 
163
+ @DoNotStrip @JvmStatic public external fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
164
+
161
165
  @DoNotStrip @JvmStatic public external fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
162
166
 
163
167
  @DoNotStrip @JvmStatic public external fun updateRuntimeShadowNodeReferencesOnCommit(): 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<<0d78a0405db2a10c14bd69aaf2a3708a>>
7
+ * @generated SignedSource<<31da0143bec4eacc9884c950970f0a25>>
8
8
  */
9
9
 
10
10
  /**
@@ -131,6 +131,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
131
131
 
132
132
  override fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean = false
133
133
 
134
+ override fun fuseboxAssertSingleHostState(): Boolean = true
135
+
134
136
  override fun fuseboxEnabledRelease(): Boolean = false
135
137
 
136
138
  override fun fuseboxNetworkInspectionEnabled(): Boolean = false
@@ -153,6 +155,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
153
155
 
154
156
  override fun skipActivityIdentityAssertionOnHostPause(): Boolean = false
155
157
 
158
+ override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean = true
159
+
156
160
  override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean = false
157
161
 
158
162
  override fun updateRuntimeShadowNodeReferencesOnCommit(): Boolean = false
@@ -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<<98f16fd1bb180b247ee87bb24b10120e>>
7
+ * @generated SignedSource<<14a5680355bb8c42e39a67edfa6a8974>>
8
8
  */
9
9
 
10
10
  /**
@@ -78,6 +78,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
78
78
  private var enableVirtualViewWindowFocusDetectionCache: Boolean? = null
79
79
  private var enableWebPerformanceAPIsByDefaultCache: Boolean? = null
80
80
  private var fixMappingOfEventPrioritiesBetweenFabricAndReactCache: Boolean? = null
81
+ private var fuseboxAssertSingleHostStateCache: Boolean? = null
81
82
  private var fuseboxEnabledReleaseCache: Boolean? = null
82
83
  private var fuseboxNetworkInspectionEnabledCache: Boolean? = null
83
84
  private var hideOffscreenVirtualViewsOnIOSCache: Boolean? = null
@@ -89,6 +90,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
89
90
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
90
91
  private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
91
92
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
93
+ private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
92
94
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
93
95
  private var updateRuntimeShadowNodeReferencesOnCommitCache: Boolean? = null
94
96
  private var useAlwaysAvailableJSErrorHandlingCache: Boolean? = null
@@ -647,6 +649,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
647
649
  return cached
648
650
  }
649
651
 
652
+ override fun fuseboxAssertSingleHostState(): Boolean {
653
+ var cached = fuseboxAssertSingleHostStateCache
654
+ if (cached == null) {
655
+ cached = currentProvider.fuseboxAssertSingleHostState()
656
+ accessedFeatureFlags.add("fuseboxAssertSingleHostState")
657
+ fuseboxAssertSingleHostStateCache = cached
658
+ }
659
+ return cached
660
+ }
661
+
650
662
  override fun fuseboxEnabledRelease(): Boolean {
651
663
  var cached = fuseboxEnabledReleaseCache
652
664
  if (cached == null) {
@@ -757,6 +769,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
757
769
  return cached
758
770
  }
759
771
 
772
+ override fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean {
773
+ var cached = sweepActiveTouchOnChildNativeGesturesAndroidCache
774
+ if (cached == null) {
775
+ cached = currentProvider.sweepActiveTouchOnChildNativeGesturesAndroid()
776
+ accessedFeatureFlags.add("sweepActiveTouchOnChildNativeGesturesAndroid")
777
+ sweepActiveTouchOnChildNativeGesturesAndroidCache = cached
778
+ }
779
+ return cached
780
+ }
781
+
760
782
  override fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean {
761
783
  var cached = traceTurboModulePromiseRejectionsOnAndroidCache
762
784
  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<<c810245ced5a83806ace12572e112a70>>
7
+ * @generated SignedSource<<5a348c354bb6dd2ddfbc869a9e2f0dbe>>
8
8
  */
9
9
 
10
10
  /**
@@ -131,6 +131,8 @@ public interface ReactNativeFeatureFlagsProvider {
131
131
 
132
132
  @DoNotStrip public fun fixMappingOfEventPrioritiesBetweenFabricAndReact(): Boolean
133
133
 
134
+ @DoNotStrip public fun fuseboxAssertSingleHostState(): Boolean
135
+
134
136
  @DoNotStrip public fun fuseboxEnabledRelease(): Boolean
135
137
 
136
138
  @DoNotStrip public fun fuseboxNetworkInspectionEnabled(): Boolean
@@ -153,6 +155,8 @@ public interface ReactNativeFeatureFlagsProvider {
153
155
 
154
156
  @DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean
155
157
 
158
+ @DoNotStrip public fun sweepActiveTouchOnChildNativeGesturesAndroid(): Boolean
159
+
156
160
  @DoNotStrip public fun traceTurboModulePromiseRejectionsOnAndroid(): Boolean
157
161
 
158
162
  @DoNotStrip public fun updateRuntimeShadowNodeReferencesOnCommit(): 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 "nightly-20251104-502efe1cc"
18
+ "prerelease" to "rc.1"
19
19
  )
20
20
  }
@@ -14,6 +14,7 @@ import com.facebook.infer.annotation.Assertions
14
14
  import com.facebook.react.bridge.ReactContext
15
15
  import com.facebook.react.common.ReactConstants
16
16
  import com.facebook.react.common.annotations.UnstableReactNativeAPI
17
+ import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
17
18
  import com.facebook.react.uimanager.common.UIManagerType
18
19
  import com.facebook.react.uimanager.events.EventDispatcher
19
20
  import com.facebook.react.uimanager.events.TouchEvent
@@ -58,7 +59,7 @@ public class JSTouchDispatcher(private val viewGroup: ViewGroup) {
58
59
  dispatchCancelEvent(androidEvent, eventDispatcher)
59
60
  childIsHandlingNativeGesture = true
60
61
 
61
- if (targetTag != -1) {
62
+ if (targetTag != -1 && ReactNativeFeatureFlags.sweepActiveTouchOnChildNativeGesturesAndroid()) {
62
63
  val surfaceId = UIManagerHelper.getSurfaceId(viewGroup)
63
64
  sweepActiveTouchForTag(surfaceId, targetTag, reactContext)
64
65
  }
@@ -29,7 +29,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
29
29
  private lateinit var _eventName: String
30
30
  private var coalescingKey = UNSET_COALESCING_KEY
31
31
  private var pointersEventData: List<WritableMap>? = null
32
- private var eventState: PointerEventState? = null
32
+ private lateinit var eventState: PointerEventState
33
33
 
34
34
  private fun init(
35
35
  eventName: String,
@@ -84,7 +84,7 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
84
84
  return@EventAnimationDriverMatchSpec false
85
85
  }
86
86
  if (isBubblingEvent(eventName)) {
87
- for (viewTarget in checkNotNull(eventState).hitPathForActivePointer) {
87
+ for (viewTarget in eventState.hitPathForActivePointer) {
88
88
  if (viewTarget.getViewId() == viewTag) {
89
89
  return@EventAnimationDriverMatchSpec true
90
90
  }
@@ -97,10 +97,10 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
97
97
  }
98
98
 
99
99
  override fun onDispose() {
100
- eventState = null
101
100
  pointersEventData = null
101
+ val motionEvent = motionEvent
102
+ this.motionEvent = null
102
103
  motionEvent?.recycle()
103
- motionEvent = null
104
104
 
105
105
  // Either `this` is in the event pool, or motionEvent
106
106
  // is null. It is in theory not possible for a PointerEvent to
@@ -137,7 +137,6 @@ internal class PointerEvent private constructor() : Event<PointerEvent>() {
137
137
  val pointerEvent = Arguments.createMap()
138
138
  val motionEvent = checkNotNull(motionEvent)
139
139
  val pointerId = motionEvent.getPointerId(index)
140
- val eventState = checkNotNull(eventState)
141
140
 
142
141
  // https://www.w3.org/TR/pointerevents/#pointerevent-interface
143
142
  pointerEvent.putDouble("pointerId", pointerId.toDouble())
@@ -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<<b83a74b94f72ed85c7a5323bb56a38a0>>
7
+ * @generated SignedSource<<5b2d44dcf36386f86f26c694d3f00229>>
8
8
  */
9
9
 
10
10
  /**
@@ -363,6 +363,12 @@ class ReactNativeFeatureFlagsJavaProvider
363
363
  return method(javaProvider_);
364
364
  }
365
365
 
366
+ bool fuseboxAssertSingleHostState() override {
367
+ static const auto method =
368
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxAssertSingleHostState");
369
+ return method(javaProvider_);
370
+ }
371
+
366
372
  bool fuseboxEnabledRelease() override {
367
373
  static const auto method =
368
374
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("fuseboxEnabledRelease");
@@ -429,6 +435,12 @@ class ReactNativeFeatureFlagsJavaProvider
429
435
  return method(javaProvider_);
430
436
  }
431
437
 
438
+ bool sweepActiveTouchOnChildNativeGesturesAndroid() override {
439
+ static const auto method =
440
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("sweepActiveTouchOnChildNativeGesturesAndroid");
441
+ return method(javaProvider_);
442
+ }
443
+
432
444
  bool traceTurboModulePromiseRejectionsOnAndroid() override {
433
445
  static const auto method =
434
446
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("traceTurboModulePromiseRejectionsOnAndroid");
@@ -805,6 +817,11 @@ bool JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabri
805
817
  return ReactNativeFeatureFlags::fixMappingOfEventPrioritiesBetweenFabricAndReact();
806
818
  }
807
819
 
820
+ bool JReactNativeFeatureFlagsCxxInterop::fuseboxAssertSingleHostState(
821
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
822
+ return ReactNativeFeatureFlags::fuseboxAssertSingleHostState();
823
+ }
824
+
808
825
  bool JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease(
809
826
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
810
827
  return ReactNativeFeatureFlags::fuseboxEnabledRelease();
@@ -860,6 +877,11 @@ bool JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPaus
860
877
  return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
861
878
  }
862
879
 
880
+ bool JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid(
881
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
882
+ return ReactNativeFeatureFlags::sweepActiveTouchOnChildNativeGesturesAndroid();
883
+ }
884
+
863
885
  bool JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid(
864
886
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
865
887
  return ReactNativeFeatureFlags::traceTurboModulePromiseRejectionsOnAndroid();
@@ -1138,6 +1160,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1138
1160
  makeNativeMethod(
1139
1161
  "fixMappingOfEventPrioritiesBetweenFabricAndReact",
1140
1162
  JReactNativeFeatureFlagsCxxInterop::fixMappingOfEventPrioritiesBetweenFabricAndReact),
1163
+ makeNativeMethod(
1164
+ "fuseboxAssertSingleHostState",
1165
+ JReactNativeFeatureFlagsCxxInterop::fuseboxAssertSingleHostState),
1141
1166
  makeNativeMethod(
1142
1167
  "fuseboxEnabledRelease",
1143
1168
  JReactNativeFeatureFlagsCxxInterop::fuseboxEnabledRelease),
@@ -1171,6 +1196,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1171
1196
  makeNativeMethod(
1172
1197
  "skipActivityIdentityAssertionOnHostPause",
1173
1198
  JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause),
1199
+ makeNativeMethod(
1200
+ "sweepActiveTouchOnChildNativeGesturesAndroid",
1201
+ JReactNativeFeatureFlagsCxxInterop::sweepActiveTouchOnChildNativeGesturesAndroid),
1174
1202
  makeNativeMethod(
1175
1203
  "traceTurboModulePromiseRejectionsOnAndroid",
1176
1204
  JReactNativeFeatureFlagsCxxInterop::traceTurboModulePromiseRejectionsOnAndroid),
@@ -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<<6238eb0739467af8477aa8fa79a023bf>>
7
+ * @generated SignedSource<<5a03db93d78fc1b14283ca3dc92db207>>
8
8
  */
9
9
 
10
10
  /**
@@ -192,6 +192,9 @@ class JReactNativeFeatureFlagsCxxInterop
192
192
  static bool fixMappingOfEventPrioritiesBetweenFabricAndReact(
193
193
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
194
194
 
195
+ static bool fuseboxAssertSingleHostState(
196
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
197
+
195
198
  static bool fuseboxEnabledRelease(
196
199
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
197
200
 
@@ -225,6 +228,9 @@ class JReactNativeFeatureFlagsCxxInterop
225
228
  static bool skipActivityIdentityAssertionOnHostPause(
226
229
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
227
230
 
231
+ static bool sweepActiveTouchOnChildNativeGesturesAndroid(
232
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
233
+
228
234
  static bool traceTurboModulePromiseRejectionsOnAndroid(
229
235
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
230
236
 
@@ -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 = "nightly-20251104-502efe1cc";
25
+ std::string_view Prerelease = "rc.1";
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)
@@ -79,6 +79,12 @@ class HostAgent final {
79
79
  */
80
80
  void emitExternalTraceRecording(tracing::TraceRecordingState traceRecording) const;
81
81
 
82
+ /**
83
+ * Emits a system state changed event when the number of ReactHost instances
84
+ * changes.
85
+ */
86
+ void emitSystemStateChanged(bool isSingleHost) const;
87
+
82
88
  private:
83
89
  // We use the private implementation idiom to ensure this class has the same
84
90
  // layout regardless of whether REACT_NATIVE_DEBUGGER_ENABLED is defined. The
@@ -320,6 +320,11 @@ class JSINSPECTOR_EXPORT HostTarget : public EnableExecutorFromThis<HostTarget>
320
320
  */
321
321
  void emitTraceRecordingForFirstFuseboxClient(tracing::TraceRecordingState traceRecording) const;
322
322
 
323
+ /**
324
+ * Emits a system state changed event to all active sessions.
325
+ */
326
+ void emitSystemStateChanged(bool isSingleHost) const;
327
+
323
328
  private:
324
329
  /**
325
330
  * Constructs a new HostTarget.
@@ -17,6 +17,10 @@ InspectorFlags& InspectorFlags::getInstance() {
17
17
  return instance;
18
18
  }
19
19
 
20
+ bool InspectorFlags::getAssertSingleHostState() const {
21
+ return loadFlagsAndAssertUnchanged().assertSingleHostState;
22
+ }
23
+
20
24
  bool InspectorFlags::getFuseboxEnabled() const {
21
25
  if (fuseboxDisabledForTest_) {
22
26
  return false;
@@ -48,6 +52,8 @@ void InspectorFlags::dangerouslyDisableFuseboxForTest() {
48
52
  const InspectorFlags::Values& InspectorFlags::loadFlagsAndAssertUnchanged()
49
53
  const {
50
54
  InspectorFlags::Values newValues = {
55
+ .assertSingleHostState =
56
+ ReactNativeFeatureFlags::fuseboxAssertSingleHostState(),
51
57
  .fuseboxEnabled =
52
58
  #if defined(REACT_NATIVE_DEBUGGER_ENABLED)
53
59
  true,