
Handoff fails in predictable places. The happy path is beautifully designed and everything around it is left to the developer to invent at 6pm on a Thursday.
Design the unhappy paths
- Empty states — what the screen looks like before there is any data.
- Loading states — skeletons, not spinners, wherever layout is predictable.
- Error states — what went wrong and what to do next, in that order.
- Long content — names, addresses and titles that are three times longer than the mock.
- Permissions — what a user who cannot do this sees instead.
Tokens before components
Colour, spacing, radius and type scale defined as named values means a change propagates once. Hard-coded hex values in a design file become hard-coded hex values in a codebase.
Accessibility at design time
Contrast ratios, focus states and touch target sizes are design decisions. Discovering them during a late audit means redesigning under deadline, which is how accessibility gets quietly dropped.
A component is not done until you have drawn it broken, empty and loading.


