Skip to main content

Design-to-Dev Handoff Checklist - Everything Developers Need From Designers

A pre-handoff checklist for states, breakpoints, spacing, animations, color tokens, typography, exports, and accessibility annotations.

Checklist (Interactive) Free Updated May 2026 148 checklist prompts

Built for practical use

Design system checks

A pre-handoff checklist for states, breakpoints, spacing, animations, color tokens, typography, exports, and accessibility annotations.

State coverage

A pre-handoff checklist for states, breakpoints, spacing, animations, color tokens, typography, exports, and accessibility annotations.

Responsive specs

A pre-handoff checklist for states, breakpoints, spacing, animations, color tokens, typography, exports, and accessibility annotations.

Accessibility annotations

A pre-handoff checklist for states, breakpoints, spacing, animations, color tokens, typography, exports, and accessibility annotations.

Run The Handoff Review

Review pre-handoff foundations, screen-level details, and component completeness before engineering picks up the work.

Design System

Design tokens defined

— colors, typography, spacing, borders, shadows reference tokens (not raw hex codes)

Component library organized

— all reusable components are in the design system, not one-off

Component variants documented

— primary, secondary, tertiary, destructive for buttons; all sizes for inputs, etc.

States defined for all components

— default, hover, focus, active, disabled, loading, error, success

Typography scale is consistent

— no random font sizes

Spacing scale is consistent

— uses 4pt or 8pt grid system

Icon library is unified

— single icon style and source

Figma File Structure

Pages are organized logically

— e.g., "01 — Cover," "02 — Design System," "03 — Core Flows," etc.

Frames are named descriptively

— "Dashboard — Desktop — Default" (not "Frame 47")

Layers are named

— groups have meaningful names, auto-generated "Frame 34" is cleaned up

Components use Figma Components

(not copies) — so updates propagate

Variants properly configured

— single component with variants, not separate components per state

Auto Layout used

where appropriate for responsive behavior

Hidden work is hidden or deleted

— no "V1 Archived" frames cluttering the file

Dev Mode enabled

— developer access is granted

Visual Completeness

All responsive breakpoints designed

— desktop (1440px), laptop (1024px), tablet (768px), mobile (375px)

Both light and dark mode designed

(if supporting both)

Zoom state designed

(if text is expected to scale to 200%+)

States

Default state

— the "happy path"

Empty state

— when no data exists (e.g., new user, no items in list)

Loading state

— skeleton screens, spinners, or progress indicators

Error state

— API failure, network error, invalid data

Success state

— completion confirmation, success messages

Filtered/no-results state

— when filters produce zero matches

Permission-denied state

— user lacks access (if applicable)

Session-expired state

— timed-out session handling

Data Variations

Short content

— minimum expected length (single character, 1 item)

Long content

— maximum or overflow (100-char names, 1000+ items, many paragraphs)

Empty values

— null/undefined handled gracefully

Edge-case values

— 0, negative numbers, very large numbers, dates in different formats

Accessibility

Color contrast passes WCAG AA

(4.5:1 normal text, 3:1 large text/UI)

Focus indicators designed

— visible keyboard focus styles

Interactive areas are at least 44×44px on mobile

Alt text specified for images

ARIA labels specified for icon-only buttons

Screen reader behavior noted

for complex interactions

Interaction Specs

Animations defined

— duration, easing curve, what triggers

Transitions specified

— enter/exit animations, state changes

Micro-interactions documented

— hover delays, click ripples, etc.

Scroll behavior specified

— fixed/sticky elements, scroll snapping, infinite scroll

Anatomy

Anatomy documented

— labeled parts of the component

Padding/spacing internal

— all internal spacing documented

Maximum widths / heights

— if applicable

Corner radius

— specified via token

Border

— thickness, color, style

Variants

All visual variants

— primary, secondary, tertiary, destructive, ghost

All size variants

— small, medium, large (with exact dimensions)

With/without icon variants

— leading, trailing, icon-only

States (each variant × each state)

Default

Hover

— background color change, elevation change, cursor change

Focus

— focus ring specification

Active / Pressed

