• 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