A design system needs to be stable to be trusted. At the same time, it needs to change to remain relevant. This is not a paradox. But in practice, this is often where many design systems begin to strain. With every change made to the system, the question arises: is this still safe to use? And with every attempt to freeze the system, another question appears: does this still reflect reality? The core question, then, is not whether a design system should change, but how a system can remain in constant motion without being perceived as unstable. In our work at Intunio, with design systems used by multiple teams and products over long periods of time, the answer is often the same: versioning. A way to create stability in a system that continues to evolve.
Tobias Rydenhag
Head of Design

Most teams have experienced this in one form or another.
A component is updated to solve a problem in one project. The change itself makes sense. But elsewhere, behavior changes unexpectedly. A layout breaks. A previously working flow behaves differently.
None of this needs to be dramatic. But when it happens repeatedly, something changes in the relationship with the system. Teams hesitate. They double-check. They copy components locally “just to be safe.” The system is still used — but cautiously.
This is a sign that change lacks clear boundaries.
When we talk about versioning, we don’t simply mean version numbers or releases.
At its core, versioning is about being clear on three things:
In the context of design systems, it is often helpful to distinguish between design system versioning and component versioning.
Design system versioning concerns the system as a whole: which assumptions, patterns, and foundational principles apply at a given point in time.
Component versioning concerns change at the component level: when an individual component evolves, is adjusted, or replaced.
Different types of change require different levels of clarity.
A common misconception is that versioning is primarily about visual adjustments. In practice, that is rarely where the real issues arise.
What more often requires versioning includes:
This is where the concept of breaking changes becomes central. Breaking changes are changes that don’t simply refine or extend existing functionality, but require someone to actively adapt their work.
Not all change falls into this category. When it does, it needs to be clearly marked so that change can happen without creating uncertainty.
In most design systems, it quickly becomes clear that different parts evolve at different paces. Some changes affect fundamental assumptions, others build on existing functionality, and some are purely corrective.
To manage this, concepts such as major, minor, and patch versions are often used. Not as a strict rule set, but as a shared mental model for understanding the impact of change.
A simplified example might look like this:
The example itself is not what matters. What matters is that versioning makes the consequences of change clear before it is adopted.
In practice, stability is about giving teams control over when they update, and what kind of change they take on — not about keeping the system static.
When versioning works, the relationship to the design system changes. Change is no longer something vague that “just happens,” but something that is predictable, communicable, and selectable.
In practice, this allows teams to continue working confidently on an established version while the system continues to evolve. Stability does not come from stillness, but from trust that change does not happen behind the backs of those using the system.
In most larger environments, this also means that multiple versions coexist for periods of time. This is not an exception, but a normal state when products move at different speeds. One team may remain on a stable version while another explores the next — without the shared foundation breaking apart.
Versioning then becomes a way to enable parallel development, rather than a mechanism for forcing synchronization.
A design system is never finished.
But it can become reliable.
Our experience at Intunio is that the absence of versioning often leads to more friction, more special-case solutions, and less trust. Not because teams make mistakes, but because the system lacks a way to handle change over time.
Working with versioning is therefore about acknowledging that change is part of everyday reality — and giving teams control over when and how it happens. Versioning is not an afterthought, but part of how a design system remains usable as it continues to evolve.
Not by standing still.
But by moving in a way that can be trusted.