Marketing needs
August arrives and the pace changes.Part of the team is on holiday, meetings become less frequent,…
Search
August arrives and the pace changes.Part of the team is on holiday, meetings become less frequent,…
We increasingly make decisions with the help of an automatic recommendation.A platform chooses…
A design system often begins with a clear intention: to reduce inconsistencies, make reuse easier…
A design system often begins with a clear intention: to reduce inconsistencies, make reuse easier and help design and development work with a shared language. In its early stages, the library is manageable, components are easy to identify and decisions can still be made among a small number of people.
The problem arises when the product, the team and the needs begin to grow.
New variants emerge to address specific cases, some components are duplicated because the right option cannot be found, and certain exceptions, initially temporary, end up becoming a regular part of the interface. Meanwhile, the documentation stops reflecting what happens in production, and design and development begin working with different versions of the same pattern.
This disorder does not usually appear suddenly. It builds up gradually through small decisions that seem reasonable in isolation: copying a component to move faster, adding a property that only one team needs, or postponing an update because there are other priorities. Over time, the library grows, but it does not necessarily improve.
Then, the system that was meant to reduce decisions begins to create them. Designers hesitate over which component to use, developers find differences between design files and code, and every change requires checking dependencies that nobody fully understands. Consistency is no longer guaranteed by the system and once again depends on the individual effort of each person.
At this point, the challenge is no longer about designing more components. It is about creating a sustainable way to maintain them, evolve them and decide what should remain, change or disappear. This is where Design Ops and governance stop being secondary organisational matters and become an essential part of the design system itself.
A design system does not maintain itself. It may have a well-built library, reusable components, consistent tokens and comprehensive initial documentation, but all of this loses value if there is no clear way to manage its evolution.
This is where Design Ops comes in.
Design Ops is not simply about organising files, coordinating meetings or maintaining a delivery schedule. Its role is to create the conditions for design work to remain sustainable as teams, products and needs increase. In a way, it is the operating system that allows the design system to keep working.
While the design system defines which components, patterns and principles should be used, Design Ops establishes how they are created, who maintains them, how they are reviewed and when they should be updated or retired. It also helps decide how other teams can contribute and which criteria must be met before a new solution is added to the shared library.
Without these rules, every change depends on improvised conversations. It is unclear who can approve a variant, what to do when design and code do not match, or how to act when a component no longer meets the product's needs. The result is often a mix of local decisions, duplications and solutions progressing in parallel.
To avoid this, at least three elements are needed: responsibilities, processes and shared criteria.
Responsibilities make it possible to know who maintains each part of the system, who validates changes and who should intervene when a problem arises. Processes provide an understandable path for proposing, reviewing, testing and publishing improvements. Criteria help distinguish when a need justifies a new component, when it can be resolved with a variant and when it is best to keep a solution outside the wider system.
This does not mean turning every decision into a slow procedure or centralising all control in one team. On the contrary, a good Design Ops structure should reduce reliance on constant conversations and make it easier for people to move forward independently within known boundaries.
The goal is not to add more management around design, but to prevent a lack of management from creating more work. When responsibilities, processes and criteria are clear, the design system can grow without relying on the memory, availability or individual judgement of a small number of people.
As a design system grows, so does the number of people who use it, modify it and identify new needs. That is why it is not enough to allow contributions: it must also be clear who can make decisions about the system.
Ownership defines who maintains each component, who reviews changes, who validates its implementation and who decides when a solution should be updated or retired. It does not mean that one person controls everything, but that every decision has a recognisable owner.
There are different governance models. In a centralised model, a dedicated team maintains the system and approves contributions. In a federated model, different teams participate more autonomously under shared rules. The hybrid model combines both approaches: a central core protects the foundations while other teams contribute in specific areas.
There is no single model that works for every organisation. The choice depends on the size of the team, the variety of products and the maturity of the system. What matters is avoiding two extremes: having everything depend on a small number of people, or allowing anyone to introduce changes without coordination.
Effective governance does not seek to control every detail, but to ensure that decisions have context, shared criteria and follow-through. In this way, the system can evolve without losing coherence or becoming an obstacle for those who use it.
Component sprawl occurs when the library grows without sufficient control and begins to fill with duplicate components, near-identical variants and solutions created to address very specific cases.
It is often not caused by a lack of judgement. Teams need to move forward and, if they cannot find a suitable solution or the process for requesting changes is too slow, they end up creating a local alternative. What seemed like a temporary solution may end up becoming established and coexisting with other similar versions.
Before creating a new component, it is worth checking whether it addresses a shared need, whether it can be resolved through an existing variant, or whether it only affects a specific context. It is also important to consider whether its behaviour, content and purpose are genuinely different, rather than merely its appearance.
A local solution is not necessarily a problem. It can be useful for experimenting and validating a need before incorporating it into the wider system. The risk arises when these exceptions are not reviewed and end up multiplying without anyone knowing which ones should be used.
Avoiding component sprawl is not about limiting growth, but about ensuring that every new piece has a clear reason to exist and a defined place within the system.
When a component changes, publishing a new version is not enough. The people who use it need to know what has changed, why, who it affects and whether they need to take any action to adapt.
For this reason, versioning should communicate the status of each component: whether it is experimental, stable, due to become obsolete or scheduled for removal. When a change breaks previous behaviour, it should also include migration instructions and a reasonable timeframe for applying them.
Documentation is part of this process. It should not be limited to describing properties, sizes or variants, but should explain what the component is for, when it should be used, what limitations it has and which decisions justify how it works.
To remain useful, documentation must be updated at the same time as design and code. If it is left until later, it can easily end up describing a version that no longer exists.
Living documentation reduces uncertainty, prevents differing interpretations and preserves the context behind every decision. In this way, the system does not depend solely on those who created it, but can be understood and maintained by the whole team.
Design debt emerges when temporary decisions, exceptions or old components begin to hinder the product's evolution. It can appear as duplicated patterns, manually applied values, differences between design and code, or solutions that nobody dares to remove for fear of breaking something.
Not all debt is equally urgent. It is worth prioritising it according to its impact: how much it affects the experience, how many teams depend on it, what risks it creates and how much additional work it causes. This avoids spending time fixing minor details while structural problems remain.
Managing it does not require filling the calendar with meetings. It is more useful to establish simple, predictable rhythms: regular backlog reviews, small component audits, release windows and clear plans for retiring obsolete versions.
It is also important to record debt when it is consciously accepted. A temporary solution can be valid if its scope is understood, it has a responsible person and there is an agreed time to review it.
Maintenance works better when it is part of everyday work and does not depend on a major occasional clean-up. A system that is looked after regularly accumulates less debt and makes future changes faster, safer and easier to understand.
Governance in a design system should not become a chain of approvals that slows down every change. Its role is to provide a clear framework so that teams can move forward independently without losing consistency.
When responsibilities, criteria and processes are understandable, it becomes easier to know when to reuse a component, when to propose an improvement and when to experiment with a local solution. Governance stops being a layer of control and becomes a tool for making decisions with less friction.
There must also be room to evolve. A system that is too rigid can force teams to work around it, while one without boundaries ends up fragmenting. The balance lies in protecting shared principles while allowing new solutions to emerge when the product needs them.
A healthy design system is not one that never changes, but one that can change in an understandable and sustainable way. Good governance means enabling that evolution, reducing repeated decisions and maintaining coherence without turning the system into an obstacle.
Which part of your design system still depends on informal decisions or the knowledge of a small number of people?
Comments