— color/scale shift

Disabled

— reduced opacity or different color, cursor: not-allowed

Loading

— spinner or skeleton

Error

(form inputs, specifically)

Success

(form inputs, specifically)

Behavior

Click/tap behavior

— what happens

Keyboard behavior

— Enter, Space, Escape, Tab, Arrow keys as applicable

Focus behavior

— where focus moves

Accessibility

— role, aria-labels, keyboard shortcuts

Icons

All icons exported as SVG

(preferred) or optimized PNG

Icon sizes standardized

— 16px, 20px, 24px (use one system)

Single icon set

— not mixed between Heroicons, Phosphor, Lucide, etc.

Stroke weight consistent

across icons

Icons optimized

— SVGO or similar to remove unused metadata

Images

Images exported at multiple resolutions

— 1x, 2x, 3x for retina

Modern formats provided

— WebP preferred, with JPG/PNG fallback

Dimensions specified

— width and height for every image (prevents layout shift)

Alt text defined

for every image

Illustrations

SVG format preferred

for decorative illustrations

PNG for complex raster illustrations

Color tokens used

— illustrations reference design tokens, not hardcoded colors

Typography

Web fonts specified

— font files, weights, styles

Font fallback stack defined

— e.g., `"Inter", -apple-system, BlinkMacSystemFont, sans-serif`

font-display property specified

— typically `swap`

Color Tokens

Primitive colors defined

— full color palette (10 shades each for primary, gray, etc.)

Semantic colors defined

— color-text-primary, color-bg-default, color-border-focus, etc.

Component-level tokens

— button-primary-bg, card-surface, etc.

Dark mode tokens defined

(if supporting dark mode)

Typography Tokens

Font family tokens

— font-sans, font-mono

Font size tokens

— font-size-xs, font-size-sm, ... font-size-5xl

Font weight tokens

— font-weight-regular, font-weight-medium, etc.

Line height tokens

— line-height-tight, line-height-normal, etc.

Semantic typography combinations

— text-heading-1, text-body, text-caption

Spacing Tokens

Spacing scale defined

— space-1 (4px), space-2 (8px), ... space-24 (96px)

Component-specific spacing

— card-padding, input-padding, etc.

Other Tokens

Border radius tokens

— radius-sm, radius-md, radius-lg, radius-full

Shadow tokens

— shadow-sm, shadow-md, shadow-lg

Z-index tokens

— z-modal, z-popover, z-tooltip (for layering)

Animation tokens

— duration-fast, duration-slow, easing-in-out

Token Export

Tokens exportable to code

— via Tokens Studio, Style Dictionary, or similar

Format matches dev team preference

— CSS variables, Tailwind config, SCSS, JS objects

Breakpoints

Breakpoints defined explicitly

— e.g., mobile (<768px), tablet (768-1023px), desktop (1024-1439px), wide (1440px+)

Fluid vs. fixed layouts documented

— when does layout stretch vs. center?

Maximum content widths specified

— e.g., text max-width: 720px

Layout Behavior

Column count per breakpoint

— e.g., 4 columns desktop → 2 columns tablet → 1 column mobile

Image behavior

— cover, contain, fit, crop directions

Sidebar behavior

— desktop: persistent; tablet: toggleable; mobile: drawer

Navigation transformation

— desktop: top horizontal; mobile: hamburger → drawer

Table behavior

— desktop: full table; mobile: horizontal scroll or card layout

Touch-Specific

Touch target minimums

— 44×44px on mobile

Hover states suppressed on touch

— no :hover on touch devices

Swipe gestures defined

(if used)

Pull-to-refresh behavior

(if used)

Documentation

Animation duration

— in milliseconds (e.g., 200ms)

Easing function

— ease-in-out, ease, cubic-bezier values

Trigger

— what causes the animation (click, hover, page load)

Reduced motion alternatives

— respects `prefers-reduced-motion` OS setting

Common animations documented

Modal open/close

— duration, fade + scale, backdrop fade

Page transitions

— if any

Form validation

— shake on error, checkmark on success

Loading states

— skeleton shimmer duration, spinner speed

