Guides / Building Systems

How do I hand off designs so developers don't guess?

What a complete handoff includes: every state, specs as tokens, assets, and notes on edge cases. Plus the Figma Dev Mode features that help, and a checklist.

5 min read • Updated

Researched with AI help and checked by Sarib.

The short answer

A good handoff answers every question a developer would otherwise have to guess. That means every state of every screen, specs written as tokens, every asset exported, and notes on the edge cases.

My bar is simple. I ship everything a developer needs alongside the design: all the media, all the information, and the edge cases that might occur on the frontend or the backend. Something is ready when developers, PMs, and other designers agree it feels complete, both in how it works and how it looks.

The second half of the answer: handoff is a conversation, not a file you throw over a wall.

Bring developers in before the design is done

Figma's own handbook for developer handoff says it plainly: "It's never too early to bring a developer in." Engineers can flag technical limits and spot opportunities while ideas are still cheap to change.

They also put the core tension well: "Design is 'what we want' and development is essentially 'what we have.'" Your job is to close that gap early, not discover it in review.

Ask pointed questions, because, as the handbook notes, developers "won't know what you don't know." Good ones to start with:

  • What data actually exists for this screen, and what can be missing?
  • What is expensive to build, and is there a cheaper version that keeps the intent?
  • What do you want annotated, and what can you read straight from the file?

Design every state, not just the happy path

Most guessing happens here. A developer gets a perfect screen with ideal data, then has to invent the rest.

For every screen, design at least:

  • Empty. What the user sees with no data yet. Nielsen Norman Group warns that "totally empty states cause confusion about how and whether the system is working." Use the space to show status, teach the feature, or give a clear first action.
  • Loading. NN/g recommends skeleton screens for full-page loads under about 10 seconds, spinners for a single module, and progress bars for longer waits or uploads.
  • Error. What failed, in plain words, and what the user can do next.
  • Edge cases. Figma's handbook notes that "design intent breaks down" with user-provided content. Test long names, missing images, low-resolution photos, and half-filled profiles.
  • Interactive states. Hover, pressed, focus, and disabled for every control.

Do not forget the backend side. What happens on a timeout, a failed payment, or a permission error? If you do not design it, someone will improvise it.

Specs, tokens, and assets

Use tokens, not raw values. If your colours and spacing are Figma variables, a developer sees the variable name, and in Dev Mode can follow its alias chain back to the raw value. A hex code invites copy-paste. A token name like content/primary maps straight to code. My guide on building a design system in Figma covers how to set this up.

Name your layers. Figma's handbook says "Developers rely on layer names when inspecting a design and building out the structure in code." A layer called "Frame 123" makes them guess.

Write down behaviour. Use annotations for what a screenshot cannot show: what triggers an animation, how a list sorts, what a truncated label does on hover.

Prepare every asset. Figma recommends applying export settings to the frames, components, and assets developers will need for the production build. Icons, illustrations, images, and video should be named, sized, and ready, not buried in a frame.

What Figma Dev Mode gives you

Dev Mode is Figma's workspace for developers to inspect designs. It is available on all paid plans and needs a Full or Dev seat. The features that matter most for handoff:

FeatureWhat it doesPlan
Ready for devMarks frames, components, or sections as ready to buildAll paid
Completed statusMarks the build as doneOrganization, Enterprise
Annotations and measurementsNotes and spacing specs on the canvasAll paid
Compare changesShows what changed against a previous versionAll paid
Code ConnectShows your real component code snippetsOrganization, Enterprise

If a design marked ready is edited later, Figma flags it as Changed, so developers know to look again. Annotations and measurements need a Full seat with edit access to add. Anyone with a Full or Dev seat who can view the file can read them.

Figma's MCP server also lets developers "get design context and code" from Figma files inside their AI coding tools. I use Figma MCP with Claude Code myself, and it cut real friction from my design-to-dev handoffs. It does not replace the conversation, though. It just means fewer questions are about pixels.

A handoff checklist you can copy

CheckDone when
StatesEmpty, loading, error, and edge cases exist for every screen
InteractionsHover, pressed, focus, and disabled exist for every control
TokensNo raw hex or pixel values outside the system
LayersNamed by what they are, not "Frame 123"
AssetsExport settings applied, every file named and sized
NotesBehaviour, animation, and backend cases annotated
StatusMarked Ready for dev, old explorations archived
Sign-offA developer and a PM have walked through it with you

The last row matters most. If the developer still has questions after the walkthrough, the handoff is not finished.

Your next steps

  1. Take one screen you have designed and add its empty, loading, and error states this week.
  2. Rename every layer in that file and replace any raw colour with a variable.
  3. Ask one developer what they wish designers handed them, and add it to your checklist.
  4. Write the handoff into your case study. Showing the states and edge cases proves you think past the happy path. My case study guide shows where it fits.

If you want to close the gap from the other side and build what you design, read what a design engineer is.

Sources

  1. 1. The designer's handbook for developer handoff, Figma,
  2. 2. Designing Empty States in Complex Applications: 3 Guidelines, Nielsen Norman Group,
  3. 3. Skeleton Screens 101, Nielsen Norman Group,
  4. 4. Guide to Dev Mode in Figma, Figma Help Center,
  5. 5. Dev Mode statuses and notifications, Figma Help Center,
  6. 6. Variables in Dev Mode, Figma Help Center,
  7. 7. Optimize design files for developer handoff, Figma Help Center,
  8. 8. Add measurements and annotate designs, Figma Help Center,
  9. 9. Compare changes in Dev Mode, Figma Help Center,
  10. 10. Guide to the Figma MCP server, Figma Help Center,

Still stuck? The guides are general. Your situation is not.