Custom gestures do not conflict with system gestures
Why it matters
A PanGestureHandler wired to the root view or main screen swallows the iOS edge-swipe-back gesture — users can no longer navigate back and file crash-level bug reports. Globally-scoped swipe handlers also fight with ScrollView momentum, producing frozen scrolls and ghost taps. Apple's HIG explicitly reserves edge gestures for the system, and conflicts here are a common rejection reason during App Store review.
Severity rationale
High because breaking system navigation gestures strands users on a screen with no visible way out.
Remediation
Scope every custom gesture to the smallest possible subtree and never attach a pan handler at the screen or NavigationContainer level. Use react-native-gesture-handler's simultaneousHandlers and waitFor to coordinate with scroll gestures:
<PanGestureHandler onGestureEvent={onSwipe} activeOffsetX={[-20, 20]}>
<Animated.View style={animatedStyle}>{/* card only */}</Animated.View>
</PanGestureHandler>
Set activeOffsetX so horizontal swipes on the edge still reach the native navigator.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Mobile UX Patterns Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from mobile-ux-patterns·automated