From 00249f52df1a86fb6f113e8eea50b85de848909d Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Thu, 18 Sep 2025 09:52:07 +0200 Subject: [PATCH 1/2] Update how hooks are used --- .../v3/NativeDetector/HostGestureDetector.web.tsx | 10 ++++------ .../src/v3/hooks/useGesture.ts | 12 ++++-------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx b/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx index 46f0064574..70526aaa39 100644 --- a/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx +++ b/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx @@ -62,8 +62,8 @@ const HostGestureDetector = (props: GestureHandlerDetectorProps) => { }; useEffect(() => { - detachHandlers(attachedNativeHandlerTags.current); - }, [children]); + propsRef.current = props; + }, [props]); useEffect(() => { if (React.Children.count(children) !== 1) { @@ -73,13 +73,11 @@ const HostGestureDetector = (props: GestureHandlerDetectorProps) => { } attachHandlers(new Set(handlerTags)); - }, [handlerTags, children]); - useEffect(() => { return () => { - detachHandlers(attachedHandlerTags.current); + detachHandlers(attachedNativeHandlerTags.current); }; - }, []); + }, [handlerTags, children]); return ( }> diff --git a/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts b/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts index 1f58af928d..cec1f7dc18 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/useGesture.ts @@ -94,6 +94,10 @@ export function useGesture( }, [type, tag]); useEffect(() => { + const preparedConfig = prepareConfig(config); + RNGestureHandlerModule.setGestureHandlerConfig(tag, preparedConfig); + RNGestureHandlerModule.flushOperations(); + bindSharedValues(config, tag); return () => { @@ -101,14 +105,6 @@ export function useGesture( }; }, [tag, config]); - useEffect(() => { - const preparedConfig = prepareConfig(config); - - RNGestureHandlerModule.setGestureHandlerConfig(tag, preparedConfig); - - RNGestureHandlerModule.flushOperations(); - }, [config, tag]); - return { tag, type, From 1fb5444678e0f95cc85e0a52c784d9f243593910 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Tue, 23 Sep 2025 09:58:53 +0200 Subject: [PATCH 2/2] Detach correct set of handlers --- .../src/v3/NativeDetector/HostGestureDetector.web.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx b/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx index 70526aaa39..fd096c9277 100644 --- a/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx +++ b/packages/react-native-gesture-handler/src/v3/NativeDetector/HostGestureDetector.web.tsx @@ -72,10 +72,11 @@ const HostGestureDetector = (props: GestureHandlerDetectorProps) => { ); } - attachHandlers(new Set(handlerTags)); + const newHandlerTags = new Set(handlerTags); + attachHandlers(newHandlerTags); return () => { - detachHandlers(attachedNativeHandlerTags.current); + detachHandlers(newHandlerTags); }; }, [handlerTags, children]);