Micro-interactions

— button press, checkbox animation, toggle

Content

Actual copy provided

(not lorem ipsum)

Error messages specified

— exact text for each error state

Empty state copy

— headlines, descriptions, CTA text

Success messages specified

— confirmation copy

Tooltips and help text documented

Form validation messages

— for each field, each error condition

Data Formats

Number formatting

— decimal places, thousands separators, currency symbols

Date/time formatting

— locale-specific formats (US: MM/DD/YYYY; most of world: DD/MM/YYYY)

Truncation behavior

— character limits, ellipsis behavior

Placeholder text

— used appropriately (not as a replacement for labels)

Figma Documentation

Cover page exists

— project overview, last updated date, designer names

Component documentation

— anatomy, usage, dos and don'ts

Prototype links

— interactive prototypes for complex flows

Annotation frames

— call-outs for important behaviors

Redlines

— spacing measurements visible in Dev Mode

External Documentation (if needed)

Flow diagrams

— for complex multi-step processes

User story mapping

— which screens serve which user needs

Technical constraints noted

— any tech stack or library requirements

Third-party integrations

— if the design requires specific APIs or services

Post-Meeting Deliverables

Meeting notes

shared

Follow-up items assigned

with owners

Design iteration needs flagged

Designer Availability

Designer is available

for questions during implementation

Response time expectations set

(e.g., "I'll respond to questions within 4 hours")

Design reviews scheduled

at milestones (not just at end)

Change Management

Process for design changes

during build defined

Version control

— Figma branching or version history used

Communication norms

— where to raise issues (Figma comments, Slack, Linear tickets)

Design QA

Design QA before launch

— designer reviews built version

Pixel-level comparison

between Figma and implementation

Interaction behavior verified

matches design intent

Cross-browser testing

with designer involvement

Part 12: Post-Launch

Build documented back to design system

— update design system with any new components created during build

Retrospective conducted

— what worked, what didn't

Handoff process improvements captured

— for next project

Why Handoff Matters

Handoff is where design quality lives or dies. A beautiful Figma file means nothing if developers can't build it faithfully.

The most common sources of implementation drift:

  • Missing states (hover, focus, disabled, error, empty, loading)
  • Undefined breakpoints
  • Inconsistent spacing values
  • Missing interaction specs
  • Accessibility gaps not documented
  • Edge cases not addressed

This checklist catches these issues before handoff, not during it. Use it before any major design-to-dev transition.

Who this is for: Designers preparing work for developer handoff, design leads reviewing their team's work, developers requesting better handoff documentation, and product managers coordinating design-dev workflows.

Part 1: Pre-Handoff Foundation

Before getting into screen-specific details, ensure the design system foundation is solid.

Design System

  • Design tokens defined — colors, typography, spacing, borders, shadows reference tokens (not raw hex codes)
  • Component library organized — all reusable components are in the design system, not one-off
  • Component variants documented — primary, secondary, tertiary, destructive for buttons; all sizes for inputs, etc.
  • States defined for all components — default, hover, focus, active, disabled, loading, error, success
  • Typography scale is consistent — no random font sizes
  • Spacing scale is consistent — uses 4pt or 8pt grid system
  • Icon library is unified — single icon style and source

Figma File Structure

  • Pages are organized logically — e.g., "01 — Cover," "02 — Design System," "03 — Core Flows," etc.
  • Frames are named descriptively — "Dashboard — Desktop — Default" (not "Frame 47")
  • Layers are named — groups have meaningful names, auto-generated "Frame 34" is cleaned up
  • Components use Figma Components (not copies) — so updates propagate
  • Variants properly configured — single component with variants, not separate components per state
  • Auto Layout used where appropriate for responsive behavior
  • Hidden work is hidden or deleted — no "V1 Archived" frames cluttering the file
  • Dev Mode enabled — developer access is granted

Part 2: Screen-Level Checklist

For each screen in the design, confirm:

Visual Completeness

  • All responsive breakpoints designed — desktop (1440px), laptop (1024px), tablet (768px), mobile (375px)
  • Both light and dark mode designed (if supporting both)
  • Zoom state designed (if text is expected to scale to 200%+)

