Skip to main content

DO4 — Design Review Checklist (Design-Ops Edition)

Scope: The per-screen, per-flow checklist that designers complete before handing off to engineering. This complements docs/standards/DESIGN_REVIEW_CHECKLIST.md (the process-level checklist); this document is the detailed, Figma-focused design QA tool.

When to use: Before any screen or user-flow is marked "ready for dev" in Jira (DoR gate for design).


Section A — Figma file hygiene

#CheckMethod
A1All frames use Auto Layout (not absolute positioning)Inspect layers panel
A2All colors reference design tokens (no hex literals in fills)Inspect → Color tokens
A3All spacing uses spacing tokens (no arbitrary values)Inspect → Spacing
A4Typography uses text styles (no manual font properties)Inspect → Text styles
A5No "detached" components (all instances link to main component)Layers panel: no broken link icons
A6Component properties used (not duplicate frames per variant)Check component properties panel
A7Frame named correctly: [ComponentName] / [Variant] / [State]Layers panel
A8No lorem ipsum in final handoff frames (real or representative copy)Visual review

Section B — Responsive / platform coverage

#CheckMethod
B1Mobile breakpoint frame exists (375 px wide minimum)Figma frame
B2Desktop breakpoint frame exists (1280 px minimum for web; 1440 for desktop app)Figma frame
B3Tablet breakpoint frame (768 px) — for tablet front-desk and kiosk surfacesFigma frame
B4Auto Layout resizes correctly at each breakpoint (no overlapping text, no clipped content)Resize frame in Figma
B5Touch target minimum 44×44 px on mobile, 60×60 px on kioskMeasure tool
B6Horizontal scroll not present on any mobile frame (unless intentionally a carousel)Resize frame

Section C — States coverage

For every interactive element in the design, verify these states exist as separate Figma frames or Component property states:

#StateRequired for
C1DefaultAll
C2HoverWeb + Desktop
C3Focus (keyboard)All
C4Active / PressedAll
C5DisabledAny element that can be disabled
C6Loading (skeleton or spinner)Data-driven elements
C7Empty stateLists, grids, search results
C8Error stateForms, API-dependent sections
C9Success stateForms, transactions

Section D — Content and copy

#CheckMethod
D1All copy reviewed by copywriter or lead designer (no draft / placeholder labels)Jira: copy sign-off comment
D2Error messages follow C2-error-to-ui-matrix.md patternsCross-reference
D3Truncation handled: long strings tested (e.g., 60-char property name, 30-char guest name)Resize text in Figma
D4Dates use format consistent with 09-non-functional-requirements.md §3 (locale-aware)Visual review
D5Currency amounts use Latin numerals (finance audit invariant — F4)Visual review
D6Pashto / Dari copy provided if screen is used in ps or dr localeCheck locale switcher frame

Section E — RTL coverage

#CheckMethod
E1RTL frame exists for every mobile and web screenFigma frame with RTL property toggle
E2Layout mirrors correctly (icon + text swap sides, chevrons flip, progress steps read right-to-left)Visual review of RTL frame
E3RTL icons use mirrored variants for directional icons (back arrow, forward arrow, chevron, pagination)Cross-reference Icons file RTL Mirrored page
E4Text alignment is start-aligned (not left) in all framesInspect → Text align
E5No hardcoded margin-left / padding-right in annotations — use inline-start / inline-endAnnotation review

Section F — Accessibility annotations

#CheckMethod
F1Focus order numbers annotated for all interactive elementsFigma annotation layer [A11y Focus Order]
F2aria-label / aria-labelledby values specified for icon-only buttons, images, inputsFigma annotation layer [A11y Labels]
F3Contrast ratio ≥ 4.5:1 for all text (3:1 for large text ≥ 18 pt or bold ≥ 14 pt)Figma A11y plugin or manual check
F4Non-text UI elements (icons, borders conveying state) ≥ 3:1 contrastFigma A11y plugin
F5Error state does not rely on color alone (includes icon + text, not just red border)Visual review
F6Form fields have visible labels (not placeholder-as-label)Visual review
F7Skip link annotated for web screens (Skip to main content)Annotation
F8ARIA landmark roles annotated (header, main, nav, aside, footer) for web/desktopAnnotation
F9Reduced-motion variant noted where animations are presentDesign note

Section G — Motion and interaction

#CheckMethod
G1Transition duration uses motion token values (fast: 150ms, base: 300ms, slow: 500ms)Design note / annotation
G2Easing curve specified for each transition (from motion.easing.* token)Design note
G3Reduced-motion alternative documented ("If prefers-reduced-motion, fade only — no translate")Design note
G4Loading animations do not loop indefinitely without user control (SC 2.2.2)Design note

Section H — Telemetry annotations

#CheckMethod
H1Key user actions annotated with telemetry event names (from C1-telemetry-event-dictionary.md)Figma annotation layer [Telemetry]
H2Impression events noted for above-fold content blocksAnnotation
H3Funnel steps annotated with step number (for conversion tracking)Annotation

Section I — Platform-specific checks

Web

#Check
I1SEO: <h1> level annotated per page (only one H1)
I2OpenGraph image frame provided (1200×630px og variant)
I3Favicon / PWA icon variants provided (if new surface)

Mobile

#Check
I4Safe-area insets respected (iPhone notch / Dynamic Island; Android status bar)
I5Keyboard avoidance behaviour noted (does the layout scroll or shift when keyboard appears?)
I6Swipe gesture conflicts noted (horizontal swipe carousel inside vertical scroll)

Kiosk

#Check
I7Touch target minimum 60×60 px verified
I8Idle reset screen included in flow
I9Low-literacy mode variant provided (icon-first, simple language)

Desktop

#Check
I10Minimum window size (1024×768) tested without overflow
I11Keyboard shortcut annotations provided (if new shortcut introduced)

Section J — Sign-off

RoleSign-off methodRequired before
Designer (author)Self-review; check all sections above; add ✅ Design ready comment in JiraMoving ticket to "In Dev"
Design guild leadReview and comment ✅ Design reviewed in Figma branchMerge Figma branch to main
CopywriterAdd ✅ Copy approved in JiraIf ticket has new strings
Accessibility reviewerAdd ✅ A11y annotated in JiraIf new interactive component or new screen

Failure modes

If a check fails during engineering review, the engineer should:

  1. Comment in Jira: 🚫 Design gap: [check ID] — [description]
  2. Assign back to designer
  3. Designer fixes in Figma branch, re-requests sign-off

Design gaps found in code review or QA (after engineering started) incur tech debt and must be tracked in a follow-up ticket.


References