Skip to content

[CRASH] Swiping left/right using ReanimatedSwipeable causes immediate crash on iOS #3720

@PrivioSupport

Description

@PrivioSupport

Description

After upgrading my Expo project to SDK 54, importing and rendering causes an immediate crash on iOS, even with a minimal setup. (Expo SDK 54 / RN 0.81.4 / RNGH 2.28.0 / Reanimated 4.1.0)
Note that i'm in bare workflow.

Here's what happens :

Enregistrement_de_lecran_2025-09-23_a_14.43.28.mov

The crash occurs as soon as we swipe.
It does not reach the render stage.

I haven’t tested Android yet.

Here's the package.json :

    "@expo/html-elements": "^0.4.2",
    "@expo/metro-runtime": "~6.1.2",
    "@expo/vector-icons": "^15.0.2",
    "@kesha-antonov/react-native-background-downloader": "^3.2.6",
    "@legendapp/motion": "^2.4.0",
    "@react-native-async-storage/async-storage": "2.2.0",
    "@react-native-community/blur": "^4.4.1",
    "@react-native-community/netinfo": "^11.4.1",
    "@react-navigation/bottom-tabs": "^7.3.10",
    "@react-navigation/elements": "^2.6.4",
    "@react-navigation/native": "^7.1.6",
    "@react-navigation/native-stack": "^7.3.10",
    "@tamagui/config": "^1.132.24",
    "axios": "^1.8.4",
    "babel-plugin-module-resolver": "^5.0.2",
    "expo": "~54.0.10",
    "expo-blur": "~15.0.7",
    "expo-build-properties": "~1.0.9",
    "expo-constants": "~18.0.9",
    "expo-crypto": "~15.0.7",
    "expo-dev-client": "~6.0.12",
    "expo-file-system": "~19.0.14",
    "expo-font": "~14.0.8",
    "expo-haptics": "~15.0.7",
    "expo-linking": "~8.0.8",
    "expo-local-authentication": "~17.0.7",
    "expo-router": "~6.0.8",
    "expo-screen-orientation": "~9.0.7",
    "expo-status-bar": "~3.0.8",
    "expo-symbols": "~1.0.7",
    "expo-system-ui": "~6.0.7",
    "expo-web-browser": "~15.0.7",
    "moment": "^2.30.1",
    "prop-types": "^15.8.1",
    "react": "19.1.0",
    "react-dom": "19.1.0",
    "react-native": "0.81.4",
    "react-native-bootsplash": "^6.3.11",
    "react-native-capture-protection": "^2.3.0",
    "react-native-device-info": "^14.0.4",
    "react-native-draggable-flatlist": "^4.0.3",
    "react-native-gesture-handler": "~2.28.0",
    "react-native-iconify": "^2.0.3",
    "react-native-pager-view": "^6.9.1",
    "react-native-reanimated": "~4.1.0",
    "react-native-reanimated-carousel": "4.0.2",
    "react-native-safe-area-context": "^5.6.1",
    "react-native-screens": "~4.16.0",
    "react-native-size-matters": "^0.4.2",
    "react-native-svg": "15.12.1",
    "react-native-tab-view": "^4.1.3",
    "react-native-toast-message": "^2.3.3",
    "react-native-video": "^6.14.0",
    "react-native-web": "^0.21.0",
    "react-native-webview": "13.15.0",
    "react-native-worklets": "0.5.1",
    "tamagui": "^1.132.24",
    "whatwg-url": "^15.1.0"

