All posts
Product design

Figma Handoff Checklist: 30 Things to Fix Before Developers Open the File

A Figma handoff checklist written from the developer's side: 30 fixes for structure, tokens, layout, states, responsive rules, copy and assets before the build.

By Mehdi Hassan8 min read

The short answer

A Figma handoff checklist makes sure a file answers every question a developer would otherwise guess at. Before handing over, check structure and naming, tokens on every value, auto layout on every component, all interactive and data states, responsive rules between breakpoints, final copy at real lengths, exportable assets, and annotations for behavior and accessibility.

Key takeaways

  • Developers don't need prettier frames. They need decisions: states, rules and final words.
  • Every color, space and radius should be a variable with code syntax, so nothing is copied by eye.
  • Draw loading, empty and error states for every screen that fetches data. These are the most often missing.
  • Write responsive rules, not just two frames. What stacks, what truncates, what hides.
  • Final copy before handoff prevents the most rework, because real text changes layouts.

Part of Design-to-Development Handoff: How to Ship Designs Without Losing Detail

What should be in a Figma file before handing it to developers?

Before handing a Figma file to developers, it should contain every decision they need to build without guessing: a clear structure, tokens on every value, auto layout components, all states, responsive rules, final copy, ready assets and behavior notes. A file that only shows the happy path at two widths isn't ready, however polished it looks.

This checklist is written from the developer's side of the table, by a team that both designs and builds. Each item is something that, when missing, makes a developer stop, ask or invent. It's one part of the wider process in our design handoff guide. Work through the 30 items below in order; the groups follow the order a developer meets them.

Group

Checks

What breaks if it's skipped

Structure and naming

5 checks

Developers can't find the right frame or build the wrong version

Tokens and styles

5 checks

Hard-coded values, broken dark mode, drift from the system

Layout and components

5 checks

Layouts that don't stretch, wrap or align like the design

States

6 checks

Invented loading, empty and error screens

Responsive

3 checks

Guesswork at every width between your two frames

Copy, assets and accessibility

6 checks

Overflowing text, blurry images, inaccessible controls

How should you structure and name a Figma file for developers?

Structure the file so a developer opening it for the first time finds the ready designs in seconds and knows what's final. Naming matters because frame and layer names often end up in conversations, tickets and generated code.

  1. Separate pages for ready work and exploration. Put work in progress, old versions and ideas on their own pages, never next to final screens.
  2. Mark ready-for-dev sections clearly. Use Figma's ready-for-dev status or an obvious label, and only on frames that won't change.
  3. Name frames by feature and state. Billing / Invoices / Empty is useful; Frame 482 is not.
  4. Name layers that matter. Containers and repeated elements should have names that hint at the component, like InvoiceRow or Sidebar.
  5. Add a cover or index. One frame that lists flows, links to them and says who to ask.

Our guide to Figma file organization covers page structures and naming conventions in more depth.

How do you check tokens and styles before handoff?

Check that every visual value in the design comes from a variable or style, and that each one has a name the codebase recognizes. If a developer has to sample a color with an eyedropper, the file isn't ready.

  1. No raw hex values. Every fill and stroke uses a color variable, ideally semantic (color/text/muted, not gray/500).
  2. Spacing and radius use variables. Gaps, padding and corner radius come from the spacing and radius scales.
  3. Text uses text styles. No loose font sizes. Each style matches a step in the type scale.
  4. Code syntax is set on variables. Developers see the CSS variable name in Dev Mode, not just a Figma label.
  5. Modes work. Switch the page to dark mode, or another theme, and check nothing stays hard-coded.

Are your layouts and components built like the code will be?

Layouts and components should behave in Figma the way they'll behave in CSS: stretching, hugging, wrapping and aligning by rule rather than by manual positioning. If a frame breaks when you resize it, the developer can't tell what the intended behavior is.

  1. Auto layout on every container. Cards, lists, forms, nav and page sections all use auto layout, so gaps and padding are explicit. See auto layout in Figma.
  2. Correct resizing rules. Each element is set to fill, hug or fixed deliberately, matching how it should behave in the browser.
  3. Instances, not copies. Screens use library components. Detached instances are reattached or flagged as intentional one-offs.
  4. Component properties match code props. Variant and property names line up with what the codebase uses.
  5. A consistent grid. Page layouts sit on one column grid with defined margins, and the grid is documented.

Which states do developers need to see?

Developers need to see every state a user can reach, not just the ideal screen. Missing states are the most common reason a build looks different from the design, because the developer had to invent them.

  1. Interactive states. Hover, focus, active and disabled for every interactive component.
  2. Loading states. What the screen shows while data loads, including partial loading when parts arrive separately.
  3. Empty states. First-use and no-results versions, with real copy and an action.
  4. Error states. Form validation, failed requests and permission errors, each with a written message.
  5. Extreme data. Very long names, large numbers, many items, one item and zero items.
  6. Success and confirmation. What happens after the main action: a toast, a redirect or an updated view.
