Course 3 · Design Systems & Components · Advanced

Dev Mode and handoff — designs engineers can build

A pixel-perfect file that an engineer cannot read costs the team more than a rough sketch that they can — handoff is a deliverable in its own right, and most of its quality was decided long before you opened Dev Mode.

Read this module through your lens

New to design: this is where your design becomes someone else's build — clarity beats polish.

Handoff is a deliverable

There is a moment every design reaches where it stops being yours and becomes someone else’s to build. How well that goes is not a footnote — it determines whether the product that ships matches the product you designed. And here is the counterintuitive part: a slightly rough file an engineer can read cleanly is worth more than a pixel-perfect file they cannot, because the rough one builds correctly and the perfect one builds wrong.

So handoff deserves to be treated as its own deliverable, not an afterthought you rush at the end. Figma’s Dev Mode is the tool engineers use to read a design — measurements, values, code snippets, exportable assets. But Dev Mode is only a reader. It can show structure; it cannot invent it. Almost all of handoff quality was decided upstream, in how you built the file.

The quality was decided upstream

Everything you have learned in this course is, in retrospect, also handoff preparation. Named layers mean Dev Mode shows an engineer “Primary button / Label” instead of “Frame 12 / Rectangle 4” — intent versus pixels. Components mean a repeated element is recognizably one thing with defined variants, so it gets built once as a reusable piece. Auto layout means the spacing is real padding and gaps, which Dev Mode reports as exact values, instead of hand-nudged positions an engineer must measure by hand. Variables and tokens mean colors and spacing arrive as named tokens — “color/primary”, “space/16” — that map straight to the codebase, instead of raw hex the engineer has to reverse-engineer into the system.

In other words, a file built well by the standards of the earlier modules is already most of the way to a great handoff. A file built as loose, unnamed, hard-coded rectangles cannot be rescued by Dev Mode, because there is no structure for Dev Mode to surface. You cannot inspect intent that was never expressed.

What Dev Mode adds, and what you still owe

With a clean file, Dev Mode does the rest of the read-side work. An engineer selects an element and sees its exact dimensions, spacing, and the distances between things; they copy color and type values, see your variables as token names, grab CSS or platform snippets, and export icons and images at the right scales. Frame statuses (marking a frame Ready for dev) tell them what is safe to build versus still in flux — skipping this is how engineers waste days building a screen you are still changing.

But two things Dev Mode cannot read, and you must supply. Behavior: what happens on hover, on error, when the list is empty, when the text is too long. These states and edge cases live in your head unless you annotate them, and undocumented behavior gets rebuilt wrong. And the flow: hand off the prototype alongside the specs, because the static frames do not show how screens connect or how transitions feel.

So a complete handoff is: a well-structured file, statuses set, behavior annotated, and the prototype shared next to the specs. That is a design an engineer can build into the product you actually designed.

Hands-on exercise

Take a component or screen and prepare it for real handoff. Upstream: confirm layers are named, it uses components and auto layout, and its colors/spacing come from tokens. Mark the frame Ready for dev, and add at least one annotation for a non-obvious state (hover, error, or empty). Then open Dev Mode and walk it as an engineer would — inspect spacing, copy a token, export an asset. Finally, note one thing Dev Mode surfaced because of your upstream work that it could not have shown on a loose, unnamed version.

The same lesson, a different object

first try

A designer finishes a card and sends engineering a PNG export plus 'build this'.

problem

The PNG has no measurements, no token names, no states; the engineer eyeballs spacing, picks approximate colors, and misses the hover and empty states entirely, so the build drifts from the design.

fix

Hand off the Figma frame in Dev Mode: layers named, padding from tokens, variants for states, status Ready, and an annotation for the empty state. The engineer now reads exact specs and token names instead of guessing.

The failure gallery

Each of these is caught by a quality gate — keep the cheatsheet open while you work.

See the journey

🖼 Dev Mode inspect panel on a component — measurements, token names, and a code snippet that a screenshot can never carry. screenshot slot · supplementary to the written core
Buildable handoff is earned upstream: named layers, components, auto layout, and tokens make a file self-explanatory. Dev Mode then exposes measurements, code, and tokens — but it can only read the structure you gave it.

Cheatsheet

Recipe & shortcuts
Upstream (the real work): name layers, use components, auto layout, and variables/tokens. Mark frames Ready for dev (status). Add annotations for non-obvious behavior. Dev Mode: inspect spacing/sizes, copy values, see variables as token names, export assets. Hand off the FLOW (prototype) + the SPECS (Dev Mode), not just static frames.
Failure modes
  • Unnamed layers / detached chaos -> Dev Mode shows pixels, not intent
  • Hard-coded values instead of tokens -> engineer guesses the system
  • No statuses -> devs build a screen still being changed
  • Behavior (states, edge cases) undocumented -> rebuilt wrong
  • Handoff = a screenshot, losing measurements and tokens
Key operations
  • Prepare upstream — names, components, auto layout, tokens
  • Set Ready-for-dev status on finished frames
  • Annotate non-obvious behavior and states
  • Use Dev Mode to inspect, copy values, export assets
Quality gates
  • Can an engineer read intent (tokens, component names), not just pixels?
  • Are finished frames marked ready, in-progress ones not?
  • Are non-obvious states/behaviors annotated?
  • Is the prototype (flow) handed off alongside the specs?
Workflow steps
  • Clean the file upstream (names, components, auto layout, tokens)
  • Mark statuses; annotate behavior
  • Walk Dev Mode as the engineer would
  • Hand off flow + specs together
Next module
  • sys_governance — keeping the whole system consistent and adopted over time.

Reflection card

Active retrieval — answer from memory before re-reading. Saved to this browser.

  • A component/screen prepared for handoff (named layers, components, auto layout, tokens).
  • A frame marked Ready for dev with at least one behavior/state annotation.
  • One thing Dev Mode surfaced thanks to upstream structure that a loose version could not.

Next: sys_governance — keeping the whole system consistent and adopted over time.

Finish — back to Design Systems & Components →