Gesture Handler (RNGH) mueve el reconocimiento táctil a la capa nativa para que los pans, pinches y composiciones multi-toque se mantengan a 60fps. En Expo SDK 57, instálalo junto a Reanimated 4 e impulsa valores animados desde callbacks de gestos en el hilo de UI.
Sin GestureHandlerRootView - Los gestos nunca se activan; sin error en tiempo de compilación. Solución: Envuelve la raíz de app/_layout.tsx.
setState en onUpdate - Cae fotogramas inmediatamente. Solución: Valores compartidos + useAnimatedStyle; runOnJS solo al final.
Pan sin activeOffset - Los pans de filas horizontales roban scroll vertical. Solución: Sintonización de activeOffsetX + failOffsetY por layout.
Múltiples GestureDetectors anidados - El padre puede consumir toques antes del hijo. Solución: Componer con Simultaneous / referencias de scroll Native en lugar de apilar detectores.
TouchableOpacity dentro de GestureDetector - Retroalimentación doble o presiones canceladas. Solución: Usa Gesture.Tap() o Pressable con planificación de pointerEvents.
Plugin Reanimated faltante - onUpdate lanza errores de worklet. Solución:react-native-reanimated/plugin último en config de Babel.
Pruebas en Expo Go después de actualización nativa - El cliente dev antiguo carece de bits nativos de RNGH. Solución: Reconstruye cliente dev o usa Expo Go actual que coincida con SDK 57.
Agrega GestureHandlerRootView al layout raíz. Asegúrate de que el plugin de Babel de Reanimated sea el último.
¿Por qué usar Gesture.Pan en lugar de PanResponder?
RNGH reconoce en el hilo nativo con mejor entrega de scroll.
API se compone limpiamente (Simultaneous, Race) e se integra con worklets de Reanimated.
¿Para qué sirve activeOffsetX?
El dedo debe moverse horizontalmente N píxeles antes de que se active el pan. Esto permite que el scroll vertical gane cuando el usuario desplaza una lista que contiene filas deslizables.
¿Puedo adjuntar múltiples gestos a una vista?
Sí - construye un gesto compuesto y pásalo a un único GestureDetector. No anides múltiples detectores en la misma vista sin un plan de composición.
¿Debe FlatList venir de RNGH o react-native?
Comienza con RN FlatList. Cambia la lista horizontal interna a RNGH FlatList cuando los gestos de scroll anidados fallan en Android (Desplazables Anidados).
¿Cómo interactúan los gestos con stacks de Expo Router?
El swipe-back de stack es un gesto nativo. Los pans personalizados de pantalla completa pueden necesitar gestureEnabled: false en la pantalla o cuidadoso simultaneousWithExternalGesture - ver Resolución de Conflictos de Gestos.
¿Necesito react-native-reanimated para gestos?
No estrictamente para reconocimiento, pero cada actualización de UI de alta frecuencia debe usar valores compartidos de Reanimated. setState por fotograma de pan janqueará.