Blog
/
Product

Figma to Developer Handoff: A Practical Checklist for Product Teams

A good handoff is not a Figma link. It is a file developers can build from without guessing. Use this checklist to prepare, annotate, and review your designs.
Figma to Developer Handoff: A Practical Checklist for Product Teams
Key takeaways
  • Keep a clean handoff page or file that is separate from exploration work.
  • Use auto layout, components, and variables so specs match how code is built.
  • Design every state, not just the happy path: hover, focus, disabled, loading, empty, and error.
  • Document responsive behavior and interactions with annotations, not assumptions.
  • Mark finished work as Ready for dev, walk developers through it, and review the build together.

Why does design handoff break down?

Most handoff problems are not caused by bad designers or bad developers. They are caused by missing information. A developer opens a file full of old iterations, finds three versions of the same screen, and has to guess which button style is final, what happens on a small screen, and what the page looks like when there is no data.

Every guess becomes a question in chat, a delay, or a detail that ships wrong and gets fixed later. A good handoff removes those guesses before the developer ever opens the file. This guide gives you a twelve-item checklist, the tables we use to specify states and responsive behavior, and the mistakes to avoid.

How do you hand off Figma designs to developers? The short answer

To hand off Figma designs to developers, prepare a clean handoff page, build with auto layout, components, and variables, design every state, document responsive behavior and interactions, mark finished frames as Ready for dev, walk the developers through the file, and review the build together before release.

Five stages of a Figma to developer handoff: prepare the file, build it right, cover every state, annotate and mark ready, walk and review, by Mound Studio
Handoff works best as a short process, not a single link.

What is the difference between a weak handoff and a ready one?

The gap is rarely talent. It is whether the file answers questions before they are asked. Compare what a developer meets on day one in each case.

Comparison of a weak Figma handoff with a file that is ready for developers, listing file structure, naming, components, states, and communication, by Mound Studio
A ready file answers the questions a developer would otherwise send in chat.

Before handoff: prepare the file

1. Separate exploration from final work

Keep exploration, feedback, and final designs apart. Many teams use a dedicated page or a separate handoff file that only contains approved screens. Add a cover frame with the feature name, status, date, and a one-line summary so anyone opening the file knows where they are.

2. Name layers and frames clearly

Rename frames by what they are, such as "Checkout / Payment / Error", not "Frame 1482". Developers search and navigate by names. Clear naming also makes Dev Mode easier to use. A simple pattern of flow, screen, and state works for most products.

3. Use auto layout everywhere it applies

Auto layout maps closely to how flexbox works in code. When spacing, padding, and alignment are defined with auto layout, developers can read the real rules instead of measuring gaps by hand. It also shows how elements should behave when text gets longer.

4. Build from components and variables

Buttons, inputs, cards, and navigation should be components with clear variants. Colors, spacing, radius, and type should come from variables and styles with names that match your code tokens where possible. If you do not have this foundation yet, our guide to building a design system is a good place to start.

How should you name variables so they match the code?

Ask a developer how tokens are named in the codebase, then mirror it. A few habits keep names useful.

  • Name by purpose, not by value. "color-text-muted" ages better than "grey-500".
  • Use the same separators and casing as the code, so a search finds both.
  • Keep spacing on a small, repeatable scale instead of one-off numbers.
  • Group tokens the way developers group them: color, type, spacing, radius, shadow.

When names match, a developer can read a value in Figma and type the same name in code without translating.

During handoff: remove the guesswork

5. Design every state

The happy path is only one version of a screen. Show hover, focus, active, and disabled states for interactive elements. Show loading, empty, and error states for data views and forms. Show what happens with very long names, missing images, and many items. These are the details that cause the most back-and-forth.

Interaction states and data states to design for developer handoff: default, hover, focus, disabled, loading, empty, error, long content, by Mound Studio
The states that cause the most back-and-forth when they are missing.

Use this table as a quick guide to what each state needs to show.

