
Design tokens explained: a practical guide
Tokens are the contract between design and engineering. What they are, how to name them, and how to keep them from turning into a mess.
Design Systems
You do not need a hundred-component library on day one. Here is the minimum viable system that pays for itself immediately.

TL;DR
Most design systems fail from ambition rather than neglect. A team decides to build the whole library up front, the effort never quite ships because there is always one more component, and everyone quietly goes back to copy-paste while the half-finished system gathers dust. The fix is to invert the approach. Start with the smallest system that removes real pain today, prove it on real work, and grow it only when the product actually asks. This is the minimum viable system that pays for itself in the first week, how to roll it out without a big launch, how to get people to actually use it, and how to grow it without it collapsing under its own weight.
Start small
Three things, in order. A token layer: color, type, spacing, and radius as named decisions, so visual consistency stops depending on whether everyone remembers the right values. A handful of workhorse components: button, input, card, and your layout primitives, the pieces you rebuild on nearly every screen. And one real page built entirely from those tokens and components, to prove the system holds up under actual use rather than in a tidy demo. That is the whole starting point. No forty-component library, no exhaustive documentation site, no theming engine you do not need yet. A dozen tokens and five solid components will remove more daily friction than a huge library you never finish, because they cover the parts you touch constantly.

| Layer | Build first | Skip for now |
|---|---|---|
| Tokens | Color, type, spacing, radius | Elevation scales, motion tokens |
| Components | Button, input, card, layout | Data tables, date pickers, charts |
| Proof | One real page built from them | A full documentation site |
A design system does not need a launch event, and treating it like one usually backfires by raising expectations the first version cannot meet. Introduce it quietly on the next real feature. Build that feature entirely from the tokens and the few components, ship it, and let the result be the argument. People adopt a system they can see working on shipped product far faster than one announced in a doc. The first converts are usually whoever was most tired of rebuilding the same button, so make their life easier first and let them tell everyone else.
The instinct to systematize everything is what kills momentum, so resist it deliberately. Leave a pattern as a one-off the first time you build it, and again the second time. When it shows up a third time, systematize it. This rule of three keeps the system honest, because everything in it has earned its place through real, repeated use rather than a guess about what might be needed. A system that grows from demand is also a system people believe in, since every component in it solved a problem they actually had. The opposite, a library stuffed with speculative components, is one people have to learn around, and the learning cost is exactly what pushes them back to copy-paste.
Rule of three
Systematize a pattern the third time you need it, not the first. Premature abstraction fills a library with components nobody reuses and everybody has to learn, which is the weight that makes teams quietly abandon the system.

Early on you do not need a council or a formal process. You need one owner, a short note on how to contribute, and a simple rule that new patterns get a quick look before they spread. That is enough to prevent drift while the system is small, and anything heavier is overhead that slows the thing you were trying to speed up. Formalize only when the team genuinely outgrows a conversation. A five-person team needs a shared channel and one person who cares. A fifty-person organization needs versioning, a named team, and a real contribution process, because at that scale informal coordination stops working. The mistake in both directions is a mismatch: a heavy process on a tiny team, or no process on a large one.
| Team size | Governance that fits |
|---|---|
| Up to about 5 | One owner and a shared channel |
| About 10 to 20 | A short contribution note and quick reviews |
| 50 and up | A named team, versioning, and a real process |
A design system is a means, not a trophy, and there are cases where the smallest version is all you will ever need. A single simple product with a handful of screens and one person maintaining it may be perfectly served by tokens and three components, with no reason to go further. A short-lived project does not need a system it will outlive. The honest test is friction: build the system when you are visibly wasting time rebuilding the same things and losing consistency, and stop growing it the moment it stops removing more pain than it adds. A system that exists to look impressive rather than to save time is just another thing to maintain.
A dozen well-named tokens and five solid components beat a hundred you never finished and nobody uses.
When should a startup build a design system?
As soon as you are rebuilding the same components across screens and losing consistency, which is usually earlier than teams expect but far smaller than they fear. Start with tokens and a few workhorse components, not a full library.
What is the minimum viable design system?
A token layer for color, type, spacing, and radius; a handful of core components like button, input, and card; and one real page built entirely from them to prove it works. That removes most daily friction without the cost of a big library.
How do I know when to turn a pattern into a component?
Use the rule of three: leave it a one-off the first and second time you need it, and systematize it the third. That keeps everything in the system earning its place through real, repeated use.
How much governance does an early design system need?
Very little. One owner, a short contribution note, and a quick review before new patterns spread. Formalize into a team, versioning, and a process only when the group outgrows a conversation.
How do I get people to actually use the design system?
Prove it on shipped work rather than announcing it. Build the next real feature entirely from the system, ship it, and let the result convince people. Adoption follows visible wins, not documentation.
Design systems are not a monument you unveil. They are a habit you build. Start with the smallest thing that removes pain, prove it on real work, grow it by the rule of three, keep governance as light as the team allows, and stop when it stops paying for itself. The token layer underneath it is worth getting right from the start, and the payoff shows up most when design and engineering share that system in production. If you want a right-sized system stood up quickly, it can be built with you.
Related reading