Checklist
The Ultimate SaaS UX Checklist
Onboarding, empty states, forms, billing, accessibility, and performance — everything worth checking before you ship.
Most SaaS UX problems are not visible in a demo — they show up in the 40% of the product nobody designs first: empty states, error messages, cancellation flows. This checklist covers what actually gets missed, grouped by the part of the product it affects.
Onboarding
- First action is obvious within 5 seconds of landing on the dashboard
- Empty state on day one shows what success looks like, not just an empty table
- Progress is saved if a user abandons onboarding mid-flow
- No more than one required field before showing value
- The activation moment happens before asking for payment info
Navigation & Information Architecture
- Primary nav has 7 or fewer top-level items
- Current location is always visible (active state, breadcrumb, or page title)
- Search is available if the product has more than roughly 20 discoverable items
- Settings are organised by who uses them (account vs. team vs. billing), not alphabetically
Empty, Loading & Error States
- Every list, table, and chart has a designed empty state — not a blank rectangle
- Loading states use skeletons that match the final content shape, not generic spinners
- Error messages say what happened and what to do next — never just "Something went wrong"
- Zero-result search states suggest a next action
Forms
- Inline validation happens on blur, not just on submit
- Error messages appear next to the field they describe
- Required fields are marked; optional fields are labeled "optional," not the reverse
- Destructive actions (delete, cancel) require confirmation with the consequence spelled out
Billing & Plans
- Current plan and usage are visible without opening a support ticket
- Upgrade path is one click from any place a limit is hit
- Cancellation flow exists and is not deliberately hidden or obstructed
- Pricing page and in-app plan comparison show the same numbers
Accessibility
- Colour is never the only signal — always paired with an icon or text
- All interactive elements are reachable and operable by keyboard
- Contrast ratio meets WCAG AA for body text (4.5:1)
- Form inputs have associated labels, not just placeholder text
Performance
- Largest Contentful Paint is under 2.5 seconds on the dashboard
- No layout shift after initial render (CLS near 0)
- Pagination or virtualisation is used on any list over roughly 100 rows
Want this as a file?
Same content, plain text — save it, print it, or drop it into your own docs.
More free resources
All resourcesWant us to just handle this?
Spend 3 minutes on the intake form. I'll send back a fixed-price scope within 24 hours.