react-native 0.83.0-nightly-20251007-854268275 → 0.83.0-nightly-20251008-31bff4e09

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 (47) hide show
  1. package/Libraries/Animated/nodes/AnimatedColor.js +26 -10
  2. package/Libraries/Core/ReactNativeVersion.js +1 -1
  3. package/React/Base/RCTBridgeModule.h +2 -2
  4. package/React/Base/RCTVersion.m +1 -1
  5. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +6 -0
  6. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +9 -0
  7. package/ReactAndroid/api/ReactAndroid.api +20 -0
  8. package/ReactAndroid/gradle.properties +1 -1
  9. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  16. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +10 -0
  17. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +3 -0
  18. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -1
  19. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +45 -16
  20. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +3 -0
  21. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
  22. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
  23. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  24. package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeAgentDelegate.cpp +3 -4
  25. package/ReactCommon/jsinspector-modern/HostAgent.cpp +19 -0
  26. package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +4 -4
  27. package/ReactCommon/jsinspector-modern/SessionState.h +1 -0
  28. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
  29. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
  30. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +37 -19
  31. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
  33. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
  34. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
  35. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +7 -2
  36. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +4 -2
  37. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +8 -7
  38. package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h +5 -1
  39. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +37 -12
  40. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +7 -14
  41. package/package.json +8 -8
  42. package/sdks/hermesc/osx-bin/hermes +0 -0
  43. package/sdks/hermesc/osx-bin/hermesc +0 -0
  44. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  45. package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
  46. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
  47. package/types_generated/Libraries/Animated/nodes/AnimatedColor.d.ts +5 -1
@@ -110,6 +110,27 @@ function isRgbaAnimatedValue(value: any): boolean {
110
110
  );
111
111
  }
112
112
 
