Design QA asks whether the shipped interface preserves the intended experience. A screenshot comparison is useful, but a screenshot cannot tell you whether a failed request loses someone’s work or whether a keyboard user can finish the task.
Use this guide for a bounded release review. It complements functional testing and user research; it does not replace either.
Download the release checklist and sample findings (CSV). The sample finding is a constructed example, not an observation about a client product.
Start with a task and a release
Name a task in plain language: “A workspace owner invites a colleague and can tell whether the invitation succeeded.” Record the release or commit, account role, browser, viewport and any test-data requirements. A finding without those conditions may be impossible for another person to reproduce.
Before reviewing the build, ask what the design promises when the request is slow, rejected, duplicated or unavailable to the current user. If the specification has no answer, record a design gap. Do not quietly decide that whatever the implementation does is correct.
Review a state sequence
Walk through the task in order, then deliberately visit its recovery paths. For an invitation form, the review might include:
| State | What to inspect |
|---|---|
| Empty | Can someone tell what information is needed? |
| Editing | Do labels, instructions and focus remain understandable? |
| Invalid input | Is the problem explained and associated with the relevant field? |
| Pending | Can the person tell that submission is in progress? What happens if they activate it again? |
| Success | Is the destination or result unambiguous? |
| Server rejection | Is entered information retained, and is the next action clear? |
| Insufficient permission | Is the restriction explained without offering an unusable action? |
Do not require every component to implement every state. Mark a state “not applicable” with a reason. That is different from “not checked.”
Write one finding someone can act on
Here is a fictional review example with its conditions supplied explicitly:
DQ-01 — A rejected invitation clears the email address. In the demonstration scenario, an owner enters
alex@example.com, submits the invitation, and receives a server rejection. The form then returns to an empty state with “Something went wrong.” Expected: preserve the address and explain how to recover. Observed in the scenario: the owner must re-enter the address and cannot tell whether retrying is appropriate.
The reproduction is the sequence, not just “error handling is bad.” The proposed fix is to retain the input and provide a recovery action suited to the actual failure. A duplicate invitation, an invalid address and a network interruption may need different messages.
A reasonable disposition is “resolve before release if this is a supported failure path.” That is a review recommendation, not a claim about measured abandonment. To close it, repeat the rejected-request scenario and confirm that the input remains, the message is meaningful and a retry behaves as specified.
Check content extremes
Replace tidy sample data with realistic extremes: a long name, an empty list, many selected items, a translated label and a narrow viewport. Review zoom and text wrapping. The goal is not to force every label onto one line; it is to keep the task readable and operable.
When content does not fit, identify the contract that failed. Should the component wrap? Should the list paginate? Is an essential action being clipped? Truncation is not a universal fix, particularly when it conceals the information needed to choose between two records.
Check keyboard and feedback behavior
Navigate without a pointer. Can you see focus, reach the controls and complete the task? After opening and closing a dialog, check where focus goes. A visually correct overlay can still leave someone operating the page behind it.
For form errors, inspect both the explanation and its relationship to the input. W3C’s form notification guidance describes inline messages and error summaries, including linking an error to its field. Choose a pattern that fits the interaction; adding an alert everywhere can make feedback noisy.
Dynamic status feedback needs attention too. WCAG’s status-message guidance explains when assistive technology needs to identify a message without moving focus. A visible “Saved” label alone does not establish that this works.
Automated checks are a useful first pass. They do not determine whether an instruction is understandable or whether the task can be completed. Record manual checks separately, and do not describe this checklist as an accessibility certification.
Give the release a clear disposition
Use a small set of outcomes:
- Block: a required task cannot be completed, or a consequential failure has no acceptable recovery.
- Fix in this release: a supported defect has an agreed repair and verification path.
- Accept temporarily: the responsible owner accepts a documented limitation with a follow-up condition.
- Investigate: the concern needs more evidence before a change is justified.
Severity is about the consequence in this product, not how noticeable a screenshot difference looks. Record who made the disposition and why. Never turn an untested assumption into a checked box to finish the review.
Keep a small regression set
After fixes land, repeat the task and the changed recovery paths. Check an adjacent state if the repair touched shared behavior. Keep only the scenarios that protect meaningful product behavior; a giant checklist nobody completes is not a reliable release process.
If the same issue appears in several screens, use the design system audit to find the shared cause. If the intended experience itself is uncertain, use the UX audit to separate observations from questions for research.
Review notes
First published September 9, 2026. This guide and its downloadable checklist are maintained together. The invitation example is fictional and carries no claimed research results. Suggest an improvement.