Building a Design System Without Recreating CSS
Design systems often fall into a trap.
You start by adding utility classes. You add responsive options. You add layout helpers. Soon, you build a new syntax. You end up doing exactly what CSS already does.
Stop trying to replace CSS.
Instead, build a layer above CSS. Focus on intent.
Developers want flexibility. But flexibility brings complexity. Many systems expose every breakpoint and layout option. This makes markup hard to read. Your code spends more time describing how to build a layout than what the layout does.
The system becomes hard to understand because it tries to describe everything.
Change your focus. Think less about how a layout is built. Think more about what the layout accomplishes.
Look at this example:
This does not replace CSS. It expresses intent.
- The content adapts to a grid.
- On mobile, it stacks.
The implementation stays inside the system. This is not about more abstraction. It is about better communication.
Good defaults are better than endless configuration. Most layouts follow common patterns. Most developers want to organize content, not invent new layout systems.
A design system should provide thoughtful defaults. If you try to expose every CSS capability, you lose. CSS is already powerful and standardized.
The job of a design system is to:
- Reduce cognitive load.
- Create consistency.
- Communicate intent.
- Make common patterns easy.
Ask yourself this question when designing APIs: "Can I understand this six months from now?"
Do not ask:
- "Can I configure everything?"
- "Can I support every edge case?"
Readability scales. Complexity does not.
Simplicity is not a limitation. The goal is to place power where it belongs. Common workflows should stay simple. Advanced workflows must remain possible.
The best design systems create a shared language. They focus on intent instead of implementation. They help developers communicate purpose.
Developers do not want to build layouts. They want to build products. The layout is just one part of the job.
Source: https://dev.to/stinklewinks/building-a-design-system-without-recreating-css-1a41