113
+ export function getRgbaValueAndNativeColor(
114
+ value: RgbaValue | ColorValue,
115
+ ): $ReadOnly<{
116
+ rgbaValue: RgbaValue,
117
+ nativeColor?: NativeColorValue,
118
+ }> {
119
+ const processedColor: RgbaValue | NativeColorValue =
120
+ // $FlowFixMe[incompatible-type] - Type is verified above
121
+ processColor((value: ColorValue | RgbaValue)) ?? defaultColor;
122
+ if (isRgbaValue(processedColor)) {
123
+ // $FlowFixMe[incompatible-type] - Type is verified above
124
+ return {rgbaValue: (processedColor: RgbaValue)};
125
+ } else {
126
+ return {
127
+ // $FlowFixMe[incompatible-type] - Type is verified above
128
+ nativeColor: (processedColor: NativeColorValue),
129
+ rgbaValue: defaultColor,
130
+ };
131
+ }
132
+ }
133
+
113
134
  export default class AnimatedColor extends AnimatedWithChildren {
114
135
  r: AnimatedValue;
115
136
  g: AnimatedValue;
@@ -132,18 +153,13 @@ export default class AnimatedColor extends AnimatedWithChildren {
132
153
  this.b = rgbaAnimatedValue.b;
133
154
  this.a = rgbaAnimatedValue.a;
134
155
  } else {
135
- const processedColor: RgbaValue | NativeColorValue =
136
- // $FlowFixMe[incompatible-type] - Type is verified above
137
- processColor((value: ColorValue | RgbaValue)) ?? defaultColor;
138
- let initColor: RgbaValue = defaultColor;
139
- if (isRgbaValue(processedColor)) {
156
+ const {rgbaValue: initColor, nativeColor} = getRgbaValueAndNativeColor(
140
157
  // $FlowFixMe[incompatible-type] - Type is verified above
141
- initColor = (processedColor: RgbaValue);
142
- } else {
143
- // $FlowFixMe[incompatible-type] - Type is verified above
144
- this.nativeColor = (processedColor: NativeColorValue);
158
+ (value: ColorValue | RgbaValue),
159
+ );
160
+ if (nativeColor) {
161
+ this.nativeColor = nativeColor;
145
162
  }
146
-
147
163
  this.r = new AnimatedValue(initColor.r);
148
164
  this.g = new AnimatedValue(initColor.g);
149
165
  this.b = new AnimatedValue(initColor.b);
@@ -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-20251007-854268275';
32
+ static prerelease: string | null = 'nightly-20251008-31bff4e09';
33
33
 
34
34
  static getVersionString(): string {
35
35
  return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
@@ -69,7 +69,7 @@ RCT_EXTERN_C_END
69
69
  * will be used as the JS module name. If omitted, the JS module name will
70
70
  * match the Objective-C class name.
71
71
  */
72
- #ifndef RCT_REMOVE_LEGACY_ARCH
72
+ #ifndef RCT_DISABLE_STATIC_MODULE_REGISTRATION
73
73
  #define RCT_EXPORT_MODULE(js_name) \
74
74
  RCT_EXTERN void RCTRegisterModule(Class); \
75
75
  +(NSString *)moduleName \
@@ -90,7 +90,7 @@ RCT_EXTERN_C_END
90
90
  return @ #js_name; \
91
91
  }
92
92
 
93
- #endif // RCT_REMOVE_LEGACY_ARCH
93
+ #endif // RCT_DISABLE_STATIC_MODULE_REGISTRATION
94
94
 
95
95
  /**
96
96
  * Same as RCT_EXPORT_MODULE, but uses __attribute__((constructor)) for module
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(83),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"nightly-20251007-854268275",
27
+ RCTVersionPrerelease: @"nightly-20251008-31bff4e09",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -382,6 +382,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldP
382
382
  rt
383
383
  );
384
384
  }
385
+ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldTriggerResponderTransferOnScrollAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
386
+ return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->shouldTriggerResponderTransferOnScrollAndroid(
387
+ rt
388
+ );
389
+ }
385
390
  static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
386
391
  return static_cast<NativeReactNativeFeatureFlagsCxxSpecJSI *>(&turboModule)->skipActivityIdentityAssertionOnHostPause(
387
392
  rt
@@ -535,6 +540,7 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI
535
540
  methodMap_["preparedTextCacheSize"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preparedTextCacheSize};
536
541
  methodMap_["preventShadowTreeCommitExhaustion"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_preventShadowTreeCommitExhaustion};
537
542
  methodMap_["shouldPressibilityUseW3CPointerEventsForHover"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldPressibilityUseW3CPointerEventsForHover};
543
+ methodMap_["shouldTriggerResponderTransferOnScrollAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_shouldTriggerResponderTransferOnScrollAndroid};
538
544
  methodMap_["skipActivityIdentityAssertionOnHostPause"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_skipActivityIdentityAssertionOnHostPause};
539
545
  methodMap_["sweepActiveTouchOnChildNativeGesturesAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_sweepActiveTouchOnChildNativeGesturesAndroid};
540
546
  methodMap_["traceTurboModulePromiseRejectionsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_traceTurboModulePromiseRejectionsOnAndroid};
@@ -386,6 +386,7 @@ public:
386
386
  virtual double preparedTextCacheSize(jsi::Runtime &rt) = 0;
387
387
  virtual bool preventShadowTreeCommitExhaustion(jsi::Runtime &rt) = 0;
388
388
  virtual bool shouldPressibilityUseW3CPointerEventsForHover(jsi::Runtime &rt) = 0;
389
+ virtual bool shouldTriggerResponderTransferOnScrollAndroid(jsi::Runtime &rt) = 0;
389
390
  virtual bool skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt) = 0;
390
391
  virtual bool sweepActiveTouchOnChildNativeGesturesAndroid(jsi::Runtime &rt) = 0;
391
392
  virtual bool traceTurboModulePromiseRejectionsOnAndroid(jsi::Runtime &rt) = 0;
@@ -914,6 +915,14 @@ private:
914
915
  return bridging::callFromJs<bool>(
915
916
  rt, &T::shouldPressibilityUseW3CPointerEventsForHover, jsInvoker_, instance_);
916
917
  }
918
+ bool shouldTriggerResponderTransferOnScrollAndroid(jsi::Runtime &rt) override {
919
+ static_assert(
920
+ bridging::getParameterCount(&T::shouldTriggerResponderTransferOnScrollAndroid) == 1,
921
+ "Expected shouldTriggerResponderTransferOnScrollAndroid(...) to have 1 parameters");
922
+
923
+ return bridging::callFromJs<bool>(
924
+ rt, &T::shouldTriggerResponderTransferOnScrollAndroid, jsInvoker_, instance_);
925
+ }
917
926
  bool skipActivityIdentityAssertionOnHostPause(jsi::Runtime &rt) override {
918
927
  static_assert(
919
928
  bridging::getParameterCount(&T::skipActivityIdentityAssertionOnHostPause) == 1,
@@ -5636,6 +5636,7 @@ public class com/facebook/react/views/scroll/ReactHorizontalScrollView : android
5636
5636
  public fun setOverflowInset (IIII)V
5637
5637
  public fun setPagingEnabled (Z)V
5638
5638
  public fun setPointerEvents (Lcom/facebook/react/uimanager/PointerEvents;)V
5639
+ public fun setReactScrollViewScrollState (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;)V
5639
5640
  public fun setRemoveClippedSubviews (Z)V
5640
5641
  public fun setScrollEnabled (Z)V
5641
5642
  public fun setScrollEventThrottle (I)V
@@ -5775,8 +5776,10 @@ public class com/facebook/react/views/scroll/ReactScrollView : android/widget/Sc
5775
5776
  public fun setOverflowInset (IIII)V
5776
5777
  public fun setPagingEnabled (Z)V
5777
5778
  public fun setPointerEvents (Lcom/facebook/react/uimanager/PointerEvents;)V
5779
+ public fun setReactScrollViewScrollState (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;)V
5778
5780
  public fun setRemoveClippedSubviews (Z)V
5779
5781
  public fun setScrollAwayTopPaddingEnabledUnstable (I)V
5782
+ public fun setScrollAwayTopPaddingEnabledUnstable (IZ)V
5780
5783
  public fun setScrollEnabled (Z)V
5781
5784
  public fun setScrollEventThrottle (I)V
5782
5785
  public fun setScrollPerfTag (Ljava/lang/String;)V
@@ -5879,6 +5882,7 @@ public abstract interface class com/facebook/react/views/scroll/ReactScrollViewH
5879
5882
 
5880
5883
  public abstract interface class com/facebook/react/views/scroll/ReactScrollViewHelper$HasScrollState {
5881
5884
  public abstract fun getReactScrollViewScrollState ()Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
5885
+ public abstract fun setReactScrollViewScrollState (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;)V
5882
5886
  }
5883
5887
 
5884
5888
  public abstract interface class com/facebook/react/views/scroll/ReactScrollViewHelper$HasSmoothScroll {
@@ -5896,18 +5900,34 @@ public abstract interface class com/facebook/react/views/scroll/ReactScrollViewH
5896
5900
 
5897
5901
  public final class com/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState {
5898
5902
  public fun <init> ()V
5903
+ public fun <init> (Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZ)V
5904
+ public synthetic fun <init> (Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZILkotlin/jvm/internal/DefaultConstructorMarker;)V
5905
+ public final fun component1 ()Landroid/graphics/Point;
5906
+ public final fun component2 ()I
5907
+ public final fun component3 ()Landroid/graphics/Point;
5908
+ public final fun component4 ()Z
5909
+ public final fun component5 ()Z
5910
+ public final fun component6 ()F
5911
+ public final fun component7 ()Z
5912
+ public final fun copy (Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZ)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
5913
+ public static synthetic fun copy$default (Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;Landroid/graphics/Point;ILandroid/graphics/Point;ZZFZILjava/lang/Object;)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
5914
+ public fun equals (Ljava/lang/Object;)Z
5899
5915
  public final fun getDecelerationRate ()F
5900
5916
  public final fun getFinalAnimatedPositionScroll ()Landroid/graphics/Point;
5901
5917
  public final fun getLastStateUpdateScroll ()Landroid/graphics/Point;
5902
5918
  public final fun getScrollAwayPaddingTop ()I
5919
+ public fun hashCode ()I
5903
5920
  public final fun isCanceled ()Z
5904
5921
  public final fun isFinished ()Z
5922
+ public final fun isUpdatedByScroll ()Z
5905
5923
  public final fun setCanceled (Z)V
5906
5924
  public final fun setDecelerationRate (F)V
5907
5925
  public final fun setFinalAnimatedPositionScroll (II)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
5908
5926
  public final fun setFinished (Z)V
5909
5927
  public final fun setLastStateUpdateScroll (II)Lcom/facebook/react/views/scroll/ReactScrollViewHelper$ReactScrollViewScrollState;
5910
5928
  public final fun setScrollAwayPaddingTop (I)V
5929
+ public final fun setUpdatedByScroll (Z)V
5930
+ public fun toString ()Ljava/lang/String;
5911
5931
  }
5912
5932
 
5913
5933
  public abstract interface class com/facebook/react/views/scroll/ReactScrollViewHelper$ScrollListener {
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.83.0-nightly-20251007-854268275
1
+ VERSION_NAME=0.83.0-nightly-20251008-31bff4e09
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<<8af0aea8bbf4cffaad7d312032bef0e4>>
7
+ * @generated SignedSource<<4f9777b3b50f714214f9f0f86d5176f1>>
8
8
  */
9
9
 
10
10
  /**
@@ -384,6 +384,12 @@ public object ReactNativeFeatureFlags {
384
384
  @JvmStatic
385
385
  public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = accessor.shouldPressibilityUseW3CPointerEventsForHover()
386
386
 
387
+ /**
388
+ * Do not emit touchcancel from Android ScrollView, instead native topScroll event will trigger responder transfer and terminate in RN renderer.
389
+ */
390
+ @JvmStatic
391
+ public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean = accessor.shouldTriggerResponderTransferOnScrollAndroid()
392
+
387
393
  /**
388
394
  * Skip activity identity assertion in ReactHostImpl::onHostPause()
389
395
  */
@@ -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<<5c2aa1e15e7fbe129b8f774d2dc7be70>>
7
+ * @generated SignedSource<<7e45b713bab183402e93ee058ea7cb36>>
8
8
  */
9
9
 
10
10
  /**
@@ -79,6 +79,7 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
79
79
  private var preparedTextCacheSizeCache: Double? = null
80
80
  private var preventShadowTreeCommitExhaustionCache: Boolean? = null
81
81
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
82
+ private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
82
83
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
83
84
  private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
84
85
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
@@ -629,6 +630,15 @@ internal class ReactNativeFeatureFlagsCxxAccessor : ReactNativeFeatureFlagsAcces
629
630
  return cached
630
631
  }
631
632
 
633
+ override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
634
+ var cached = shouldTriggerResponderTransferOnScrollAndroidCache
635
+ if (cached == null) {
636
+ cached = ReactNativeFeatureFlagsCxxInterop.shouldTriggerResponderTransferOnScrollAndroid()
637
+ shouldTriggerResponderTransferOnScrollAndroidCache = cached
638
+ }
639
+ return cached
640
+ }
641
+
632
642
  override fun skipActivityIdentityAssertionOnHostPause(): Boolean {
633
643
  var cached = skipActivityIdentityAssertionOnHostPauseCache
634
644
  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<<0bd8796f4580322a78690ec4469c07ce>>
7
+ * @generated SignedSource<<a8097e06e4ad0e329bd81fd6d23c031a>>
8
8
  */
9
9
 
10
10
  /**
@@ -146,6 +146,8 @@ public object ReactNativeFeatureFlagsCxxInterop {
146
146
 
147
147
  @DoNotStrip @JvmStatic public external fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
148
148
 
149
+ @DoNotStrip @JvmStatic public external fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
150
+
149
151
  @DoNotStrip @JvmStatic public external fun skipActivityIdentityAssertionOnHostPause(): Boolean
150
152
 
151
153
  @DoNotStrip @JvmStatic public external fun sweepActiveTouchOnChildNativeGesturesAndroid(): 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<<7c7796cbe2722f0f6e5b2cc4ed43a0d5>>
7
+ * @generated SignedSource<<c2e602217d9d88c23e958c8b73f22e5c>>
8
8
  */
9
9
 
10
10
  /**
@@ -141,6 +141,8 @@ public open class ReactNativeFeatureFlagsDefaults : ReactNativeFeatureFlagsProvi
141
141
 
142
142
  override fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean = false
143
143
 
144
+ override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean = false
145
+
144
146
  override fun skipActivityIdentityAssertionOnHostPause(): Boolean = false
145
147
 
146
148
  override fun sweepActiveTouchOnChildNativeGesturesAndroid(): 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<<f3420de2307aab53b885fa491183d84b>>
7
+ * @generated SignedSource<<f88ede5a21467165ef04b5d16d869d1f>>
8
8
  */
9
9
 
10
10
  /**
@@ -83,6 +83,7 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
83
83
  private var preparedTextCacheSizeCache: Double? = null
84
84
  private var preventShadowTreeCommitExhaustionCache: Boolean? = null
85
85
  private var shouldPressibilityUseW3CPointerEventsForHoverCache: Boolean? = null
86
+ private var shouldTriggerResponderTransferOnScrollAndroidCache: Boolean? = null
86
87
  private var skipActivityIdentityAssertionOnHostPauseCache: Boolean? = null
87
88
  private var sweepActiveTouchOnChildNativeGesturesAndroidCache: Boolean? = null
88
89
  private var traceTurboModulePromiseRejectionsOnAndroidCache: Boolean? = null
@@ -692,6 +693,16 @@ internal class ReactNativeFeatureFlagsLocalAccessor : ReactNativeFeatureFlagsAcc
692
693
  return cached
693
694
  }
694
695
 
696
+ override fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean {
697
+ var cached = shouldTriggerResponderTransferOnScrollAndroidCache
698
+ if (cached == null) {
699
+ cached = currentProvider.shouldTriggerResponderTransferOnScrollAndroid()
700
+ accessedFeatureFlags.add("shouldTriggerResponderTransferOnScrollAndroid")
701
+ shouldTriggerResponderTransferOnScrollAndroidCache = cached
702
+ }
703
+ return cached
704
+ }
705
+
695
706
  override fun skipActivityIdentityAssertionOnHostPause(): Boolean {
696
707
  var cached = skipActivityIdentityAssertionOnHostPauseCache
697
708
  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<<d4370bcde97d3c2b0b8d2a77e42a6031>>
7
+ * @generated SignedSource<<aa0e9e5830b13c4b290dcae42b757a3a>>
8
8
  */
9
9
 
10
10
  /**
@@ -141,6 +141,8 @@ public interface ReactNativeFeatureFlagsProvider {
141
141
 
142
142
  @DoNotStrip public fun shouldPressibilityUseW3CPointerEventsForHover(): Boolean
143
143
 
144
+ @DoNotStrip public fun shouldTriggerResponderTransferOnScrollAndroid(): Boolean
145
+
144
146
  @DoNotStrip public fun skipActivityIdentityAssertionOnHostPause(): Boolean
145
147
 
146
148
  @DoNotStrip public fun sweepActiveTouchOnChildNativeGesturesAndroid(): 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-20251007-854268275"
18
+ "prerelease" to "nightly-20251008-31bff4e09"
19
19
  )
20
20
  }
@@ -18,6 +18,7 @@ import android.animation.ValueAnimator;
18
18
  import android.content.Context;
19
19
  import android.graphics.Canvas;
20
20
  import android.graphics.Color;
21
+ import android.graphics.Point;
21
22
  import android.graphics.Rect;
22
23
  import android.graphics.drawable.ColorDrawable;
23
24
  import android.graphics.drawable.Drawable;
@@ -1649,6 +1650,15 @@ public class ReactHorizontalScrollView extends HorizontalScrollView
1649
1650
  mStateWrapper = stateWrapper;
1650
1651
  }
1651
1652
 
1653
+ @Override
1654
+ public void setReactScrollViewScrollState(ReactScrollViewScrollState scrollState) {
1655
+ mReactScrollViewScrollState = scrollState;
1656
+ if (ReactNativeFeatureFlags.enableViewCulling()) {
1657
+ Point scrollPosition = scrollState.getLastStateUpdateScroll();
1658
+ scrollTo(scrollPosition.x, scrollPosition.y);
1659
+ }
1660
+ }
1661
+
1652
1662
  @Override
1653
1663
  public ReactScrollViewScrollState getReactScrollViewScrollState() {
1654
1664
  return mReactScrollViewScrollState;
@@ -85,6 +85,9 @@ constructor(private val fpsListener: FpsListener? = null) :
85
85
  stateWrapper: StateWrapper,
86
86
  ): Any? {
87
87
  view.setStateWrapper(stateWrapper)
88
+ if (ReactNativeFeatureFlags.enableViewCulling()) {
89
+ ReactScrollViewHelper.loadFabricScrollState(view, stateWrapper)
90
+ }
88
91
  return null
89
92
  }
90
93
 
@@ -18,6 +18,7 @@ import android.animation.ValueAnimator;
18
18
  import android.content.Context;
19
19
  import android.graphics.Canvas;
20
20
  import android.graphics.Color;
21
+ import android.graphics.Point;
21
22
  import android.graphics.Rect;
22
23
  import android.graphics.drawable.ColorDrawable;
23
24
  import android.graphics.drawable.Drawable;
@@ -1439,6 +1440,10 @@ public class ReactScrollView extends ScrollView
1439
1440
  * style. `translateY` must never be set from ReactJS while using this feature!
1440
1441
  */
1441
1442
  public void setScrollAwayTopPaddingEnabledUnstable(int topPadding) {
1443
+ setScrollAwayTopPaddingEnabledUnstable(topPadding, true);
1444
+ }
1445
+
1446
+ public void setScrollAwayTopPaddingEnabledUnstable(int topPadding, boolean updateState) {
1442
1447
  int count = getChildCount();
1443
1448
 
1444
1449
  Assertions.assertCondition(
@@ -1458,7 +1463,9 @@ public class ReactScrollView extends ScrollView
1458
1463
  setPadding(0, 0, 0, topPadding);
1459
1464
  }
1460
1465
 
1461
- updateScrollAwayState(topPadding);
1466
+ if (updateState) {
1467
+ updateScrollAwayState(topPadding);
1468
+ }
1462
1469
  setRemoveClippedSubviews(mRemoveClippedSubviews);
1463
1470
  }
1464
1471
 
@@ -1467,6 +1474,17 @@ public class ReactScrollView extends ScrollView
1467
1474
  ReactScrollViewHelper.forceUpdateState(this);
1468
1475
  }
1469
1476
 
1477
+ @Override
1478
+ public void setReactScrollViewScrollState(ReactScrollViewScrollState scrollState) {
1479
+ mReactScrollViewScrollState = scrollState;
1480
+ if (ReactNativeFeatureFlags.enableViewCulling()) {
1481
+ setScrollAwayTopPaddingEnabledUnstable(scrollState.getScrollAwayPaddingTop(), false);
1482
+
1483
+ Point scrollPosition = scrollState.getLastStateUpdateScroll();
1484
+ scrollTo(scrollPosition.x, scrollPosition.y);
1485
+ }
1486
+ }
1487
+
1470
1488
  @Override
1471
1489
  public ReactScrollViewScrollState getReactScrollViewScrollState() {
1472
1490
  return mReactScrollViewScrollState;
@@ -26,6 +26,7 @@ import com.facebook.react.bridge.WritableNativeMap
26
26
  import com.facebook.react.common.ReactConstants
27
27
  import com.facebook.react.fabric.FabricUIManager
28
28
  import com.facebook.react.uimanager.PixelUtil.toDIPFromPixel
29
+ import com.facebook.react.uimanager.PixelUtil.toPixelFromDIP
29
30
  import com.facebook.react.uimanager.ReactClippingViewGroup
30
31
  import com.facebook.react.uimanager.StateWrapper
31
32
  import com.facebook.react.uimanager.UIManagerHelper
@@ -361,6 +362,10 @@ public object ReactScrollViewHelper {
361
362
  return
362
363
  }
363
364
  val scrollState = scrollView.reactScrollViewScrollState
365
+
366
+ // User driven scrolling should disable scroll state updates coming from Fabric
367
+ scrollState.isUpdatedByScroll = true
368
+
364
369
  // Dedupe events to reduce JNI traffic
365
370
  if (scrollState.lastStateUpdateScroll.equals(scrollX, scrollY)) {
366
371
  return
@@ -399,6 +404,29 @@ public object ReactScrollViewHelper {
399
404
  }
400
405
  }
401
406
 
407
+ @JvmStatic
408
+ internal fun <T> loadFabricScrollState(scrollView: T, stateWrapper: StateWrapper)
409
+ where T : HasScrollState?, T : HasStateWrapper?, T : ViewGroup {
410
+ if (scrollView.reactScrollViewScrollState.isUpdatedByScroll) {
411
+ return
412
+ }
413
+
414
+ val stateData = stateWrapper.stateData
415
+ if (stateData == null) {
416
+ return
417
+ }
418
+
419
+ // Assign the data loaded from the shadow node state
420
+ val scrollX = toPixelFromDIP(stateData.getDouble(CONTENT_OFFSET_LEFT)).toInt()
421
+ val scrollY = toPixelFromDIP(stateData.getDouble(CONTENT_OFFSET_TOP)).toInt()
422
+ val scrollAwayPaddingTop = toPixelFromDIP(stateData.getDouble(SCROLL_AWAY_PADDING_TOP)).toInt()
423
+
424
+ val scrollState =
425
+ scrollView.reactScrollViewScrollState.copy(scrollAwayPaddingTop = scrollAwayPaddingTop)
426
+ scrollState.setLastStateUpdateScroll(scrollX, scrollY)
427
+ scrollView.reactScrollViewScrollState = scrollState
428
+ }
429
+
402
430
  @JvmStatic
403
431
  public fun <T> updateStateOnScrollChanged(scrollView: T, xVelocity: Float, yVelocity: Float)
404
432
  where
@@ -596,21 +624,22 @@ public object ReactScrollViewHelper {
596
624
  }
597
625
  }
598
626
 
599
- public class ReactScrollViewScrollState {
600
-
601
- /** Get the position after current animation is finished */
602
- public val finalAnimatedPositionScroll: Point = Point()
603
- /** Get the padding on the top for nav bar */
604
- public var scrollAwayPaddingTop: Int = 0
605
- /** Get the Fabric state of last scroll position */
606
- public val lastStateUpdateScroll: Point = Point(-1, -1)
607
- /** Get true if the previous animation was canceled */
608
- public var isCanceled: Boolean = false
609
- /** Get true if previous animation was finished */
610
- public var isFinished: Boolean = true
611
- /** Get true if previous animation was finished */
612
- public var decelerationRate: Float = 0.985f
613
-
627
+ public data class ReactScrollViewScrollState(
628
+ /** Get the position after current animation is finished */
629
+ val finalAnimatedPositionScroll: Point = Point(),
630
+ /** Get the padding on the top for nav bar */
631
+ var scrollAwayPaddingTop: Int = 0,
632
+ /** Get the Fabric state of last scroll position */
633
+ val lastStateUpdateScroll: Point = Point(-1, -1),
634
+ /** Get true if the previous animation was canceled */
635
+ var isCanceled: Boolean = false,
636
+ /** Get true if previous animation was finished */
637
+ var isFinished: Boolean = true,
638
+ /** Get true if previous animation was finished */
639
+ var decelerationRate: Float = 0.985f,
640
+ /** Get true if the component submitted the state through user scrolling */
641
+ var isUpdatedByScroll: Boolean = false,
642
+ ) {
614
643
  /** Set the final scroll position after scrolling animation is finished */
615
644
  public fun setFinalAnimatedPositionScroll(
616
645
  finalAnimatedPositionScrollX: Int,
@@ -632,7 +661,7 @@ public object ReactScrollViewHelper {
632
661
 
633
662
  public interface HasScrollState {
634
663
  /** Get the scroll state for the current ScrollView */
635
- public val reactScrollViewScrollState: ReactScrollViewScrollState
664
+ public var reactScrollViewScrollState: ReactScrollViewScrollState
636
665
  }
637
666
 
638
667
  public interface HasFlingAnimator {
@@ -384,6 +384,9 @@ constructor(private val fpsListener: FpsListener? = null) :
384
384
  stateWrapper: StateWrapper,
385
385
  ): Any? {
386
386
  view.setStateWrapper(stateWrapper)
387
+ if (ReactNativeFeatureFlags.enableViewCulling()) {
388
+ ReactScrollViewHelper.loadFabricScrollState(view, stateWrapper)
389
+ }
387
390
  return null
388
391
  }
389
392
 
@@ -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<<740fec2589997816f17778f57b1d4abf>>
7
+ * @generated SignedSource<<5cf0077264f7ceca6617dbe20bcc122f>>
8
8
  */
9
9
 
10
10
  /**
@@ -393,6 +393,12 @@ class ReactNativeFeatureFlagsJavaProvider
393
393
  return method(javaProvider_);
394
394
  }
395
395
 
396
+ bool shouldTriggerResponderTransferOnScrollAndroid() override {
397
+ static const auto method =
398
+ getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("shouldTriggerResponderTransferOnScrollAndroid");
399
+ return method(javaProvider_);
400
+ }
401
+
396
402
  bool skipActivityIdentityAssertionOnHostPause() override {
397
403
  static const auto method =
398
404
  getReactNativeFeatureFlagsProviderJavaClass()->getMethod<jboolean()>("skipActivityIdentityAssertionOnHostPause");
@@ -800,6 +806,11 @@ bool JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsFo
800
806
  return ReactNativeFeatureFlags::shouldPressibilityUseW3CPointerEventsForHover();
801
807
  }
802
808
 
809
+ bool JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid(
810
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
811
+ return ReactNativeFeatureFlags::shouldTriggerResponderTransferOnScrollAndroid();
812
+ }
813
+
803
814
  bool JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause(
804
815
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop> /*unused*/) {
805
816
  return ReactNativeFeatureFlags::skipActivityIdentityAssertionOnHostPause();
@@ -1098,6 +1109,9 @@ void JReactNativeFeatureFlagsCxxInterop::registerNatives() {
1098
1109
  makeNativeMethod(
1099
1110
  "shouldPressibilityUseW3CPointerEventsForHover",
1100
1111
  JReactNativeFeatureFlagsCxxInterop::shouldPressibilityUseW3CPointerEventsForHover),
1112
+ makeNativeMethod(
1113
+ "shouldTriggerResponderTransferOnScrollAndroid",
1114
+ JReactNativeFeatureFlagsCxxInterop::shouldTriggerResponderTransferOnScrollAndroid),
1101
1115
  makeNativeMethod(
1102
1116
  "skipActivityIdentityAssertionOnHostPause",
1103
1117
  JReactNativeFeatureFlagsCxxInterop::skipActivityIdentityAssertionOnHostPause),
@@ -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<<2d4ccbeed5ffafd40715357ff98d83b1>>
7
+ * @generated SignedSource<<04929fb70beb00c1f690bdb11703b322>>
8
8
  */
9
9
 
10
10
  /**
@@ -207,6 +207,9 @@ class JReactNativeFeatureFlagsCxxInterop
207
207
  static bool shouldPressibilityUseW3CPointerEventsForHover(
208
208
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
209
209
 
210
+ static bool shouldTriggerResponderTransferOnScrollAndroid(
211
+ facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
212
+
210
213
  static bool skipActivityIdentityAssertionOnHostPause(
211
214
  facebook::jni::alias_ref<JReactNativeFeatureFlagsCxxInterop>);
212
215
 
@@ -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-20251007-854268275";
25
+ std::string_view Prerelease = "nightly-20251008-31bff4e09";
26
26
  } ReactNativeVersion;
27
27
 
28
28
  } // namespace facebook::react
@@ -72,10 +72,9 @@ class HermesRuntimeAgentDelegate::Impl final : public RuntimeAgentDelegate {
72
72
  }
73
73
 
74
74
  bool handleRequest(const cdp::PreparsedRequest& req) override {
75
- // TODO: Change to string::starts_with when we're on C++20.
76
- if (req.method.rfind("Log.", 0) == 0) {
77
- // Since we know Hermes doesn't do anything useful with Log messages,
78
- // but our containing HostAgent will, bail out early.
75
+ if (req.method.starts_with("Log.") || req.method.starts_with("Network.")) {
76
+ // Since we know Hermes doesn't do anything useful with Log or Network
77
+ // messages, but our containing HostAgent will, bail out early.
79
78
  // TODO: We need a way to negotiate this more dynamically with Hermes
80
79
  // through the API.
81
80
  return false;