react-native 0.83.0-nightly-20251006-07f40ec6b → 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 (62) hide show
  1. package/Libraries/Animated/nodes/AnimatedColor.js +26 -10
  2. package/Libraries/Core/ReactNativeVersion.js +1 -1
  3. package/Libraries/NativeComponent/NativeComponentRegistry.d.ts +98 -0
  4. package/React/Base/RCTBridgeModule.h +2 -2
  5. package/React/Base/RCTVersion.m +1 -1
  6. package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +6 -0
  7. package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +9 -0
  8. package/React/Fabric/Mounting/RCTMountingManager.mm +1 -1
  9. package/ReactAndroid/api/ReactAndroid.api +20 -0
  10. package/ReactAndroid/gradle.properties +1 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +7 -1
  12. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +11 -1
  13. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +3 -1
  14. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +3 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +12 -1
  16. package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +3 -1
  17. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
  18. package/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.kt +2 -2
  19. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +10 -0
  20. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +3 -0
  21. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +19 -1
  22. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewHelper.kt +45 -16
  23. package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +3 -0
  24. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +15 -1
  25. package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +4 -1
  26. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  27. package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeAgentDelegate.cpp +3 -4
  28. package/ReactCommon/jsinspector-modern/HostAgent.cpp +19 -0
  29. package/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp +4 -4
  30. package/ReactCommon/jsinspector-modern/SessionState.h +1 -0
  31. package/ReactCommon/jsinspector-modern/tests/DebuggerSessionObserverTest.cpp +151 -0
  32. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +5 -1
  33. package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +6 -1
  34. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +37 -19
  35. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +4 -2
  36. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +5 -1
  37. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +10 -1
  38. package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +2 -1
  39. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +7 -2
  40. package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +4 -2
  41. package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +8 -7
  42. package/ReactCommon/react/renderer/components/scrollview/platform/android/react/renderer/components/scrollview/AndroidHorizontalScrollContentViewShadowNode.h +5 -1
  43. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.cpp +37 -12
  44. package/ReactCommon/react/renderer/imagemanager/platform/android/react/renderer/imagemanager/ImageFetcher.h +7 -14
  45. package/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +2 -2
  46. package/ReactCommon/react/renderer/textlayoutmanager/platform/cxx/react/renderer/textlayoutmanager/TextLayoutManager.cpp +8 -5
  47. package/ReactCommon/react/renderer/uimanager/PointerEventsProcessor.cpp +5 -3
  48. package/ReactCommon/react/renderer/uimanager/UIManager.cpp +7 -5
  49. package/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +3 -3
  50. package/ReactCommon/react/renderer/uimanager/tests/PointerEventsProcessorTest.cpp +4 -2
  51. package/ReactCommon/react/utils/tests/hash_combineTests.cpp +2 -2
  52. package/ReactCommon/reactperflogger/fusebox/FuseboxTracer.cpp +4 -1
  53. package/package.json +8 -8
  54. package/sdks/hermesc/osx-bin/hermes +0 -0
  55. package/sdks/hermesc/osx-bin/hermesc +0 -0
  56. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  57. package/src/private/featureflags/ReactNativeFeatureFlags.js +6 -1
  58. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +2 -1
  59. package/third-party-podspecs/ReactNativeDependencies.podspec +1 -1
  60. package/types/index.d.ts +1 -0
  61. package/types_generated/Libraries/Animated/nodes/AnimatedColor.d.ts +5 -1
  62. package/ReactCommon/jsinspector-modern/tests/RuntimeTargetDebuggerSessionObserverTest.cpp +0 -214
