UI/UX Design Checklist
Steps a product designer runs to take a feature from user research through visual design, prototyping, and developer handoff. Covers research synthesis, wireframing, accessibility review, and post-launch iteration.
User Research and Analysis
-
Recruit participants matching the target persona
Use User Interviews, Respondent.io, or your own customer list. Aim for 5-8 participants per persona — Nielsen's research shows diminishing returns past that. Screen out PMs and designers from competitors; their feedback skews toward features, not jobs.
-
Run discovery interviews
Open-ended jobs-to-be-done questions, not feature surveys. Record sessions in Dovetail or Grain so you can tag transcripts later. Common gotcha: leading questions like "would you use X?" — ask about past behavior instead.
Collects number Collects file -
Synthesize findings into personas and JTBD
Affinity-map quotes in FigJam or Miro. Build 1-3 personas max — more than that and the team ignores them. Capture each persona's primary job-to-be-done in the format "When [situation], I want to [motivation], so I can [outcome]."
-
Audit competitor flows for the same job
Screenshot competitor onboarding, key flows, and empty states using Mobbin or Page Flows. Note the conventions you'll inherit (cmd+K palette, left-nav patterns) versus where you have license to deviate.
Wireframing and Prototyping
-
Map the user flow end-to-end
Diagram the happy path plus the three highest-frequency error states in FigJam or Whimsical. Include the empty state, loading state, and permission-denied state — the ones engineers always ask about during handoff.
-
Sketch low-fidelity wireframes in Figma
Grayscale boxes only — no color, no real copy, no real icons. The point is to validate layout and information hierarchy before anyone debates button color. Use the Wireframe community kit if you want consistent placeholder shapes.
-
Build a clickable prototype
Wire the happy-path flow with Figma prototyping or ProtoPie for richer interactions. Don't prototype every dead-end click — focus on the 2-3 core tasks you'll test.
-
Run usability tests on the prototype
5 participants from the persona pool, moderated or via Maze/UserTesting. Score task completion, time-on-task, and SUS if you have a baseline. Common gotcha: demoing instead of letting the participant drive — bite your tongue.
Collects list Collects paragraph -
Revise wireframes based on test findings
Triggered when usability testing shows the flow needs rework. Address the failures from the prior round before promoting to high-fidelity — fixing layout problems in mockups is 5x the effort of fixing them in wireframes.
Visual Design
-
Pull tokens from the design system
Use existing color, type, spacing, and elevation tokens from the team's Figma library — don't reinvent. If a needed token doesn't exist, raise it with the design-system owner before going off-spec; one-off hex codes are how systems rot.
-
Design high-fidelity mockups for all states
Cover default, hover, focus, active, disabled, loading, empty, and error for every interactive element. The mockup is incomplete without these — engineers will guess otherwise, and the guesses will be wrong.
-
Run accessibility checks against WCAG 2.1 AA
Use Stark or Able in Figma to check color contrast (4.5:1 for body text, 3:1 for large text and UI components). Verify focus order, label-input pairing, and that no information is conveyed by color alone. EU Accessibility Act enforcement starts mid-2025 — this is no longer optional for public-sector or EU-serving products.
Collects list Collects file -
Verify responsive layouts at key breakpoints
Mock the design at 360px (mobile), 768px (tablet), and 1280px (desktop) at minimum. Note any reflow rules — when does the side nav collapse, when does the table become cards. Document touch targets at 44x44px minimum for mobile.
Developer Handoff
-
Annotate interaction and motion specs
Specify timing curves, durations, and triggers for animations — "ease-out 200ms on hover" not "feels snappy." Note keyboard shortcuts, focus traps for modals, and ESC behavior. Engineers shouldn't have to invent these.
-
Walk through the design with engineering
30-minute Zoom with the assigned engineer(s) and PM. Walk the happy path and the edge cases. Capture questions in the Linear/Jira ticket so they don't disappear into Slack DMs.
-
Publish the Figma file with dev mode enabled
Lock the published frames so engineers don't see WIP variants. Confirm the Figma link is attached to the engineering ticket. If you're using Storybook or Zeroheight, link the relevant component pages too.
Collects url
Implementation Review and Iteration
-
Review the staging build against mockups
Side-by-side comparison in a browser at the same zoom level as the Figma frame. Flag spacing, type, and color drift in tickets — don't try to fix them in Slack. Common gotcha: mockup uses 14px but the implemented body inherits 16px from a parent component.
-
File a design QA ticket for any regressions
Use a single Linear/Jira parent ticket with sub-issues per defect, screenshots attached. Distinguish "design bug" (drifts from spec) from "design change" (you want to revise the spec) — engineers triage these very differently.
-
Capture post-launch metrics and feedback
Pull funnel and task-completion metrics from Amplitude/Mixpanel; review session recordings in FullStory or LogRocket for the new flow. Compare against the success metric set during research — if you didn't set one, set it next time.
Collects list Collects paragraph -
Schedule a follow-up design iteration
Triggered when the launch did not fully hit its success metric. Open a follow-up ticket with the failing metric, the suspected cause, and the next experiment. Don't close the loop quietly — surface the miss in the team retro so the team learns.
Use this template
Copy it to your account, customize the steps, and run it with your team in minutes.
Browse hundreds of free templates across every team and industry.
Back to template libraryRun UI/UX Design Checklist with your team
Customize the steps, assign roles, set a schedule, and keep a complete record for every run.