By role
Design
One system, every surface. The hard part of a design system is not drawing it. It is keeping twelve surfaces agreeing with it a year later.
The constraint
A design system that exists in one place is a style guide. It becomes a system when the surfaces cannot drift.
What goes wrong
- The system ships, the surfaces do not
- Tokens change in one repository and are adopted per team, on each team's own schedule. Six weeks later three versions of the same control are in production, and each team can show you why theirs is correct.
- Documentation is the only enforcement
- The rules live in a page, and a page cannot fail a build. Every exception is reasonable on the day it is made, and the accumulation is the thing nobody would have agreed to in advance.
- Drift is found by looking
- There is no view of which surface runs which version, so the answer comes from a screenshot in a review rather than from a check. What gets fixed is what somebody happened to open.
What changes
What stops
A token change becomes a ticket per team and a chase.
What replaces it
Every surface deploys from the same pipeline, so the change lands on one day.
What stops
Which version a surface runs is discovered by opening it and looking.
What replaces it
Each surface is a project with a version you can read without a screenshot.
What stops
A rename is announced, then followed up in four separate threads.
What replaces it
The old version stays addressable, so a surface can move without a coordinated release.
What stops
Contrast and spacing are argued per screen, by whoever is in the review.
What replaces it
The pairs are decided once, in the tokens, and a screen inherits the decision.
Questions we get asked
- We have a component library. Is that not the system?
- A library is where the system is drawn and agreed. It is not where the system is enforced, and the gap between those two is where drift lives. If every surface you own ships from one application, the library may genuinely be enough and this page is not for you.
- How much of this is really a tooling problem?
- Less than the tools suggest. Most drift is a release problem wearing a design costume: teams diverge because they ship on separate schedules, and a shared component only helps once it reaches production at the same time everywhere.
- Do we have to move every surface at once?
- No, and attempting it is the usual way this fails. Move the surface that changes most often first, because it repays the work soonest and produces the honest list of what the system does not yet cover. The frozen surfaces can wait until they are touched again.
What fits
Bring the surface that changes most often and the one nobody has touched in a year. The distance between those two is the size of the problem.
Talk to us