diff --git a/packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts b/packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts index c1cce09307..d499c6e444 100644 --- a/packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +++ b/packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts @@ -163,7 +163,7 @@ export function useAnimatedGesture( runWorklet(CALLBACK_TYPE.FINALIZE, gesture, event, false); } } else if (isTouchEvent(event)) { - if (!stateControllers[i]) { + if (!stateControllers[i] || stateControllers[i].handlerTag !== event.handlerTag) { stateControllers[i] = GestureStateManager.create(event.handlerTag); } diff --git a/packages/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts b/packages/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts index 2f77095b56..248dce71e5 100644 --- a/packages/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts +++ b/packages/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts @@ -7,6 +7,7 @@ export interface GestureStateManagerType { activate: () => void; fail: () => void; end: () => void; + handlerTag: number; } const warningMessage = tagMessage( @@ -21,6 +22,7 @@ const setGestureState = Reanimated?.setGestureState; function create(handlerTag: number): GestureStateManagerType { 'worklet'; return { + handlerTag, begin: () => { 'worklet'; if (REANIMATED_AVAILABLE) {