@@ -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-20251006-07f40ec6b';
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}` : ''}`;
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @format
8
+ */
9
+
10
+ import type {HostComponent} from '../../types/public/ReactNativeTypes';
11
+ import * as React from 'react';
12
+
13
+ /**
14
+ * Configures a function that is called to determine whether a given component
15
+ * should be registered using reflection of the native component at runtime.
16
+ *
17
+ * The provider should return null if the native component is unavailable in
18
+ * the current environment.
19
+ */
20
+ export function setRuntimeConfigProvider(
21
+ runtimeConfigProvider: (name: string) => {
22
+ native: boolean;
23
+ verify: boolean;
24
+ } | null,
25
+ ): void;
26
+
27
+ /**
28
+ * Gets a `NativeComponent` that can be rendered by React Native.
29
+ *
30
+ * The supplied `viewConfigProvider` may or may not be invoked and utilized,
31
+ * depending on how `setRuntimeConfigProvider` is configured.
32
+ */
33
+ export function get<Config extends object>(
34
+ name: string,
35
+ viewConfigProvider: () => PartialViewConfig,
36
+ ): HostComponent<Config>;
37
+
38
+ /**
39
+ * Same as `NativeComponentRegistry.get(...)`, except this will check either
40
+ * the `setRuntimeConfigProvider` configuration or use native reflection (slow)
41
+ * to determine whether this native component is available.
42
+ *
43
+ * If the native component is not available, a stub component is returned. Note
44
+ * that the return value of this is not `HostComponent` because the returned
45
+ * component instance is not guaranteed to have native methods.
46
+ */
47
+ export function getWithFallback_DEPRECATED<Config extends object>(
48
+ name: string,
49
+ viewConfigProvider: () => PartialViewConfig,
50
+ ): React.ComponentType<Config>;
51
+
52
+ /**
53
+ * Unstable API. Do not use!
54
+ *
55
+ * This method returns if there is a StaticViewConfig registered for the
56
+ * component name received as a parameter.
57
+ */
58
+ export function unstable_hasStaticViewConfig(name: string): boolean;
59
+
60
+ type AttributeType<T, V> =
61
+ | true
62
+ | {
63
+ readonly diff?: ((arg1: T, arg2: T) => boolean) | undefined;
64
+ readonly process?: ((arg1: V) => T) | undefined;
65
+ };
66
+ type AnyAttributeType = AttributeType<any, any>;
67
+ type AttributeConfiguration = {
68
+ readonly [propName: string]: AnyAttributeType | void;
69
+ readonly style?:
70
+ | {
71
+ readonly [propName: string]: AnyAttributeType;
72
+ }
73
+ | undefined;
74
+ };
75
+
76
+ type PartialViewConfig = Readonly<{
77
+ bubblingEventTypes?:
78
+ | {
79
+ readonly [eventName: string]: {
80
+ readonly phasedRegistrationNames: {
81
+ readonly bubbled: string;
82
+ readonly captured: string;
83
+ readonly skipBubbling?: boolean | undefined;
84
+ };
85
+ };
86
+ }
87
+ | undefined;
88
+ directEventTypes?:
89
+ | {
90
+ readonly [eventName: string]: {
91
+ readonly registrationName: string;
92
+ };
93
+ }
94
+ | undefined;
95
+ supportsRawText?: boolean | undefined;
96
+ uiViewClassName: string;
97
+ validAttributes?: AttributeConfiguration | undefined;
98
+ }>;
@@ -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-20251006-07f40ec6b",
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,
@@ -299,7 +299,7 @@ static void RCTPerformMountInstructions(
299
299
  SurfaceId surfaceId = RCTSurfaceIdForView(componentView);
300
300
  Props::Shared oldProps = [componentView props];
301
301
  Props::Shared newProps = componentDescriptor.cloneProps(
302
- PropsParserContext{surfaceId, *_contextContainer.get()}, oldProps, RawProps(std::move(props)));
302
+ PropsParserContext{surfaceId, *_contextContainer}, oldProps, RawProps(std::move(props)));
303
303
 
304
304
  NSSet<NSString *> *propKeys = componentView.propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN ?: [NSSet new];
305
305
  propKeys = [propKeys setByAddingObjectsFromArray:propsKeysToBeUpdated];
@@ -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-20251006-07f40ec6b
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-20251006-07f40ec6b"
18
+ "prerelease" to "nightly-20251008-31bff4e09"
19
19
  )
20
20
  }
@@ -126,7 +126,7 @@ internal class BridgelessReactContext(context: Context, private val reactHost: R
126
126
  }
127
127
 
128
128
  override fun <T : JavaScriptModule> getJSModule(jsInterface: Class<T>): T? {
129
- mInteropModuleRegistry?.getInteropModule(jsInterface)?.let {
129
+ mInteropModuleRegistry?.getInteropModule(jsInterface)?.let { interopModule ->
130
130
  if (jsInterface == RCTEventEmitter::class.java) {
131
131
  logSoftException(
132
132
  TAG,
@@ -135,7 +135,7 @@ internal class BridgelessReactContext(context: Context, private val reactHost: R
135
135
  ),
136
136
  )
137
137
  }
138
- return it
138
+ return interopModule
139
139
  }
140
140
 
141
141
  // TODO T189052462: ReactContext caches JavaScriptModule instances
@@ -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;