StateApplies toWhat to specify
Hover and activeButtons, links, cards, rowsColor, elevation, and cursor change
FocusEvery interactive elementA visible outline that works on light and dark surfaces
DisabledButtons, inputs, menu itemsAppearance and whether a tooltip explains why
LoadingLists, tables, buttons, pagesSkeleton or spinner, and what stays visible
EmptyLists, dashboards, search resultsMessage, illustration, and the next action
ErrorForms, uploads, failed requestsMessage text, position, and how to recover

What does a worked example look like?

Take a settings screen with a form and a save button, described here as typical practice. A weak handoff shows one clean screen with everything filled in. A ready handoff shows more.

  1. The default view, with realistic values in every field.
  2. The empty view for a new account, with helper text.
  3. Focus and error states for the email field, with the message wording written out.
  4. The disabled save button, and the moment it becomes active.
  5. The saving state, then the success message, and where it appears.
  6. The mobile layout, with a note that fields stack and the button becomes full width.

That is six frames instead of one. It takes an hour or two of designer time, and it removes a long thread of questions. The developer builds each state once, in the right order, and QA already has a list to test against.

6. Document responsive behavior

Design key breakpoints, usually mobile, tablet, and desktop, and note what changes between them. Does the sidebar collapse? Does the table scroll or stack into cards? What is the maximum content width? Write it down next to the frames.

ElementMobileTabletDesktop
NavigationMenu button and full-screen panelCompact barFull bar with all links
Data tableStacks into cardsScrolls sidewaysFull table
Card gridOne columnTwo columnsThree or four columns
FormsSingle column, full-width fieldsSingle columnTwo columns where it helps

7. Annotate interactions and logic

Static screens cannot show everything. Add short annotations for animations, transitions, validation rules, and conditional content. Link a prototype for complex flows. Figma Dev Mode lets you attach annotations and measurements directly to designs, so notes stay where developers look.

What does a good annotation look like?

A good annotation is short, specific, and placed next to the thing it describes. It answers one question a developer would otherwise ask. Compare these two notes on a sign-up form.

  • Weak: "Validate the email."
  • Ready: "Check the email format when the field loses focus. Show the error under the field in the error style. Keep the button disabled until every required field is valid."

Use this quick routine when you annotate a screen:

  1. List every element that changes: buttons, fields, menus, cards, and anything that animates.
  2. For each one, write what triggers the change, what the user sees, and what happens next.
  3. Link the frame for each resulting state, so the note points to a design instead of describing one.
  4. Ask a developer to read the notes cold and tell you what is still unclear.

The most common annotation mistakes are writing paragraphs nobody reads, describing behavior the design already shows, and leaving out the rules that are invisible on a static screen, such as character limits, sorting order, and what happens on a slow connection.

8. Prepare assets and content

Mark icons and images for export in the right format, use real or realistic content instead of placeholder text, and share final copy. Specify accessibility details such as alt text, focus order, and contrast where they are not obvious.

9. Mark work as Ready for dev

In Figma, you can mark sections, frames, and components as Ready for dev. Developers then see a clear list of what is final in Dev Mode. If something changes after handoff, update the status and tell the team, instead of editing quietly.

After handoff: close the loop

10. Walk developers through the file

A 30-minute walkthrough saves days of messages. Explain the flow, the key decisions, the edge cases, and anything that is still open. Invite questions early, while changes are cheap.

11. Treat generated code as a reference

Dev Mode can show CSS and code snippets, which are useful for values like spacing, colors, and type. They are a starting point, not production code. Developers should still build with the team's own components and tokens.

12. Review the build together

Before release, compare the build with the design on real devices. Check spacing, states, responsiveness, and interactions. Log differences as specific tickets, and agree on which ones matter before launch and which can follow.

How do you log differences during the build review?

  1. Compare on a real device. A screenshot on a big monitor hides mobile problems.
  2. Write one ticket per difference. Include a screenshot of the design, a screenshot of the build, and the frame link.
  3. Tag each one. Mark it must fix before release, should fix soon, or fine to leave.
  4. Agree the list together. The designer, developer, and product owner decide in one short meeting.

Keep the tone practical. The aim is a build that works well for users, not a pixel-perfect copy for its own sake.

Who does what during handoff?