States

  • Default state — the "happy path"
  • Empty state — when no data exists (e.g., new user, no items in list)
  • Loading state — skeleton screens, spinners, or progress indicators
  • Error state — API failure, network error, invalid data
  • Success state — completion confirmation, success messages
  • Filtered/no-results state — when filters produce zero matches
  • Permission-denied state — user lacks access (if applicable)
  • Session-expired state — timed-out session handling

Data Variations

  • Short content — minimum expected length (single character, 1 item)
  • Long content — maximum or overflow (100-char names, 1000+ items, many paragraphs)
  • Empty values — null/undefined handled gracefully
  • Edge-case values — 0, negative numbers, very large numbers, dates in different formats

Accessibility

  • Color contrast passes WCAG AA (4.5:1 normal text, 3:1 large text/UI)
  • Focus indicators designed — visible keyboard focus styles
  • Interactive areas are at least 44×44px on mobile
  • Alt text specified for images
  • ARIA labels specified for icon-only buttons
  • Screen reader behavior noted for complex interactions

Interaction Specs

  • Animations defined — duration, easing curve, what triggers
  • Transitions specified — enter/exit animations, state changes
  • Micro-interactions documented — hover delays, click ripples, etc.
  • Scroll behavior specified — fixed/sticky elements, scroll snapping, infinite scroll

Part 3: Component-Level Details

For each reusable component:

Anatomy

  • Anatomy documented — labeled parts of the component
  • Padding/spacing internal — all internal spacing documented
  • Maximum widths / heights — if applicable
  • Corner radius — specified via token
  • Border — thickness, color, style

Variants

  • All visual variants — primary, secondary, tertiary, destructive, ghost
  • All size variants — small, medium, large (with exact dimensions)
  • With/without icon variants — leading, trailing, icon-only

States (each variant × each state)

  • Default
  • Hover — background color change, elevation change, cursor change
  • Focus — focus ring specification
  • Active / Pressed — color/scale shift
  • Disabled — reduced opacity or different color, cursor: not-allowed
  • Loading — spinner or skeleton
  • Error (form inputs, specifically)
  • Success (form inputs, specifically)

Behavior

  • Click/tap behavior — what happens
  • Keyboard behavior — Enter, Space, Escape, Tab, Arrow keys as applicable
  • Focus behavior — where focus moves
  • Accessibility — role, aria-labels, keyboard shortcuts

Part 4: Assets

Icons

  • All icons exported as SVG (preferred) or optimized PNG
  • Icon sizes standardized — 16px, 20px, 24px (use one system)
  • Single icon set — not mixed between Heroicons, Phosphor, Lucide, etc.
  • Stroke weight consistent across icons
  • Icons optimized — SVGO or similar to remove unused metadata

Images

  • Images exported at multiple resolutions — 1x, 2x, 3x for retina
  • Modern formats provided — WebP preferred, with JPG/PNG fallback
  • Dimensions specified — width and height for every image (prevents layout shift)
  • Alt text defined for every image

Illustrations

  • SVG format preferred for decorative illustrations
  • PNG for complex raster illustrations
  • Color tokens used — illustrations reference design tokens, not hardcoded colors

Typography

  • Web fonts specified — font files, weights, styles
  • Font fallback stack defined — e.g., "Inter", -apple-system, BlinkMacSystemFont, sans-serif
  • font-display property specified — typically swap

Part 5: Design Tokens

Before handoff, ensure tokens are properly set up:

Color Tokens

  • Primitive colors defined — full color palette (10 shades each for primary, gray, etc.)
  • Semantic colors defined — color-text-primary, color-bg-default, color-border-focus, etc.
  • Component-level tokens — button-primary-bg, card-surface, etc.
  • Dark mode tokens defined (if supporting dark mode)

Typography Tokens

  • Font family tokens — font-sans, font-mono
  • Font size tokens — font-size-xs, font-size-sm, ... font-size-5xl
  • Font weight tokens — font-weight-regular, font-weight-medium, etc.
  • Line height tokens — line-height-tight, line-height-normal, etc.
  • Semantic typography combinations — text-heading-1, text-body, text-caption

Spacing Tokens

  • Spacing scale defined — space-1 (4px), space-2 (8px), ... space-24 (96px)
  • Component-specific spacing — card-padding, input-padding, etc.

Other Tokens

  • Border radius tokens — radius-sm, radius-md, radius-lg, radius-full
  • Shadow tokens — shadow-sm, shadow-md, shadow-lg
  • Z-index tokens — z-modal, z-popover, z-tooltip (for layering)
  • Animation tokens — duration-fast, duration-slow, easing-in-out

Token Export

  • Tokens exportable to code — via Tokens Studio, Style Dictionary, or similar
  • Format matches dev team preference — CSS variables, Tailwind config, SCSS, JS objects

Part 6: Responsive Design

Breakpoints

  • Breakpoints defined explicitly — e.g., mobile (<768px), tablet (768-1023px), desktop (1024-1439px), wide (1440px+)
  • Fluid vs. fixed layouts documented — when does layout stretch vs. center?
  • Maximum content widths specified — e.g., text max-width: 720px

Layout Behavior

  • Column count per breakpoint — e.g., 4 columns desktop → 2 columns tablet → 1 column mobile
  • Image behavior — cover, contain, fit, crop directions
  • Sidebar behavior — desktop: persistent; tablet: toggleable; mobile: drawer
  • Navigation transformation — desktop: top horizontal; mobile: hamburger → drawer
  • Table behavior — desktop: full table; mobile: horizontal scroll or card layout

Touch-Specific

  • Touch target minimums — 44×44px on mobile
  • Hover states suppressed on touch — no :hover on touch devices
  • Swipe gestures defined (if used)
  • Pull-to-refresh behavior (if used)

Part 7: Animation & Motion

Documentation

  • Animation duration — in milliseconds (e.g., 200ms)
  • Easing function — ease-in-out, ease, cubic-bezier values
  • Trigger — what causes the animation (click, hover, page load)
  • Reduced motion alternatives — respects prefers-reduced-motion OS setting

Common animations documented

  • Modal open/close — duration, fade + scale, backdrop fade
  • Page transitions — if any
  • Form validation — shake on error, checkmark on success
  • Loading states — skeleton shimmer duration, spinner speed
  • Micro-interactions — button press, checkbox animation, toggle

Part 8: Data & Copy

Content

  • Actual copy provided (not lorem ipsum)
  • Error messages specified — exact text for each error state
  • Empty state copy — headlines, descriptions, CTA text
  • Success messages specified — confirmation copy
  • Tooltips and help text documented
  • Form validation messages — for each field, each error condition

Data Formats

  • Number formatting — decimal places, thousands separators, currency symbols
  • Date/time formatting — locale-specific formats (US: MM/DD/YYYY; most of world: DD/MM/YYYY)
  • Truncation behavior — character limits, ellipsis behavior
  • Placeholder text — used appropriately (not as a replacement for labels)

Part 9: Documentation

Figma Documentation

  • Cover page exists — project overview, last updated date, designer names
  • Component documentation — anatomy, usage, dos and don'ts
  • Prototype links — interactive prototypes for complex flows
  • Annotation frames — call-outs for important behaviors
  • Redlines — spacing measurements visible in Dev Mode

External Documentation (if needed)

  • Flow diagrams — for complex multi-step processes
  • User story mapping — which screens serve which user needs
  • Technical constraints noted — any tech stack or library requirements
  • Third-party integrations — if the design requires specific APIs or services

Part 10: Handoff Meeting

Before handoff, schedule a meeting with:

  • Designer(s)
  • Engineer(s)
  • Product manager (optional but helpful)
  • QA (optional)

Meeting Agenda

1. Design Walkthrough (30-45 min)

  • Walk through each major flow
  • Explain rationale for design decisions
  • Show all states and variations

2. Q&A and Gotchas (15-20 min)

  • Address engineer questions
  • Flag edge cases
  • Discuss implementation complexity

