Enable Gestures
Make a screen dismissible by enabling the gesture:Gesture Options
All gesture options are individual props on screen options:Gesture Properties
| Property | Type | Default | Description |
|---|---|---|---|
gestureEnabled | boolean | false | Enable swipe-to-dismiss |
gestureDirection | string | string[] | “vertical” | Direction: “horizontal”, “vertical”, “inverted”, or combinations |
gestureActivationArea | string | object | ”edge” | Activation zone: “edge”, “screen”, or per-side config |
gestureResponseDistance | number | 20 | Distance to activate (pixels) |
gestureVelocityImpact | number | 0.3 | Weight of velocity on final position (0-1) |
gestureDrivesProgress | boolean | true | Gesture directly drives progress 0→1→2 |
snapVelocityImpact | number | 0.1 | Weight of velocity on snap point selection |
expandViaScrollView | boolean | true | Swipe up expands from boundary (snap points) |
gestureSnapLocked | boolean | false | Lock gesture to snap points |
backdropBehavior | string | ”dismiss” | How backdrop responds to swipe |
backdropComponent | component | default | Custom backdrop renderer |
Gesture Directions
Specify which direction(s) trigger the gesture:- “vertical” — Swipe down to dismiss (top-to-bottom)
- “vertical-inverted” — Swipe up to dismiss (bottom-to-top, useful for bottom sheets)
- “horizontal” — Swipe left/right to dismiss
- “horizontal-inverted” — Swipe right to dismiss (for RTL)
- “bidirectional” — Any direction dismisses
Activation Areas
Control where on screen the gesture begins:- “edge” — Only the edges of the screen (useful to avoid conflicts with scrollable content)
- “screen” — Anywhere on screen
- Custom object — Specify pixels from each edge
Velocity & Snapping
Control how velocity affects the final animation:ScrollView Coordination
When usingTransition.ScrollView or Transition.FlatList, gestures automatically coordinate:
- vertical — Gesture activates at top of scrollable content
- vertical-inverted — Gesture activates at bottom
- horizontal — Gesture activates at left/right edges
Gesture-Driven Animations
The gesture directly drives the progress value (0→1→2):- Dragging down → progress increases from 1 → 2 (exiting)
- Released → animation completes to 2 (dismissed) or reverts to 1 (stay)
- The interpolator responds in real time to the gesture position
Gesture State
Thegesture object in screen state includes:
| Property | Type | Description |
|---|---|---|
isDragging | boolean | User is actively dragging |
x | Animated Value | X position in pixels |
y | Animated Value | Y position in pixels |
normalizedX | Animated Value | X as 0-1 fraction |
normalizedY | Animated Value | Y as 0-1 fraction |
isDismissing | boolean | Gesture will dismiss |
direction | string | ”up”, “down”, “left”, “right” |
Backdrop Behavior
Control how the backdrop (overlay) responds to swiping:- “dismiss” — Swiping anywhere dismisses
- “collapse” — Swiping snaps to previous point
- “block” — Backdrop blocks all interaction
- “passthrough” — Taps pass to screen below
Custom Backdrop Component
Replace the default backdrop:Full Gesture Example
Next Steps
- Learn Snap Points to add multiple stop points
- Use Transition.ScrollView for scrollable gestures
- Check Custom Animations to respond to gesture state
