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

Every surface deploys from the same pipeline, so a token change lands everywhere on one day rather than per team.

Read more

For adopting a system across teams that already shipped their own, which is the migration and not only the recommendation.

Read more

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