The article
Designs often break between file and build in the same places: missing states, unclear spacing, unexplained motion, fake data that hides edge cases, and “just make it responsive”. I use a checklist to surface those gaps before implementation.
Start with shared tokens. Spacing, type, colour, and radius should have names both design and code can use. If a value appears twice in the interface and once in the code under a different name, the system is already drifting.
Next, annotate behaviour rather than appearance. Developers can see the padding; they cannot see that a card dismisses on swipe after a delay, or that a chart animates on data change but not on filter change. I keep those notes beside the design while they are still current.
Then design with awkward data: long labels, empty search results, names that overflow, and users with unusual settings. Real content is a stress test the happy path rarely survives.
Finally, stay close to the build. Reviewing a real page reveals responsive and interaction details that a static frame cannot. Handoff is a shared phase of the work through release.