Description
Description
Hi,
I updated the following configurations in my React Native app to meet Google’s requirement for SDK 35:
buildToolsVersion = "35.0.0"
compileSdkVersion = 35
targetSdkVersion = 35
After this update:
- I initially encountered build issues related to react-native-screens, which I resolved by upgrading to version 3.33.0.
- The app now builds successfully and installs on the emulator.
- However, it crashes immediately after clicking on the screen, consistently across multiple emulators and Android versions.
Note: I tested this scenario with multiple versions of react-native-gesture-handler
that are compatible with my React Native version (2.18.0
, 2.19.0
, 2.20.0
, 2.20.1
, and 2.20.2
), and the crash occurred consistently with all of them.
Crash LogCat from Android Studio:
FATAL EXCEPTION: main Process: com.BUNDLEID.ca, PID: 16697 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:3243) at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3243) at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3243) at androidx.coordinatorlayout.widget.CoordinatorLayout.requestDisallowInterceptTouchEvent(CoordinatorLayout.java:622) at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3243) at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3243) at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3243) at android.view.ViewGroup.requestDisallowInterceptTouchEvent(ViewGroup.java:3243) at android.widget.ScrollView.onInterceptTouchEvent(ScrollView.java:679) at com.facebook.react.views.scroll.ReactScrollView.onInterceptTouchEvent(ReactScrollView.java:409) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2654) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at com.swmansion.gesturehandler.react.RNGestureHandlerRootView.dispatchTouchEvent(RNGestureHandlerRootView.kt:38) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) 2025-07-03 13:51:02.049 16697-16697 AndroidRuntime com.BUNDLEID.ca E at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:490) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1904) at android.app.Activity.dispatchTouchEvent(Activity.java:4377) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70) at io.sentry.android.replay.util.FixedWindowCallback.dispatchTouchEvent(FixedWindowCallback.java:68) at io.sentry.android.replay.gestures.GestureRecorder$SentryReplayGestureRecorder.dispatchTouchEvent(GestureRecorder.kt:84) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:448) at android.view.View.dispatchPointerEvent(View.java:15919) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7021) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6815) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6229) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6286) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6252) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6417) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6260) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6474) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6233) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6286) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6252) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6260) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6233) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9211) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9162) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9131) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9337) 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:9294) at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:9428) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1339) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1348) at android.view.Choreographer.doCallbacks(Choreographer.java:952) at android.view.Choreographer.doFrame(Choreographer.java:875) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1322) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:294) at android.app.ActivityThread.main(ActivityThread.java:8177) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Steps to reproduce
- Update
compileSdkVersion
,targetSdkVersion
, andbuildToolsVersion
to 35. - Install and run the app on an Android emulator.
- Tap on any part of the screen or UI component that triggers gesture handling.
- The app crashes immediately.
A link to a Gist, an Expo Snack or a link to a repository based on this template that reproduces the bug.
https://github.com/youcefswoo/ReproduceGestureIssue
Gesture Handler version
2.20.2
React Native version
0.73.8
Platforms
Android
JavaScript runtime
None
Workflow
React Native (without Expo)
Architecture
Old Architecture (Paper)
Build type
Debug mode
Device
Android emulator
Device model
Pixel 3A XL (Android 14.0)
Acknowledgements
Yes