Why focus states matter more than they seem

Focus states are what keyboard users see when they move through a page with the Tab key. If the design doesn't show them, developers often remove the browser's default outline because it clashes with the design, and nothing replaces it. That makes the product unusable without a mouse. Draw a visible focus style as part of each interactive component, and check it against our WCAG 2.2 checklist, which covers focus visibility and appearance.

How do you hand off responsive behavior?

Hand off responsive behavior as rules plus a few key frames, not a frame for every device. Developers build fluid layouts, so they need to know what changes, at what width and why.

  1. Key breakpoints drawn. At least mobile, tablet or small laptop, and desktop for complex screens.
  2. Rules written for in-between widths. Which columns stack, what collapses into a menu, what truncates and what wraps.
  3. Maximum widths defined. How wide content gets on a large monitor, and what happens to the space around it.

Are copy, assets and accessibility ready?

Copy, assets and accessibility are the last group, and the one most often left for later. They shouldn't be, because each one changes the build: real copy changes layouts, assets need the right formats, and accessibility shapes the markup.

  1. Final copy everywhere. No lorem ipsum or draft headlines. If copy isn't final, say which parts will change.
  2. Error and helper text written. Every message in every state, in the product's voice.
  3. Icons as components, exportable as SVG. On a consistent frame size with color set by a variable.
  4. Images marked for export at the right sizes, or linked to the source, with notes on cropping and focal points.
  5. Contrast checked. Text and controls meet WCAG contrast requirements in every theme.
  6. Behavior annotated. Animations, transitions, keyboard behavior and anything a static frame can't show, written next to the design. See annotating designs for developers.

How do you run the handoff once the Figma handoff checklist is done?

Once the checklist is done, walk a developer through the file instead of sending a link. Thirty minutes covering the flow, the states and the edge cases will surface the questions the checklist didn't catch. Add the answers to the file as annotations.

  1. Run the checklist yourself

    Go through all 30 items before the walkthrough, and list anything deliberately left open.

  2. Walk through it live

    Show the main flow, then each state, then the responsive rules. Let the developer interrupt.

  3. Capture answers in the file

    Every question answered in the call becomes an annotation, so the next developer doesn't ask again.

  4. Stay reachable during the build

    Answer questions within hours, not days, so the developer doesn't fill gaps with guesses.

Dev Mode makes inspecting a prepared file easier; our Figma Dev Mode review covers whether it's worth the seats. If you're building on Framer or Webflow rather than in code, see preparing Figma files for a Framer or Webflow build. And if handoffs keep breaking despite good files, why design handoffs fail explains the structural causes.

We use this checklist on our own files, even though our designers and developers are one team. If you want a brand refresh or redesign explored in Figma, our brand and design sprint is $3,000, fixed: a refresh or redesign plus 10 website or product explorations, delivered as Figma files. See what's included on our pricing.

Frequently asked questions

How long does it take to prepare a Figma file for handoff?
It depends on how the file was built. If the designer used variables, components and auto layout from the start, preparation is mostly adding states, annotations and final copy. If the file was built with detached values and manual positioning, cleaning it up can take as long as a design iteration, which is why building it right from the start pays off.
Should designers export assets or let developers do it?
Either works if it's agreed up front. With view access or Dev Mode, developers can export icons and images themselves, as long as the designer has marked them as exportable and set sensible formats. For large image sets, it's usually faster for the designer to export optimized files and share them alongside the design.
Do I need to design every screen at every breakpoint?
No. Design the key breakpoints for complex screens and write rules for what changes between them. Simple screens built from responsive components may only need one width plus notes. The goal is that a developer knows how the layout behaves at any width, which rules communicate better than dozens of nearly identical frames.
What if the copy isn't final at handoff?
Mark exactly which text will change and give realistic length limits, such as a headline of up to eight words. Use real draft copy rather than lorem ipsum, so the layout is tested with real lengths. Then agree on how copy updates reach the build, ideally through a CMS or content file instead of code changes.
Who should run the Figma handoff checklist?
The designer who owns the feature runs it, ideally with a developer reviewing the result before the walkthrough. A second pair of eyes from the build side catches the gaps a designer can't see, such as missing loading states or components that don't exist in code. On one-team setups, this review happens naturally.

· CEO & Design Director

Copywriter, designer and developer, and founder of Designify Studio. Over five years, 60+ projects across 14+ industries, for startups that have raised $300M+.

Want this done for you? Brand & design sprint, $3,000.

A brand refresh or redesign, plus design explorations for your website and product. $3,000, one-time, fixed price. Book a free 30-minute call to see if it fits.

Schedule Call