Skip to content

Crash on scrolling inside <Animated.Scrollview ../> : java.lang.NoSuchMethodError: No virtual method reversed() #2961

Closed
@ram95krishh

Description

@ram95krishh

Description

App crashes whenever we scroll inside a Animed.ScrollView that uses React Native Gesture Handler. Not sure if the issue is directly related to this library, I am posting it in both react-native github issues facebook/react-native#45178 and here. Please upvote (👍) or comment if anybody else is also facing this since the app:checkDevelopmentRechargeDebugAarMetadata step started mandating projects to start supporting compileSdkVersion 35 (for Android VanillaIceCream)

<Animated.ScrollView.. /> internally uses react-native-gesture-handler. We recently upgraded the compileSDKVersion support to 35 as it is mandatory to support AndroidVanillaIceCream going forward..

Whenever we scroll in our Animated ScrollViews it crashes the android app. Found this in the crash logs:

java.lang.NoSuchMethodError: No virtual method reversed()Ljava/util/List; in class Ljava/util/ArrayList; or its super classes (declaration of 'java.util.ArrayList' appears in /apex/com.android.art/javalib/core-oj.jar)
at com.swmansion.gesturehandler.core.GestureHandlerOrchestrator.makeActive(GestureHandlerOrchestrator.kt:193)
at com.swmansion.gesturehandler.core.GestureHandlerOrchestrator.tryActivate(GestureHandlerOrchestrator.kt:102)
at com.swmansion.gesturehandler.core.GestureHandlerOrchestrator.onHandlerStateChange(GestureHandlerOrchestrator.kt:154)
at com.swmansion.gesturehandler.core.GestureHandler.moveToState(GestureHandler.kt:568)
at com.swmansion.gesturehandler.core.GestureHandler.activate(GestureHandler.kt:671)
at com.swmansion.gesturehandler.core.GestureHandler.activate(GestureHandler.kt:667)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.tryCancelAllHandlers(RNGestureHandlerRootHelper.kt:112)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper.requestDisallowInterceptTouchEvent(RNGestureHandlerRootHelper.kt:93)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootView.requestDisallowInterceptTouchEvent(RNGestureHandlerRootView.kt:47)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3244)
at android.widget.ScrollView.onInterceptTouchEvent(ScrollView.java:659)
at com.facebook.react.views.scroll.ReactScrollView.onInterceptTouchEvent(ReactScrollView.java:409)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2653)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at com.swmansion.gesturehandler.react.RNGestureHandlerRootView.dispatchTouchEvent(RNGestureHandlerRootView.kt:38)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:500)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1905)
at android.app.Activity.dispatchTouchEvent(Activity.java:4263)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:458)
at android.view.View.dispatchPointerEvent(View.java:15262)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6654)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6454)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5910)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5967)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5933)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6098)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5941)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6155)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5914)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5967)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5933)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5941)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5914)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8996)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8947)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:8916)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9119)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:267)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:247)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:9076)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:9210)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:824)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Thanks in advance,
Rama!

Steps to reproduce

App crashes whenever scrolled inside such scroll views.

const MyComponent = () => {
  const scrollY = useAnimatedValue()
  return (
    <Animated.ScrollView
      onScroll={Animated.event(
        [{ nativeEvent: { contentOffset: { y: scrollY } } }],
        { useNativeDriver: true }
      )}
    >
      {content}
   </Animated.ScrollView>
  )
}

Snack or a link to a repository

https://snack.expo.dev/1XT8GU8hlsNThnmMjYB2Y

Gesture Handler version

2.14.0

React Native version

0.73.8

Platforms

Android

JavaScript runtime

None

Workflow

React Native (without Expo)

Architecture

None

Build type

Debug mode

Device

Android emulator

Device model

Pixel 6

Acknowledgements

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    Platform: AndroidThis issue is specific to AndroidRepro providedA reproduction with a snack or repo is provided

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions