Skip to main content

mobile-gesture-handler

Handles touch gestures including swipe, pinch, long press, and drag. Provides unified gesture recognition across iOS and Android.

Source facts

Repository
Fadil369/Solutions
Last source activity
April 9, 2026 at 00:36
Detected SKILL.md language
English
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
Mobile Gesture Handler
version
1.0.0
description
Handles touch gestures including swipe, pinch, long press, and drag. Provides unified gesture recognition across iOS and Android.
author
workspace
activated
false
# Mobile Gesture Handler Handles touch gestures including swipe, pinch, long press, and drag. Provides unified gesture recognition across iOS and Android. ## Decision Framework ### When to Apply Use when: Touch interactions, swipe navigation, drag-and-drop on mobile, pinch-to-zoom, mobile-specific UX ### When NOT to Apply Don't use when: Desktop-only applications, simple tap interactions ## Anti-Patterns ### 1. Tiny Touch Targets ```css /* BAD: 20px target */ .icon-button { width: 20px; height: 20px; } /* GOOD: 44px minimum per Apple/Google guidelines */ .icon-button { width: 44px; height: 44px; min-width: 44px; min-height: 44px; } ``` ### 2. No Gesture Feedback Always provide visual feedback during gestures (swipe reveals, drag handles, etc.). ## Trigger Phrases - "Touch gestures" - "Swipe navigation" - "Pinch to zoom" - "Long press" - "Mobile interactions" ## Patterns ### Swipe Detector ```javascript function useSwipe(onSwipeLeft, onSwipeRight, threshold = 50) { const touchStart = useRef(null); const onTouchStart = (e) => { touchStart.current = e.touches[0].clientX; }; const onTouchEnd = (e) => { if (!touchStart.current) return; const diff = touchStart.current - e.changedTouches[0].clientX; if (Math.abs(diff) > threshold) { diff > 0 ? onSwipeLeft?.() : onSwipeRight?.(); } touchStart.current = null; }; return { onTouchStart, onTouchEnd }; } ``` ### Long Press ```javascript function useLongPress(callback, delay = 500) { const timerRef = useRef(null); const start = () => { timerRef.current = setTimeout(callback, delay); }; const cancel = () => clearTimeout(timerRef.current); return { onTouchStart: start, onTouchEnd: cancel, onTouchMove: cancel, onMouseDown: start, onMouseUp: cancel, onMouseLeave: cancel, }; } ``` ## Integration - Works with: accessibility-pattern-library, component-lifecycle-manager
View on GitHub