From 548ce31e9a0a6307173fc75080eaa41dcfae15f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Tue, 2 Dec 2025 14:45:55 +0100 Subject: [PATCH 1/7] Types --- .../src/v3/types/EventTypes.ts | 2 +- .../src/v3/types/index.ts | 55 +++++++++++++++++-- 2 files changed, 50 insertions(+), 7 deletions(-) diff --git a/packages/react-native-gesture-handler/src/v3/types/EventTypes.ts b/packages/react-native-gesture-handler/src/v3/types/EventTypes.ts index 41a8408e95..3ef451c345 100644 --- a/packages/react-native-gesture-handler/src/v3/types/EventTypes.ts +++ b/packages/react-native-gesture-handler/src/v3/types/EventTypes.ts @@ -11,7 +11,7 @@ type StateChangeEventPayload = EventPayload & { oldState: State; }; -export type BaseHandlerData = { +type BaseHandlerData = { numberOfPointers: number; pointerType: PointerType; }; diff --git a/packages/react-native-gesture-handler/src/v3/types/index.ts b/packages/react-native-gesture-handler/src/v3/types/index.ts index 6fd85f24c9..d9550c1645 100644 --- a/packages/react-native-gesture-handler/src/v3/types/index.ts +++ b/packages/react-native-gesture-handler/src/v3/types/index.ts @@ -1,6 +1,49 @@ -export * from './ReanimatedTypes'; -export * from './ConfigTypes'; -export * from './EventTypes'; -export * from './DetectorTypes'; -export * from './GestureTypes'; -export * from './UtilityTypes'; +export type { + SharedValue, + SharedValueOrT, + WithSharedValue, +} from './ReanimatedTypes'; + +export type { + HandlerData, + GestureUpdateEventWithHandlerData, + GestureStateChangeEventWithHandlerData, + GestureHandlerEventWithHandlerData, + UnpackedGestureHandlerEventWithHandlerData, + UnpackedGestureHandlerEvent, + UpdateEventWithHandlerData, + StateChangeEventWithHandlerData, + TouchEvent, + GestureEvent, + AnimatedEvent, + ChangeCalculatorType, + DiffCalculatorType, +} from './EventTypes'; + +export type { + GestureCallbacks, + GestureRelations, + InternalConfigProps, + CommonGestureConfig, + ComposedGestureConfig, +} from './ConfigTypes'; + +export type { DetectorCallbacks, VirtualChild } from './DetectorTypes'; + +export { SingleGestureName, ComposedGestureName } from './GestureTypes'; +export type { + ExternalRelations, + BaseDiscreteGestureConfig, + BaseGestureConfig, + SingleGesture, + DiscreteSingleGesture, + ComposedGesture, + Gesture, + AnyGesture, +} from './GestureTypes'; + +export type { + HandlersPropsWhiteList, + FilterNeverProperties, + ExcludeInternalConfigProps, +} from './UtilityTypes'; From 7387aa33ce3bd98c797a43166ecec219979fd13e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Tue, 2 Dec 2025 15:00:35 +0100 Subject: [PATCH 2/7] Utils --- .../src/v3/hooks/utils/configUtils.ts | 4 +- .../src/v3/hooks/utils/eventHandlersUtils.ts | 2 +- .../src/v3/hooks/utils/eventUtils.ts | 2 +- .../src/v3/hooks/utils/index.ts | 50 ++++++++++++++++--- 4 files changed, 48 insertions(+), 10 deletions(-) diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts index 8ddf111c23..f85c351a5d 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/configUtils.ts @@ -93,13 +93,13 @@ export function prepareConfigForNativeSide( return filteredConfig; } -export function cloneConfig( +function cloneConfig( config: ExcludeInternalConfigProps> ): BaseGestureConfig { return { ...config } as BaseGestureConfig; } -export function remapProps< +function remapProps< TConfig extends object, TInternalConfig extends Record, >( diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/eventHandlersUtils.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/eventHandlersUtils.ts index ad3d006dbb..3dd4779e9a 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/eventHandlersUtils.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/eventHandlersUtils.ts @@ -57,7 +57,7 @@ export function prepareTouchHandlers( return handlers; } -export function getHandler( +function getHandler( type: CALLBACK_TYPE, callbacks: GestureCallbacks ) { diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/eventUtils.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/eventUtils.ts index 43ebdd6c72..477c5695d8 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/eventUtils.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/eventUtils.ts @@ -12,7 +12,7 @@ import { import { GestureTouchEvent } from '../../../handlers/gestureHandlerCommon'; import { tagMessage } from '../../../utils'; -export function isNativeEvent( +function isNativeEvent( event: GestureHandlerEventWithHandlerData ): event is | NativeSyntheticEvent> diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts index 6210dbec1f..774655201d 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts @@ -1,6 +1,44 @@ -export * from './configUtils'; -export * from './eventHandlersUtils'; -export * from './eventUtils'; -export * from './reanimatedUtils'; -export * from './relationUtils'; -export * from './propsWhiteList'; +export { + prepareConfig, + prepareConfigForNativeSide, + useClonedAndRemappedConfig, +} from './configUtils'; + +export { + prepareStateChangeHandlers, + prepareUpdateHandlers, + prepareTouchHandlers, + touchEventTypeToCallbackType, + runCallback, +} from './eventHandlersUtils'; + +export { + maybeExtractNativeEvent, + flattenAndFilterEvent, + isEventForHandlerWithTag, + isNativeAnimatedEvent, + checkMappingForChangeProperties, + shouldHandleTouchEvents, + getChangeEventCalculator, +} from './eventUtils'; + +export { + bindSharedValues, + unbindSharedValues, + hasWorkletEventHandlers, + maybeUnpackValue, +} from './reanimatedUtils'; + +export { + isComposedGesture, + prepareRelations, + containsDuplicates, +} from './relationUtils'; + +export { + allowedNativeProps, + HandlerCallbacks, + PropsToFilter, + PropsWhiteLists, + EMPTY_WHITE_LIST, +} from './propsWhiteList'; From 9eece1a3af903446bfa931fe660b55f268b168c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Tue, 2 Dec 2025 15:43:57 +0100 Subject: [PATCH 3/7] Cleanup main index --- packages/react-native-gesture-handler/src/index.ts | 12 +----------- .../src/v3/hooks/index.ts | 2 ++ .../react-native-gesture-handler/src/v3/index.ts | 4 ++++ 3 files changed, 7 insertions(+), 11 deletions(-) create mode 100644 packages/react-native-gesture-handler/src/v3/hooks/index.ts create mode 100644 packages/react-native-gesture-handler/src/v3/index.ts diff --git a/packages/react-native-gesture-handler/src/index.ts b/packages/react-native-gesture-handler/src/index.ts index b5c1fdc876..d00a8e1003 100644 --- a/packages/react-native-gesture-handler/src/index.ts +++ b/packages/react-native-gesture-handler/src/index.ts @@ -149,18 +149,8 @@ export type { } from './components/Pressable'; export { default as Pressable } from './components/Pressable'; -export { - GestureDetector, - InterceptingGestureDetector, - GestureDetectorProps, - VirtualGestureDetector, -} from './v3/detectors'; - -export * from './v3/hooks/composition'; - -export type { ComposedGesture } from './v3/types'; export type { GestureTouchEvent as SingleGestureTouchEvent } from './handlers/gestureHandlerCommon'; -export * from './v3/hooks/gestures'; +export * from './v3'; initialize(); diff --git a/packages/react-native-gesture-handler/src/v3/hooks/index.ts b/packages/react-native-gesture-handler/src/v3/hooks/index.ts new file mode 100644 index 0000000000..ab0cb84da7 --- /dev/null +++ b/packages/react-native-gesture-handler/src/v3/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './composition'; +export * from './gestures'; diff --git a/packages/react-native-gesture-handler/src/v3/index.ts b/packages/react-native-gesture-handler/src/v3/index.ts new file mode 100644 index 0000000000..dd89edf4f6 --- /dev/null +++ b/packages/react-native-gesture-handler/src/v3/index.ts @@ -0,0 +1,4 @@ +export * from './detectors'; +export * from './hooks'; + +export type { ComposedGesture } from './types'; From ba84eb835591aa4f277adf7185e879617a70de47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Wed, 3 Dec 2025 17:03:11 +0100 Subject: [PATCH 4/7] change export --- .../react-native-gesture-handler/src/v3/hooks/utils/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts index 774655201d..9797113494 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts @@ -5,9 +5,7 @@ export { } from './configUtils'; export { - prepareStateChangeHandlers, - prepareUpdateHandlers, - prepareTouchHandlers, + useMemoizedGestureCallbacks, touchEventTypeToCallbackType, runCallback, } from './eventHandlersUtils'; From 9bf467f74b218aab5ce6794f9f8e863c720f5adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Wed, 3 Dec 2025 17:12:15 +0100 Subject: [PATCH 5/7] Export components --- .../react-native-gesture-handler/src/v3/hooks/utils/index.ts | 1 + packages/react-native-gesture-handler/src/v3/index.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts index 9797113494..cde49f2a1f 100644 --- a/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts +++ b/packages/react-native-gesture-handler/src/v3/hooks/utils/index.ts @@ -35,6 +35,7 @@ export { export { allowedNativeProps, + NativeWrapperProps, HandlerCallbacks, PropsToFilter, PropsWhiteLists, diff --git a/packages/react-native-gesture-handler/src/v3/index.ts b/packages/react-native-gesture-handler/src/v3/index.ts index dd89edf4f6..f058f4e391 100644 --- a/packages/react-native-gesture-handler/src/v3/index.ts +++ b/packages/react-native-gesture-handler/src/v3/index.ts @@ -1,4 +1,5 @@ export * from './detectors'; export * from './hooks'; +export * from './components'; export type { ComposedGesture } from './types'; From 0291abb7b2ab6154269904d34fa78a7dbeb5b99c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Wed, 3 Dec 2025 17:24:13 +0100 Subject: [PATCH 6/7] Remove duplicate components export --- packages/react-native-gesture-handler/src/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/react-native-gesture-handler/src/index.ts b/packages/react-native-gesture-handler/src/index.ts index 8f960699e9..ad32ac2dc6 100644 --- a/packages/react-native-gesture-handler/src/index.ts +++ b/packages/react-native-gesture-handler/src/index.ts @@ -156,6 +156,4 @@ export type { GestureTouchEvent as SingleGestureTouchEvent } from './handlers/ge export * from './v3'; -export * from './v3/components'; - initialize(); From 88b9edec1adc8258714638fa79c8c17605fb6ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Thu, 4 Dec 2025 10:54:43 +0100 Subject: [PATCH 7/7] Explicit exports --- .../src/v3/index.ts | 75 ++++++++++++++++++- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/packages/react-native-gesture-handler/src/v3/index.ts b/packages/react-native-gesture-handler/src/v3/index.ts index f058f4e391..cd74b8a293 100644 --- a/packages/react-native-gesture-handler/src/v3/index.ts +++ b/packages/react-native-gesture-handler/src/v3/index.ts @@ -1,5 +1,74 @@ -export * from './detectors'; -export * from './hooks'; -export * from './components'; +export type { GestureDetectorProps } from './detectors'; +export { + GestureDetector, + VirtualGestureDetector, + InterceptingGestureDetector, + DetectorType, +} from './detectors'; + +export type { + TapGesture, + TapGestureConfig, + TapGestureEvent, + FlingGesture, + FlingGestureConfig, + FlingGestureEvent, + LongPressGesture, + LongPressGestureConfig, + LongPressGestureEvent, + PinchGesture, + PinchGestureConfig, + PinchGestureEvent, + RotationGesture, + RotationGestureConfig, + RotationGestureEvent, + HoverGesture, + HoverGestureConfig, + HoverGestureEvent, + ManualGesture, + ManualGestureConfig, + ManualGestureEvent, + NativeGesture, + NativeViewGestureConfig, + NativeGestureEvent, + PanGesture, + PanGestureConfig, + PanGestureEvent, + SingleGesture, + SingleGestureEvent, +} from './hooks'; +export { + useSimultaneousGestures, + useExclusiveGestures, + useCompetingGestures, + useTapGesture, + useFlingGesture, + useLongPressGesture, + usePinchGesture, + useRotationGesture, + useHoverGesture, + useManualGesture, + useNativeGesture, + usePanGesture, +} from './hooks'; + +export type { + RawButtonProps, + BaseButtonProps, + RectButtonProps, + BorderlessButtonProps, +} from './components'; +export { + RawButton, + BaseButton, + RectButton, + BorderlessButton, + PureNativeButton, + ScrollView, + Switch, + TextInput, + FlatList, + RefreshControl, +} from './components'; export type { ComposedGesture } from './types';