Progress indicator visible on multi-step checkout
Why it matters
A multi-step checkout with no progress indicator leaves shoppers wondering whether they're two forms away from paying or six. Uncertainty drives abandonment — Nielsen Norman research shows users tolerate longer flows when they can see the end. Missing progress cues also break screen-reader navigation, since assistive tech users rely on landmark regions and aria-current to orient. The progress indicator is also the primary anchor for back-navigation jumps, so its absence forces linear-only movement.
Severity rationale
High because uncertainty about remaining steps measurably increases mid-checkout abandonment on multi-page flows.
Remediation
Render a stepper component in src/app/checkout/layout.tsx so it appears on every checkout page. Show current step number, total count, and labeled steps. Wire aria-current="step" on the active step for assistive tech. Do not ship a bare progress bar with no labels — the contract rejects context-free indicators.
<nav aria-label="Checkout progress">
<p>Step {currentStep} of {totalSteps}</p>
{steps.map((label, i) => <div aria-current={i === currentStep - 1 ? 'step' : undefined}>{label}</div>)}
</nav>
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 Cart & Checkout UX 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 ecommerce-cart-ux·automated