Loading states are shown during async setup operations
Why it matters
A submit button with no loading state invites double-clicks that create duplicate accounts, double-charge users, or race against each other to corrupt state. A post-signup redirect that shows a blank white screen for 1-2 seconds leaves the user wondering whether something broke and occasionally triggers a browser back button press that aborts the flow. The user-experience taxon flags both as foundational: any asynchronous operation without visible feedback degrades perceived reliability and invites user behavior that causes real bugs.
Severity rationale
Low because the flows still complete, but double-submit races and blank screens erode trust and occasionally produce duplicate-account bugs.
Remediation
Disable submit buttons and swap their label while a submission is in flight, and add a loading.tsx file for any async route that can render blank on transition. Edit src/app/(auth)/signup/page.tsx to gate the button on an isPending flag, and create src/app/(auth)/loading.tsx with a spinner.
<Button type="submit" disabled={isPending} className="w-full h-11">
{isPending ? 'Creating account...' : 'Create account'}
</Button>
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.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from saas-onboarding·automated