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 dceec0ae2e..978f797f99 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 @@ -26,7 +26,9 @@ export function useReanimatedEventHandler< changeEventCalculator: ChangeCalculatorType | undefined, fillInDefaultValues?: (event: GestureEvent) => void ) { + 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, @@ -37,7 +39,6 @@ export function useReanimatedEventHandler< onUpdate: workletNOOP, }; } - return handlers; }, [handlers]); @@ -67,7 +68,7 @@ export function useReanimatedEventHandler< 'onGestureHandlerReanimatedStateChange', 'onGestureHandlerReanimatedTouchEvent', ], - !!reanimatedHandler?.doDependenciesDiffer + didUpdateHandlers || !!reanimatedHandler?.doDependenciesDiffer ); return reanimatedEvent;