- Success Criterion 2.5.1
- Conformance level A
Pull-to-Refresh as the Only Way to Refresh Content
2.5.1 — Pointer Gestures
Scenario
Setting
A photo-sharing app's upload screen
What’s wrong
Pull-to-refresh as the only refresh mechanism.
Example
scrollView.addEventListener('touchmove', handlePullDistance);
scrollView.addEventListener('touchend', () => {
if (pullDistance > 120) refreshUploadQueue();
});
// no refresh button exists anywhere on the screen Why it matters
Someone who can't perform a long vertical drag never finds out whether their photo actually finished uploading.
How to test
Try tapping a refresh button instead of pulling down: if pull-to-refresh is the only mechanism, it fails.
How to fix
Pull-to-refresh can stay as a shortcut, but a tappable refresh control must always be visible too.
<button aria-label="Refresh upload status" onclick="refreshUploadQueue()">⟳ Refresh</button> Outcome
A user taps Refresh and immediately sees which photos finished uploading.
Who is affected
Wheelchair users bracing a phone one-handed, and people with reduced shoulder or wrist range of motion.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Feature Requiring a Swipe Gesture With No Tap Alternative
- Swipe-Only Carousel With No Next or Previous Button
- Map or Image Zoomable Only by Pinch Gesture
- Two-Finger Gesture Required With No Single-Pointer Option
- Swipe-to-Delete Action With No Tap-Based Alternative
- Slider Operable Only by Dragging, Not by Tapping or Typing