Rows track horizontal touch movement and reveal a green Done panel on the right swipe and an accent Snooze panel on the left. Past a 72px threshold the action fires; a task with no due date opens instead of snoozing, since there is nothing to snooze from.
Also called: swipe a task · phone gestures · one-handed task list
- 1Gestures are enabled only for coarse pointers — matchMedia('(pointer: coarse)').
- 2A swipe engages only once horizontal movement exceeds 14px AND is 1.4x the vertical movement, with touch-action pan-y keeping normal scrolling native.
- 3The click that would follow the gesture is swallowed so a swipe never also opens the task.
Coarse-pointer gating is stated plainly: 'Coarse pointer = a finger. Swipe gestures only make sense there.' The engage threshold exists so vertical scrolling is never stolen by an accidental diagonal.
- Tapping small checkboxes on a phone
- Gesture handlers stealing vertical scroll
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →