Skip to content

App crashing after updating Android SDK to 35 #3594

Open
@youcefswoo

Description

@youcefswoo

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

  1. Update compileSdkVersion, targetSdkVersion, and buildToolsVersion to 35.
  2. Install and run the app on an Android emulator.
  3. Tap on any part of the screen or UI component that triggers gesture handling.
  4. 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

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