From 5dab6fa65b43ef3b09e082defc9d1a26c4a3c28b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20Antoni=20Kwa=C5=9Bniewski?= Date: Wed, 25 Feb 2026 10:19:28 +0100 Subject: [PATCH 1/2] fix it --- .../src/v3/hooks/callbacks/useReanimatedEventHandler.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts b/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts index 012d18d3dc..e98737e85b 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts @@ -32,7 +32,6 @@ export function useReanimatedEventHandler( onUpdate: workletNOOP, }; } - return handlers; }, [handlers]); @@ -58,7 +57,7 @@ export function useReanimatedEventHandler( 'onGestureHandlerReanimatedStateChange', 'onGestureHandlerReanimatedTouchEvent', ], - !!reanimatedHandler?.doDependenciesDiffer + __DEV__ ? true : !!reanimatedHandler?.doDependenciesDiffer ); return reanimatedEvent; From 01c5c68989f4ae0829ceb75159763e816564c0ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrzej=20Antoni=20Kwa=C5=9Bniewski?= Date: Wed, 25 Feb 2026 13:57:16 +0100 Subject: [PATCH 2/2] cleaner fix --- .../src/v3/hooks/callbacks/useReanimatedEventHandler.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts b/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts index e98737e85b..2f5cc5d65c 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/callbacks/useReanimatedEventHandler.ts @@ -21,7 +21,9 @@ export function useReanimatedEventHandler( reanimatedHandler: ReanimatedHandler | undefined, changeEventCalculator: ChangeCalculatorType | undefined ) { + let didUpdateHandlers = false; const workletizedHandlers = useMemo(() => { + didUpdateHandlers = true; // We don't want to call hooks conditionally, `useEvent` will be always called. // The only difference is whether we will send events to Reanimated or not. // The problem here is that if someone passes `Animated.event` as `onUpdate` prop, @@ -57,7 +59,7 @@ export function useReanimatedEventHandler( 'onGestureHandlerReanimatedStateChange', 'onGestureHandlerReanimatedTouchEvent', ], - __DEV__ ? true : !!reanimatedHandler?.doDependenciesDiffer + didUpdateHandlers || !!reanimatedHandler?.doDependenciesDiffer ); return reanimatedEvent;