Specs are automated now, so handoff fails on the rules and the rationale. The three layers, the edge cases every handoff must cover, and the checklist to run before you call it done.

Category
Design
Author

Justkay
Documentary Filmmaker & Founder at Storyflow
Topics
2026-07-29
•
13 min read
•
DesignTable of Contents
A complete design handoff has three layers, and only the first is automated. Layer one is the what: screens, specs, assets, and tokens, which modern design tools generate for you. Layer two is the rules: every state, transition, breakpoint, and edge case that a static frame cannot show, including empty, loading, error, long-content, and permission variants. Layer three is the why: the intent behind each decision, and which parts are non-negotiable versus which are preferences an engineer may trade against implementation cost. Handoff quality is now determined almost entirely by layers two and three, because layer one takes care of itself. The reason this matters is that the old complaint about handoff, that engineers do not have the specs, is largely solved. Any developer can open the file and read exact spacing, colour, and type. What they still cannot do is find out what should happen when the list has one item, or when the name is forty characters long, or when the request fails, because none of those were drawn. Put simply: handoff does not fail on the screens you designed. It fails on the screen nobody designed, and that is decided by whether the engineer knows why. I run a small product team, and the pattern is reliable. The bugs that come back after a build are almost never "this is two pixels off." They are "we did not know what to do here, so we guessed," and the guess was reasonable and wrong.
Full disclosure: Storyflow is our own product, so weigh its placement here with the skepticism you would apply to any tool a company recommends on its own blog. We rank it last, and on this workflow it is not close. Figma Dev Mode is design handoff: it generates the specifications, measurements, and assets that are the substance of the task, and Storyflow generates none of them. The design does not live in Storyflow either, so using it here adds a surface rather than replacing one. Its single honest contribution is the rationale layer, which is the part no tool generates and most teams never write down.
Layer one of handoff is automated, so the tools that matter now are the ones that carry behaviour and reasoning. Most teams need one of each rather than a single product.
| Tool | Best For | AI Features | Price |
|---|---|---|---|
Figma Dev Mode | Specs, tokens, and assets | Limited | Varies by seat |
Notion or a repo doc | The behavioural rules | Varies | Free to low |
Loom | Async walkthrough of intent | Transcription | Varies by plan |
Storyflow | The rationale layer | Reads the whole board | Free / $7.99 mo |
Engineers guess when they hit a case nobody drew. Keep the brief, the constraints, the rejected directions, and the reasoning on one board so the guess becomes a decision.

