A practical guide to Figma handoff covering layer naming, design tokens, component states, specs and a checklist, so developers build what you designed without constant questions.
A handoff fails quietly. The designer shares a link, the developer opens a file with 4,000 layers named "Frame 2041", and ten questions arrive in chat before lunch. Each question is small. Together they cost days and produce a build that is "close" to the design.
A good handoff is not a separate document. It is a Figma file organized so that the developer can answer their own questions. This post covers the five areas that matter most: file structure, naming, tokens, states, and specs, followed by a checklist.
Developers open a file looking for one thing: what do I build, and in what order? Make that answer visible before they scroll.
Names are the cheapest handoff tool. If the layer name matches the component name in the codebase, the conversation shortens.
Frames and screens: use plain, ordered names: 01 Sign up, 02 Verify email, 03 Dashboard / empty. The slash is useful: Figma groups names with slashes into a tree.
Components: use a consistent pattern, Category / Name / Variant. For example Button / Primary / Large, Input / Text / Error. Ask your developers what their component names are, and use the same words.
Layers inside components: rename the ones that matter. Label, Icon left, Helper text tell a developer what is a slot and what is fixed. Delete the layers called Rectangle 12 and Group 4 that do nothing.
A practical rule: if a layer would become a prop, a class or a slot in code, give it a name a developer would type.
When a developer sees #2F6FED in a fill, they have to decide whether it is the brand blue, a one-off, or a mistake. A token removes the question.
Figma variables let you store colors, numbers, strings and booleans, and apply them to fills, spacing, corner radius and more. Use them in two layers:
blue-500 or space-16.color-action-primary, color-text-muted, space-card-padding. These point to primitives.Developers want the semantic layer, because it maps cleanly onto CSS custom properties or a theme file:
:root {
--color-action-primary: var(--blue-500);
--color-text-muted: var(--gray-600);
--space-card-padding: 16px;
}
Agree on the naming with the developers before you create tokens, so that Figma and code use one vocabulary. If a theme matters (light and dark, or several brands), use variable modes so that one component serves both.
Do the same for type: text styles such as heading-lg and body-md, each holding size, line height and weight.
The test: select any element and check the right panel. If fill, text and spacing all show token names, you are done. If they show raw hex codes, the element is not ready.
The most common source of "can you check the design for this?" messages is a missing state. Developers will ask about what they cannot see, or invent their own behavior.
For each interactive component, show:
For each screen, add the variants that change layout:
Build these with Figma component variants and properties, so one component holds all states. Label the variants with the same words the code will use (state=hover, size=lg), since variant names often become prop names directly.
Focus states are the one most often forgotten, and they matter for keyboard users. Design a visible focus ring, and show it.
Developers can already read pixel values from Figma's Dev Mode (inspect panel). Spend your effort on what the inspector cannot say.
Useful annotations:
Less useful: redlines on every margin. If you use auto layout and spacing tokens, the inspector already holds those values. Annotate only the exceptions: "This gap is 24px on purpose, not 16px."
Export icons as SVG and tell developers which images are placeholders.
A file with no explanation still leaves gaps. Spend 30 minutes with the developer, ideally before the build begins:
The last point matters. A developer who sees the file early will often propose a cheaper implementation that keeps the intent. That conversation is cheaper before the build than during review.
Before you mark a section "Ready for dev", check:
No. Even a small set of color and text tokens and a handful of components removes most ambiguity. Start there and grow it.
Share the same information in whatever they do use: a written spec, a shared token file, or a short recorded walkthrough. The principle stays the same: answer their questions before they ask.
If you want design and development to work from one file with fewer questions in between, the Rising Station team can help set up the workflow or build the product with you. Email hello@risingstation.com or visit risingstation.com/contact-us.
Md Rijvee Ahmmed
Founder & CEO