Handoff goes faster when everyone knows their part. A short agreement at kickoff is enough.

  • Designer: owns the file, states, annotations, and answers questions within the sprint.
  • Developer: reviews early, flags technical limits, and asks about anything unclear before starting.
  • Product owner: confirms scope and decides which differences can ship and which cannot.
  • QA: tests against the states and breakpoints listed in the file.

What should you ask developers before you hand off?

A short conversation early prevents redesigns later.

  • Which component library or framework will this use?
  • Are there existing components we should reuse instead of drawing new ones?
  • Which browsers and devices must we support?
  • Are there technical limits on animation, fonts, or image formats?
  • How would you like questions raised: in chat, in Figma comments, or in a standing call?

Write the answers on the cover frame or in the handoff page, so the next person does not have to ask again.

Common handoff mistakes to avoid

  • Sharing a working file full of old versions without a clear final page.
  • Detached components and one-off colors that do not match any token.
  • No empty, loading, or error states.
  • Only a desktop design, with mobile left to the developer's judgment.
  • Editing designs after handoff without telling anyone.
  • Designers disappearing after handoff instead of answering questions.
  • Handing off screens before the developer has seen the flow.

Why do these mistakes hurt so much?

Each one moves a decision from the design stage to the build stage, where changes cost more. A missing error state becomes a developer's guess. A missing mobile layout becomes a layout nobody approved. Fixing this is mostly about habit, not tools. Agree a definition of ready at kickoff, and do not hand off until the file meets it. If accessibility is part of your definition, our website accessibility checklist lists what to specify. If your product is a SaaS app, the principles in SaaS UX design best practices help you decide which states matter most.

Figma handoff checklist

  • One handoff page or file with a cover frame and status.
  • Frames named by flow, screen, and state.
  • Auto layout on every container that holds related items.
  • Components with variants and variables for color, spacing, radius, and type.
  • Interactive, loading, empty, and error states designed.
  • Mobile, tablet, and desktop layouts with notes on what changes.
  • Annotations for animation, validation, and conditional content.
  • Assets marked for export and real content in place.
  • Sections marked Ready for dev.
  • A walkthrough booked and a joint build review planned.

How should you start if your team has no process yet?

Do not try to fix everything at once. Pick one upcoming feature and apply the checklist to that alone. Book the walkthrough, run the joint build review, and note what saved time. Then turn the habits that worked into your team standard, and grow the component library alongside them.

The takeaway

The best handoffs are not a single moment. Developers join early design reviews, flag technical constraints before screens are polished, and the design system grows alongside the code. To see where handoff sits in the full process, read wireframe vs mockup vs prototype and our mobile app design process. At Mound Studio, design and development sit in one team, so handoff is a conversation rather than a file transfer. If your team is losing time between Figma and code, our UI/UX design team can help you set up a process that sticks, and you can get in touch any time.

Frequently asked questions

What is design handoff?

Design handoff is the process of giving developers everything they need to build a design: final screens, components, states, responsive rules, interactions, assets, and the reasons behind key decisions. It is a conversation, not just a file transfer.

How do I prepare a Figma file for developers?

Separate final work from exploration, name frames clearly, use auto layout, components, and variables, design every state, annotate responsive behavior and interactions, and mark finished work as Ready for dev.

What is Ready for dev in Figma?

It is a status you can set on sections, frames, and components to show they are finalized. Developers can then filter and view all ready designs in Dev Mode, so they know what is safe to build.

Is Figma Dev Mode code production ready?

Not usually. The generated code is useful for values such as spacing, colors, and type, but developers should build with their own components and tokens.

Which states should designers include in handoff?

Hover, focus, active, and disabled for interactive elements, plus loading, empty, and error states for data views and forms, along with edge cases like long text and missing images.

M
Md Rafatul Islam
Founder & Creative Director
Mound Studio is an award-winning design and development studio, recognized by Awwwards and trusted by 200+ clients worldwide. Our clients have raised $478M in funding. We take products and websites from first sketch to launch, across UI/UX, Webflow, WordPress, and custom development.

Explore AI Summary

Need this done right? Let's talk.
Arrow icon
WORK WITH US