And the stack trace :

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x104c3c874 __pthread_kill + 8
1 libsystem_pthread.dylib 0x10499e2ec pthread_kill + 264
2 libsystem_c.dylib 0x1801ad950 abort + 100
3 libc++abi.dylib 0x1802fa26c __abort_message + 128
4 libc++abi.dylib 0x1802ea18c demangling_terminate_handler() + 244
5 libobjc.A.dylib 0x180077228 _objc_terminate() + 140
6 libc++abi.dylib 0x1802f9758 std::__terminate(void ()()) + 12
7 libc++abi.dylib 0x1802fc7c0 __cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception
) + 32
8 libc++abi.dylib 0x1802fc7a0 __cxa_throw + 88
9 hermes 0x10551e0cc facebook::hermes::(anonymous namespace)::HermesRuntimeImpl::throwPendingError() + 724
10 hermes 0x1055173f8 facebook::hermes::(anonymous namespace)::HermesRuntimeImpl::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) + 844
11 digitallineupmobile.debug.dylib 0x10a4e2b58 facebook::jsi::RuntimeDecorator<facebook::jsi::Runtime, facebook::jsi::Runtime>::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) + 76 (decorator.h:393)
12 digitallineupmobile.debug.dylib 0x10a4e0848 facebook::jsi::WithRuntimeDecorator<worklets::WorkletsReentrancyCheck, facebook::jsi::Runtime, facebook::jsi::Runtime>::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) + 88 (decorator.h:933)
13 digitallineupmobile.debug.dylib 0x10a4e2b58 facebook::jsi::RuntimeDecorator<facebook::jsi::Runtime, facebook::jsi::Runtime>::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) + 76 (decorator.h:393)
14 digitallineupmobile.debug.dylib 0x10a4ed658 facebook::jsi::WithRuntimeDecorator<worklets::AroundLock, facebook::jsi::Runtime, facebook::jsi::Runtime>::call(facebook::jsi::Function const&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long) + 88 (decorator.h:933)
15 digitallineupmobile.debug.dylib 0x109d354d4 facebook::jsi::Function::call(facebook::jsi::Runtime&, facebook::jsi::Value const*, unsigned long) const + 100 (jsi-inl.h:282)
16 digitallineupmobile.debug.dylib 0x109d35424 facebook::jsi::Function::call(facebook::jsi::Runtime&, std::initializer_listfacebook::jsi::Value) const + 112 (jsi-inl.h:287)
17 digitallineupmobile.debug.dylib 0x10a4ddf80 facebook::jsi::Value facebook::jsi::Function::call<facebook::jsi::Value const&, facebook::jsi::Value&, facebook::jsi::Value const&>(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value&, facebook::jsi::Value const&) const + 204 (jsi-inl.h:295)
18 digitallineupmobile.debug.dylib 0x10a4dde7c facebook::jsi::Value worklets::runOnRuntimeGuarded<facebook::jsi::Value, facebook::jsi::Value const&>(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value&&, facebook::jsi::Value const&) + 80 (Serializable.h:33)
19 digitallineupmobile.debug.dylib 0x10a4ddd8c facebook::jsi::Value worklets::WorkletRuntime::runGuarded<facebook::jsi::Value, facebook::jsi::Value const&>(std::__1::shared_ptrworklets::SerializableWorklet const&, facebook::jsi::Value&&, facebook::jsi::Value const&) const + 116 (WorkletRuntime.h:51)
20 digitallineupmobile.debug.dylib 0x10a4ddcd8 worklets::WorkletEventHandler::process(std::__1::shared_ptrworklets::WorkletRuntime const&, double, facebook::jsi::Value const&) const + 92 (WorkletEventHandler.cpp:9)
21 digitallineupmobile.debug.dylib 0x10a473468 worklets::EventHandlerRegistry::processEvent(std::__1::shared_ptrworklets::WorkletRuntime const&, double, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, int, facebook::jsi::Value const&) + 952 (EventHandlerRegistry.cpp:81)
22 digitallineupmobile.debug.dylib 0x10a1d1590 reanimated::ReanimatedModuleProxy::handleEvent(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator> const&, int, facebook::jsi::Value const&, double) + 124 (ReanimatedModuleProxy.cpp:559)
23 digitallineupmobile.debug.dylib 0x10a192608 invocation function for block in reanimated::createReanimatedModuleProxy(REANodesManager*, RCTModuleRegistry*, facebook::jsi::Runtime&, std::__1::shared_ptrfacebook::react::CallInvoker const&, WorkletsModule*) + 392 (NativeProxy.mm:43)
24 digitallineupmobile.debug.dylib 0x10a221d80 __33-[REANodesManager dispatchEvent:]_block_invoke + 152 (REANodesManager.mm:141)
25 digitallineupmobile.debug.dylib 0x10a616a4c RCTExecuteOnMainQueue + 52 (RCTUtils.mm:296)
26 digitallineupmobile.debug.dylib 0x10a221c44 -[REANodesManager dispatchEvent:] + 544 (REANodesManager.mm:133)
27 digitallineupmobile.debug.dylib 0x10a1bf974 -[ReanimatedModule eventDispatcherWillDispatchEvent:] + 68 (ReanimatedModule.mm:103)
28 digitallineupmobile.debug.dylib 0x109f99b98 -[RNGestureHandlerManager sendEventForReanimated:] + 180 (RNGestureHandlerManager.mm:387)
29 digitallineupmobile.debug.dylib 0x109f999bc -[RNGestureHandlerManager sendEvent:withActionType:] + 136 (RNGestureHandlerManager.mm:354)
30 digitallineupmobile.debug.dylib 0x109f897c4 -[RNGestureHandler sendEvent:] + 124 (RNGestureHandler.mm:365)
31 digitallineupmobile.debug.dylib 0x109f896c0 -[RNGestureHandler sendEventsInState:forViewWithTag:withExtraData:] + 732 (RNGestureHandler.mm:359)
32 digitallineupmobile.debug.dylib 0x109f89310 -[RNGestureHandler handleGesture:inState:] + 232 (RNGestureHandler.mm:304)
33 digitallineupmobile.debug.dylib 0x109f891dc -[RNGestureHandler handleGesture:] + 252 (RNGestureHandler.mm:295)
34 UIKitCore 0x185d408ec -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 76
35 UIKitCore 0x185d499ec _UIGestureRecognizerSendTargetActions + 88
36 UIKitCore 0x185d46760 _UIGestureRecognizerSendActions + 296
37 UIKitCore 0x185d46324 -[UIGestureRecognizer _updateGestureForActiveEvents] + 320
38 UIKitCore 0x185d4af30 -[UIGestureRecognizer gestureNode:didUpdatePhase:] + 296
39 Gestures 0x22efbf64c 0x22efb3000 + 50764
40 Gestures 0x22efdc858 0x22efb3000 + 170072
41 Gestures 0x22f0070ac 0x22efb3000 + 344236
42 Gestures 0x22f02e90c 0x22efb3000 + 506124
43 UIKitCore 0x185d37e18 -[UIGestureEnvironment _updateForEvent:window:] + 468
44 UIKitCore 0x18629b3d4 -[UIWindow sendEvent:] + 2796
45 UIKitCore 0x186279714 -[UIApplication sendEvent:] + 376
46 UIKitCore 0x18630dc6c __dispatchPreprocessedEventFromEventQueue + 1184
47 UIKitCore 0x186310920 __processEventQueue + 4800
48 UIKitCore 0x186308ecc updateCycleEntry + 168
49 UIKitCore 0x185773878 _UIUpdateSequenceRunNext + 120
50 UIKitCore 0x18617ec90 schedulerStepScheduledMainSectionContinue + 56
51 UpdateCycle 0x2509462b4 UC::DriverCore::continueProcessing() + 80
52 CoreFoundation 0x1804114ac __CFMachPortPerform + 164
53 CoreFoundation 0x18044dbe0 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 56
54 CoreFoundation 0x18044d1f8 __CFRunLoopDoSource1 + 480
55 CoreFoundation 0x18044c2c0 __CFRunLoopRun + 2100
56 CoreFoundation 0x180446e24 _CFRunLoopRunSpecificWithOptions + 496
57 GraphicsServices 0x1925319bc GSEventRunModal + 116
58 UIKitCore 0x18625fc3c -[UIApplication _run] + 772
59 UIKitCore 0x186263e64 UIApplicationMain + 124
60 digitallineupmobile.debug.dylib 0x109c611ac __debug_main_executable_dylib_entry_point + 64 (AppDelegate.swift:7)
61 ??? 0x104a313d0 ???
62 dyld 0x104d5eb98 start + 6076

Steps to reproduce

Upgrade to Expo SDK 54

Install dependencies with expo install

Copy this minimal exemple

import ReanimatedSwipeable from "react-native-gesture-handler/ReanimatedSwipeable";

const App = () => {
        return (
            <ReanimatedSwipeable>
                <Text style={{ color: "white" }}>Hi ! Swipe me and it'll crash !</Text>
            </ReanimatedSwipeable>
        );
    }

Build and install in Bare mode and swipe the item to the left/right, it'll crash.

A link to a Gist, an Expo Snack or a link to a repository based on this template that reproduces the bug.

Code snippet higher

Gesture Handler version

2.28.0

React Native version

0.81.4

Platforms

iOS

JavaScript runtime

Hermes

Workflow

Using Expo Prebuild or an Expo development build

Architecture

New Architecture (Fabric)

Build type

Debug mode

Device

iOS simulator

Device model

iPhone 17 Pro (iOS 26)

Acknowledgements

Yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions