Jul 21, 2026
A system that loses to a deadline isn't a system
Built for the day it ships, it starts rotting the day someone else extends it.

Most design systems get built for the day they ship. Almost none get built for the day someone else has to extend them. That gap is where the whole thing either holds or quietly rots.
A system that only serves launch isn't a system. It's a style guide with better tooling and a nicer landing page.
Page one always fits
Of course the first page works. You designed the components while designing the page, so every call got made with that one layout sitting right there in front of you. It fits because you made it fit.
Page ten is where it gets honest. Someone needs a card with two actions instead of one. Someone needs that table on mobile. Someone hits a state nobody thought about at 4pm on a Friday. What happens next tells you whether you built a system or a snapshot.
If the answer is a one-off component living outside the system, congratulations, it's a snapshot. Do that eight more times and the system is decoration. The real components are the ad hoc ones now, and they answer to nobody.
Every variant is a decision you skipped
The instinct is to cover everything. Every size, every variant, every case anyone might conceivably hit. Feels thorough. Produces something nobody can actually use.
A system with forty spacing values doesn't have a spacing system. It has a number picker. The value was never in the options, it was in taking them away. Six steps people actually follow will beat an infinite scale nobody respects, every single time.
Type, colour, radius, same story. Fewer decisions available means fewer chances to get one wrong, and it means two people working in separate files land on the same answer without a meeting. Which is the entire point.
Blue-500 isn't a reason
blue-500 tells you what a colour looks like. About when to use it? Nothing.
Then dark mode arrives, or a second brand, or an accessible variant, and every blue-500 in the codebase becomes a decision you get to relitigate one at a time, by hand, on a deadline. Semantic names survive redesigns because they describe intent, not appearance. Something called --border-subtle can change its value forever and never stop being correct.
Sounds pedantic right up until the first theme change. Then it's an afternoon versus a fortnight.
The screenshot already shows the what
Anyone can see what a component looks like. The screenshot's right there.
What nobody can see is why the padding is what it is, why the disabled state avoids opacity, or which pattern got tried in 2023 and abandoned for good reason. Undocumented reasoning gets rediscovered the expensive way, usually by someone confidently reverting a fix without knowing it was a fix.
Most useful line in any system doc, and it's not close: "we tried X, it broke Y."
Fewer components, working harder
Scaling isn't more components. Nine times out of ten it's fewer, working harder, in more places.
A system scales when someone new builds a page that belongs without asking permission. When "what do I use here" has an obvious answer. When the shortcut and the correct path are the same path. If doing it right is slower than doing it wrong, the system loses every time, and honestly it deserves to.
Build for whoever joins in a year with none of the context you're carrying right now. That's your real user. You'll never meet them.