3. Estimate and Scope (15 min)

  • Rough engineering estimate per flow
  • Identify things that can be simplified
  • Flag features needing additional design iteration

4. Cadence Setup (5 min)

  • Decide on review cadence (daily standup? weekly review?)
  • Set up communication channels (Slack channel, Figma comments)
  • Agree on how design changes during build will be handled

Post-Meeting Deliverables

  • Meeting notes shared
  • Follow-up items assigned with owners
  • Design iteration needs flagged

Part 11: During Development

Designer Availability

  • Designer is available for questions during implementation
  • Response time expectations set (e.g., "I'll respond to questions within 4 hours")
  • Design reviews scheduled at milestones (not just at end)

Change Management

  • Process for design changes during build defined
  • Version control — Figma branching or version history used
  • Communication norms — where to raise issues (Figma comments, Slack, Linear tickets)

Design QA

  • Design QA before launch — designer reviews built version
  • Pixel-level comparison between Figma and implementation
  • Interaction behavior verified matches design intent
  • Cross-browser testing with designer involvement

Part 12: Post-Launch

  • Build documented back to design system — update design system with any new components created during build
  • Retrospective conducted — what worked, what didn't
  • Handoff process improvements captured — for next project

Handoff Self-Assessment

Before declaring a design "ready for handoff," ask yourself:

If I disappeared tomorrow...

  • Could a developer build this without needing to ask me questions?
  • Are all states, edge cases, and variations covered?
  • Are accessibility requirements documented?
  • Are assets organized and exported?

If not, what's missing? Fix those gaps before handoff.

Common Handoff Failures

Failure 1: "Make it responsive"

Designing only desktop and handing off with "make it responsive" is the #1 source of implementation issues. Design every breakpoint.

Failure 2: Only default states designed

Hover, focus, error, loading, empty states are often missing. These are 60-80% of the actual UI work.

Failure 3: Inconsistent spacing

If designs use 14px, 16px, 18px, 22px arbitrarily, developers can't implement a consistent spacing system.

Failure 4: Missing interaction specs

"The button should feel snappy" isn't an interaction spec. Duration, easing, and behavior must be specified.

Failure 5: Lorem ipsum everywhere

Copy affects layout. Using placeholder text hides issues with real content length.

Failure 6: No dark mode (when product supports it)

Retrofitting dark mode after build is painful. Design it from the start.

Failure 7: Ignoring accessibility

Contrast failures, missing focus states, and inadequate touch targets aren't development bugs — they're design gaps.

Failure 8: Disorganized Figma files

If engineers can't find the current version of a screen, implementation suffers.

Sources and References

  • Nielsen Norman Group, "Design Handoff Best Practices"
  • Figma, "Dev Mode Documentation"
  • Brad Frost, "Atomic Design" (design system thinking)
  • Dan Mall, "Design That Scales"
  • Airbnb Design blog, handoff essays
  • Shopify Polaris, design system documentation approach

Created by Desisle — SaaS UI/UX Design Agency desisle.com | hello@desisle.com Free to use and share with attribution.

For design-to-dev consulting or to audit your handoff process, contact us at hello@desisle.com.

Keep Building With These Next

Checklist

Frontend Code Quality Checklist - Ensuring the Build Matches the Design

A design QA checklist for verifying pixel accuracy, responsiveness, font rendering, spacing, interaction fidelity, accessibility, performance, and browser coverage.

Open Frontend QA Checklist
Checklist

The SaaS UX Audit Checklist - 100 Points to Check Today

The same 100-point UX audit checklist our team uses when reviewing SaaS products across onboarding, navigation, dashboards, forms, accessibility, mobile responsiveness, and performance.

Open UX Audit Checklist
Checklist

The UI Design Checklist - 80 Points for Pixel-Perfect Screens

A UI review checklist for typography, color systems, spacing, consistency, responsiveness, states, accessibility, and handoff readiness.

Open UI Checklist

Need This Applied to Your Product? We'll Turn It Into Execution.

These resource pages are meant to be used hands-on. If you want the audit, plan, or framework translated into live product work, we can do that with your team.