Screens, measurements, colours, type, spacing, assets, and design tokens.
This layer is automated. Dev Mode in Figma and its equivalents expose measurements, generate code snippets, and export assets on demand. Your job here is small and mostly about hygiene: name layers so they are findable, mark the file version that is actually being built, remove the abandoned explorations, and make sure tokens map to whatever the codebase already uses rather than inventing a parallel naming scheme.
If you are spending significant handoff time here, you are doing work a tool does better.
Everything true about the interface that a static frame cannot express.
States. Default, hover, focus, active, disabled, selected, loading, and error for every interactive element. Focus states in particular are skipped constantly and are a keyboard accessibility requirement, not a nicety.
Content extremes. What the screen looks like with nothing, with one item, and with far more than expected. What happens to a layout when a name is one character or seventy.
Transitions and motion. Duration, easing, what animates and what does not, and what the reduced-motion version is. If motion is unspecified, it will either be omitted or invented.
Responsive behaviour. Not just the breakpoints you drew, but what happens between them. Which elements reflow, which wrap, which are hidden, and what the priority order is when space runs out.
Interaction detail. What is clickable versus what merely looks clickable, what happens on submit, what is optimistic versus what waits for the server.
This layer is where most handoff effort should go, and it is the one that shrinks review cycles the most.
The rationale that lets an engineer decide correctly about something you never drew.
The intent of the screen. What is the user trying to accomplish, and what is the one thing that must work.
Which rules are load-bearing. "The primary action must remain visible without scrolling" is a constraint. "This card has a twelve-pixel radius" is a preference. If you do not distinguish them, engineers treat them identically, which means either everything gets litigated or nothing does.
What was tried and rejected. Prevents the well-meaning suggestion to implement the thing you already ruled out.
The known compromises. Where you already know the design is imperfect and why you accepted it. This stops an engineer spending a day fixing something you decided on purpose.
Layer three is almost never delivered, and it is the layer that determines whether the build survives its first unanticipated case.
Run this before calling a handoff complete.
| Category | Item | Commonly missed |
|---|---|---|
File hygiene | The version being built is clearly marked | Yes |
File hygiene | Abandoned explorations removed or archived | Yes |
File hygiene | Layers and components named meaningfully | Very often |
File hygiene | Tokens match the names used in code | Often |
States | Default, hover, focus, active, disabled for every control | Focus, almost always |
States | Loading state for anything that waits on a server | Often |
States | Error state, with the actual error copy | Very often |
States | Success and confirmation states | Often |
Content | Empty state, with copy and any call to action | Very often |
Content | Single-item and maximum-item versions of every list | Almost always |
Content | Long text, long names, long numbers | Almost always |
Content | Real copy rather than placeholder text | Often |
Responsive | Behaviour between the breakpoints you drew | Almost always |
Responsive | Priority order when space runs out | Almost always |
Motion | Duration, easing, and what does not animate | Often |
Motion | Reduced-motion alternative | Almost always |
Accessibility | Focus order and keyboard path through the screen | Almost always |
Accessibility | Contrast checked on text and on interactive elements | Often |
Accessibility | Labels for icon-only controls | Almost always |
Accessibility | What a screen reader should announce on state change | Almost always |
Rationale | The one thing on this screen that must work | Almost always |
Rationale | Which constraints are non-negotiable | Almost always |
Rationale | What was tried and rejected | Almost always |
Rationale | Known compromises and why they were accepted | Almost always |
Process | A named person to ask, and how to reach them | Often |
Process | Agreement on who decides when reality differs from the design | Almost always |
The last row is the most valuable one in the table. Something will not be buildable as drawn. Deciding in advance who adjudicates that, and how fast, is worth more than any amount of specification.
The word implies a moment, and treating it as one is the most common structural mistake. Handoff is a sequence of checkpoints, and the earlier ones do most of the work.
While the design is still rough, bring an engineer in. Not for approval, for feasibility. Ten minutes at sketch stage catches the thing that is disproportionately expensive to build, while it is still free to change. This is the single highest-return moment in the whole sequence and it is the one most often skipped, usually because designers do not want to show unfinished work.
When the direction is settled, agree the data. What fields exist, what is optional, what the real maximum lengths are, what the API can and cannot return. A large share of edge-case surprises are really data surprises, and they are knowable before the screens are drawn.
When the design is complete, do the walkthrough. Live or recorded, twenty minutes, covering intent, the states, the edge cases, and what is non-negotiable. Not a screen-by-screen tour, which nobody retains.
During the build, stay reachable. The questions that arrive mid-build are the valuable ones, because they are exactly the cases the design did not anticipate. Answer them fast and write the answers somewhere they persist, because the next engineer will hit the same case.
When something cannot be built as drawn, use the protocol. Somebody decides, quickly, and the decision goes back into the file so the design and the product do not silently diverge.
After the build, review the implementation against the intent, not the pixels. The useful question is whether it does the job, not whether the padding matches. Pixel-diffing an implementation is a poor use of a design review and it trains engineers to treat the whole handoff as pedantry.
The pattern across all six: the cheap checkpoints are early and the expensive ones are late. A team that only does the third one has moved all of its risk to the end.
If you produce nothing else beyond the screens, produce these.
Empty. No data yet, and the difference between "you have not created anything" and "your filter matched nothing," which are different messages with different actions.
Loading. Both the first load and the subsequent refresh, which usually look different. Whether it is a skeleton, a spinner, or nothing at all.
Error. Network failure, server failure, validation failure, and permission denial. Each needs copy, and the copy is a design decision rather than something engineering should invent.
Overflow. Long names, long titles, many items, deep nesting. Truncate, wrap, or scroll, and where exactly.
Permissions. What a user without access sees. Hidden entirely, visible but disabled, or visible with an upgrade path, and this is a product decision with real consequences.
Offline or stale. Whether the interface acknowledges it, and what happens to actions taken in that state.
Slow. What happens when something takes ten seconds instead of two hundred milliseconds. Often the most common real-world state and the least designed.
Accessibility added after a build is a rebuild, which is why it belongs here rather than in a later pass.
Focus order. The keyboard path through the screen, especially where the visual order and the DOM order differ.
Focus visibility. An actual designed focus state. The browser default is acceptable and being removed without a replacement is not.
Contrast. Checked for body text, but also for placeholder text, disabled states, icons carrying meaning, and text over images.
Names for icon-only controls. Every icon button needs an accessible name, and the designer is better placed to write it than the engineer.
Announcements. When something changes without a page load, decide what a screen reader should say. Silence is a decision, and usually the wrong one.
Motion. A reduced-motion alternative for anything that moves substantially.
Target size. Interactive targets large enough to hit reliably on a touch screen, which is a layout decision made at design time.
When the receiving team is outside your organisation, three things change.
You will not be in the standups. The rationale layer has to be written down properly rather than transmitted by proximity, because there is no corridor to catch a question in.
Assume no shared design system. Tokens, components, and patterns that are implicit internally must be explicit here, including the ones you think are obvious.
Agree the deviation protocol in writing. What happens when something cannot be built as designed: who is told, how quickly, and who decides. Without this, external teams substitute silently and you discover it at review.
A short written rationale document, even one page, is worth more on an external handoff than another twenty screens.
Best for the handoff itself: Figma Dev Mode. Specs, measurements, tokens, code snippets, and asset export directly from the file the design lives in. For product work this is the default and there is no serious competitor. Included with paid Figma plans; pricing varies by seat type (verify current pricing).
Best for the specification of behaviour: a written document beside the file. Notion, a Markdown file in the repo, or a page in your wiki. The rules layer is prose and tables, not pixels, and it belongs where engineers already read things.
Best for async explanation: Loom. A five-minute walkthrough of intent and edge cases before the build starts reliably prevents a category of misunderstanding that written specs do not.
Best for the rationale layer: Storyflow. The canvas where the brief, the rejected directions, the constraints, and the reasoning sit together, so an engineer facing an undesigned case can see why the design is the way it is. Free plan is $0; Plus is $7.99/month billed annually. The honest limit: it produces no specs, no measurements, and no assets, and the design does not live there.
| Tool | Best for | Generates specs | Free tier | Starting price |
|---|---|---|---|---|
Figma Dev Mode | The handoff itself | Yes | Limited | Varies by seat |
Notion or a repo doc | The behavioural rules | No | Yes | Free to low |
Loom | Async walkthrough of intent | No | Yes | Varies by plan |
Storyflow | The rationale layer | No | Yes, unlimited boards | $7.99/mo annual |
Pricing checked July 2026. Competitor pricing changes often and varies by plan and seat type, so verify on each vendor's page before quoting it.
Treating handoff as an event. It is a conversation that starts before the design is finished and continues through the build.
Spending the effort on layer one. Specs are automated. Effort there is effort wasted.
No edge cases. The single largest source of post-build divergence.
No focus states. Skipped almost universally, and a keyboard accessibility failure.
Placeholder copy shipped as final. Lorem ipsum in a handoff becomes lorem ipsum in staging.
Not distinguishing constraints from preferences. Engineers cannot make good trade-offs without knowing which is which.
No named contact. A blocked engineer with nobody to ask will guess, and the guess costs a review cycle.
Accessibility deferred to a later pass. That pass is a rebuild.
The old handoff problem was information transfer, and tooling solved it. An engineer can read every measurement in your file without asking you anything.
What tooling did not solve is that a design file describes a finite set of screens and a real product has an infinite set of situations. The gap between those two is filled by an engineer making a judgment, and the quality of that judgment depends entirely on whether you told them what the screen is for and which rules actually matter.
So spend the effort where it counts. Draw the states and the edge cases, write down the rules that no frame can show, and say plainly what is non-negotiable and what you would happily trade. Handoff does not fail on the screens you designed. It fails on the screen nobody designed, and that is decided by whether the engineer knows why.
Design handoff is the transfer of everything an engineering team needs to build an interface correctly: the screens and specifications, the behavioural rules that a static frame cannot show, and the rationale behind the decisions. Modern tooling automates the first of those three, so the quality of a handoff now depends almost entirely on the other two.
The marked final screens with named layers and code-matching tokens; every interactive state including focus, loading, and error; content extremes such as empty, single-item, maximum, and long text; responsive behaviour between breakpoints; motion specifications with a reduced-motion alternative; accessibility details including focus order and accessible names; and the rationale, including which constraints are non-negotiable and what was already rejected.
Predominantly the things that are not visible in a static frame: what happens in every state, what happens at content extremes, what happens when something fails, and why the design is the way it is so they can decide correctly about cases nobody drew. Measurements are the part they can already get themselves.
A mode in Figma that presents a design file for implementation: measurements, spacing, colours, tokens, generated code snippets, and asset export, with a view of what has changed between versions. It solves the specification layer of handoff, which is why the remaining handoff effort belongs on behaviour and rationale.
Mark the version being built, ensure states and edge cases are drawn, write the behavioural rules as a document beside the file, record the rationale including what is non-negotiable, walk the team through it live or by recorded video, and name a person who is available for questions during the build. Then stay reachable, because handoff is a conversation rather than a delivery.
Empty (with a distinction between no data and no results), loading (first load and refresh), error (network, server, validation, and permission), overflow (long names and large collections), permission-restricted views, offline or stale data, and the slow case where an operation takes far longer than expected.
Yes, always, because accessibility added afterwards is effectively a rebuild. The handoff should specify focus order, a designed focus state, contrast including placeholder and disabled text, accessible names for icon-only controls, what screen readers announce on state changes, reduced-motion alternatives, and adequate touch target sizes.
A design review is a session for improving the work, run among people who share responsibility for it. A handoff is the transfer of a finished design into implementation. A review asks whether this is right; a handoff assumes that is settled and asks whether it can be built correctly without the designer present.
Detailed on behaviour and rationale, light on measurements. A useful test: could a competent engineer who has never spoken to you build this and make a defensible decision on a case you did not draw? If yes, it is detailed enough. If they would have to guess at intent, layer three is missing.
The designer owns assembling it, but it is a shared obligation. Engineering should say what it needs, and both sides should agree in advance who decides when something cannot be built as designed. That deviation protocol prevents most handoff conflict.
For the rationale layer only. Keeping the brief, the constraints, the rejected directions, and the reasoning on one canvas gives an engineer facing an undesigned case something to reason from. Free to start.
Three places, decisively. It generates no specifications, measurements, or code snippets, which is the core of handoff and precisely what Figma Dev Mode does. It does not export assets. And the design itself does not live there, so using it means adding a surface rather than replacing one.
Every Storyflow board starts from real structure and an AI that reads the whole canvas. Open one of these templates and make it yours.
A visual AI workspace where every feature lives inside one canvas. No tab-switching, no context lost.
Build your entire board from a single message
Type what you need in the AI chat at the bottom of your canvas. The AI adds cards, headings, and structure directly onto your board.
Use expert frameworks as AI context
Type @ in the AI chat and choose any Tactic. The AI tailors every response to that framework instead of giving generic advice.
Turn your board into a mind map in seconds
Ask the AI to restructure your canvas as a mindmap. It connects your ideas into a visual hierarchy so you can see how everything relates.
Storyflow actually began as a personal tool while working on creative and research projects.
We kept running into the same problem: ideas were scattered everywhere: notes, documents, and whiteboards.
Nothing helped us see how everything connected.
So we started building a workspace designed around how ideas actually grow.
→ Read how Storyflow was created
Justkay
Documentary Filmmaker & Founder at Storyflow
Published: 2026-07-29
Transform your creative workflow with AI-powered tools. Generate ideas, create content, and boost your productivity in minutes instead of hours.
Ask Storyflow to