Onboarding UI is accessible to users with disabilities
Why it matters
Inaccessible signup and onboarding flows violate WCAG 2.2 SC 1.3.1 (Info and Relationships), 2.1.1 (Keyboard), 2.4.3 (Focus Order), 2.4.11 (Focus Not Obscured), and Section 508 §502.3 — and expose the company to ADA Title III litigation risk in the US. Form fields without labels are unusable with a screen reader; missing role="alert" means error messages are invisible to assistive technology. These aren't cosmetic gaps: they legally and functionally exclude users with disabilities from your product at the first interaction.
Severity rationale
Critical because inaccessible onboarding is both a legal exposure under ADA/Section 508 and a hard blocker for users who rely on screen readers or keyboard navigation to complete signup.
Remediation
In src/app/(auth)/signup/page.tsx, associate every input with a visible label and link errors via aria-describedby:
<div>
<Label htmlFor="email">Email</Label>
<Input
id="email"
type="email"
aria-describedby={emailError ? "email-error" : undefined}
/>
{emailError && (
<p id="email-error" role="alert" className="text-destructive text-sm">
{emailError}
</p>
)}
</div>
Audit every outline: none in your global CSS — either remove it or add a visible :focus-visible replacement. For modal dialogs, use a focus trap library (focus-trap-react) so keyboard users can't tab outside the dialog.
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 Onboarding UX Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 1.3.1 — Info and Relationships
- wcag:2.2 · 2.1.1 — Keyboard
- wcag:2.2 · 2.4.3 — Focus Order
- wcag:2.2 · 2.4.11 — Focus Not Obscured (Minimum)
- section-508:2018-refresh · 502.3 — Accessibility Services
Taxons
History
- 2026-04-18·v1.0.0·Initial import from saas-onboarding·automated