What if components could correct themselves?
Design systems are usually built to hold things steady.
A button should behave like the other buttons. A form should follow a familiar pattern. Navigation should remain understandable as pages and features accumulate. Tokens, components, and documentation give teams a shared language, while sparing them from having to solve the same problems over and over.
That stability is useful. It is one of the main reasons to build a design system in the first place.
But it also means that most components stop learning the moment they are published.
They may collect evidence indirectly. Analytics reveal that people are abandoning a form. Support requests suggest that a label is unclear. A designer notices a recurring point of friction. Eventually, someone returns to the component, forms a hypothesis, makes a change, and waits to see whether it helped.
I have been wondering what it would mean to place a small part of that process inside the component itself.
Not an interface that redesigns itself whenever a metric moves. That sounds exhausting for everyone involved. I mean something narrower: a component that knows what it is there to do, can recognize when it may be falling short, and is allowed to explore a carefully limited set of responses.
A self-correcting component, perhaps.
A component with an intention
Most components are defined by what they are and how they behave.
A primary button has a type style, color, amount of padding, corner radius, hover state, and responsive behavior. Its variants may account for icons, loading, disabled states, and placement on different backgrounds. This is enough to make the button reusable and consistent.
It does not usually describe why the button is there.
Suppose its definition also included an intention. The button might be responsible for helping someone begin an application, request an appointment, or complete account setup. It might know which signals are relevant to that task and what it is permitted to adjust if those signals suggest a problem.
Its definition could include:
- The outcome it is intended to support
- The context in which it appears
- The evidence used to judge whether it is helping
- The properties it may change
- The rules it must not violate
- The changes that require human approval
This would make the component more than a reusable piece of interface. It would become a small system with a purpose and a bounded field of movement.
The distinction feels important. “Make this button more prominent” points toward a visual treatment. “Help people understand how to begin without making the experience feel more aggressive” leaves room for a better diagnosis.
The answer might be stronger contrast. It might also be clearer wording, a useful line of context, or a change somewhere earlier in the journey. Sometimes the button is fine.
The loop is mostly familiar
There is nothing especially novel about measuring an interface, forming a hypothesis, testing a variation, and keeping the version that works better. Product teams already do this.
What changes is where the process lives and how often it can happen.
A component might compare its current performance with an agreed range. If something appears to be wrong, it could propose one or two permitted variations. Those variations would be checked against the design system, accessibility requirements, product rules, and any legal constraints before reaching a limited audience.
The result would then be measured. A useful change might be retained. An inconclusive one could be set aside. A harmful one should be rolled back.
In rough terms:
- Observe what is happening.
- Compare it with the component’s intended outcome.
- Identify a possible source of friction.
- Propose a change within defined limits.
- Validate it against the rules of the system.
- Test it with a controlled audience.
- Measure the wider effect.
- Keep, revise, or discard it.
The difference from ordinary experimentation is continuity. The capacity to notice and respond would be part of the component’s operation, rather than something activated only during a redesign or optimization project.
A small field of movement
Imagine a call-to-action that begins an account-creation process.
Its objective might be to help qualified users complete the first step with less uncertainty. It could be required to remain WCAG AA conformant, use approved tokens, preserve required language, and remain visually consistent with the surrounding product.
Within those limits, it might test:
- A clearer label
- A short line of supporting text
- The presence or absence of an icon
- A modest change in emphasis
- A different position within an already approved layout
It would not be allowed to invent urgency, conceal important conditions, adopt an unapproved color, or use a misleading label because the misleading version happened to produce more clicks.
This boundary is where the concept becomes interesting to me. Adaptation is not inherently thoughtful. It becomes thoughtful only when a system is clear about what may change, what must remain intact, and what counts as harm.
Different components would need very different boundaries. A dashboard card might have room to adjust its hierarchy. Navigation could surface a commonly sought destination more clearly. A form might propose removing an unnecessary field when abandonment rises.
Anything connected to consent, identity, pricing, safety, or legal language would probably need to remain much more still.
The goal would not be to make the entire interface fluid. It would be to find the few places where controlled adaptation could remove friction without making the product feel unstable.
Guardrails would have to become real
Design systems often contain more shared understanding than documented logic.
A team may know that a particular color should be used sparingly, that a transition should feel quiet, or that a certain message would be technically accurate but wrong for the product. These judgments can survive while people remain present to make them. They become fragile when software is allowed to act on its own.
For a component to adapt safely, the values around it would need to be expressed in a form the system could use.
Design tokens provide an early model. They translate decisions about color, type, space, and motion into defined values. Adaptive components would require similar clarity around less tangible concerns:
- Brand character
- Accessibility requirements
- Content and voice
- Legal and compliance rules
- Ethical boundaries
- Product-specific restrictions
- Approval and rollback policies
This may be one of the more useful consequences of the idea, even if self-correcting components never become common. Asking a system to operate within our standards reveals how much of those standards remain vague, contradictory, or undocumented.
Autonomy requires specificity.
A better metric can still produce a worse product
The largest difficulty may not be generating variations. It may be deciding what improvement means.
A louder call-to-action might increase clicks while making the product feel less trustworthy. A shorter form might improve completion but create more work later. Navigation optimized around frequent users may become harder for someone arriving for the first time.
A component can succeed according to one number and still make the experience worse.
Any adaptive system would therefore need counter-signals. A component intended to improve account creation might also watch error rates, cancellations, support requests, accessibility outcomes, and signs of user confidence. A change should not be considered successful simply because it moves the most visible metric.
This is also where human judgment remains difficult to remove. Teams choose which outcomes matter, whose experience is represented in the data, and which costs are acceptable. Those are design decisions, but they are also organizational and ethical ones.
The system can measure what it has been told to measure. People are still responsible for noticing what was left out.
The work of design may move outward
If components were able to make limited decisions, designers would not disappear from the process. Some of the work would simply move outward from the individual state toward the conditions that produce it.
Designers might spend more time defining:
- The outcome a component should support
- The range of acceptable variation
- The qualities that must remain consistent
- The people and contexts the system must account for
- The signals that suggest benefit or harm
- The changes that require review
- The conditions under which experimentation should stop
Developers would need to build the less visible structure around that intent: measurement, validation, permissions, versioning, testing, and reliable rollback.
This does not sound like handing design over to AI. It sounds more like designing a careful operating environment in which a small number of decisions can be proposed, tested, and explained.
The hard work remains human. The system may help with observation and controlled variation, but people still define the character of the product and decide what should not be optimized away.
Memory, not just change
A component that experiments continuously without remembering its experiments would create movement, not learning.
It would need to know what had already been tried, under which conditions, and for whom. It would need to distinguish a lasting improvement from a temporary response to novelty. It might also need to recognize when an old result no longer applies because the product, audience, or surrounding context has changed.
This would give components a history as well as a specification.
A design system might document not only what a component is, but what it has tried, what was learned, why the current version exists, and where uncertainty remains. That could make design decisions easier to inspect rather than hiding them behind an automated result.
The current state would no longer appear inevitable. It would be the latest point in a visible line of reasoning.
Knowing when to leave things alone
Continuous improvement can become continuous interference.
People learn interfaces partly through repetition. Familiarity reduces effort. Trust often grows because a product behaves today much as it did yesterday. Even a sequence of statistically positive changes could weaken that sense of stability if the interface never settles.
A useful self-correcting system would therefore need permission to do nothing.
It might determine that performance is within an acceptable range. It might freeze a successful pattern for a period of time. It might decide that the audience is too small, the evidence too mixed, or the potential gain too slight to justify another experiment.
Restraint would not be the absence of intelligence. It would be part of the intelligence we would want the system to have.
A question for design systems
I am less interested in self-correcting components as a promise of automated optimization than as a way to reconsider what a component contains.
What if a component carried not only styles and states, but an intention, a set of boundaries, and some memory of how it came to be?
What would we ask it to notice?
What would it be allowed to change?
Who would decide whether the change had actually helped?
These questions lead quickly past interface generation and into governance, authorship, accessibility, and trust. They also expose a practical truth: before a system can make responsible decisions, people have to be unusually clear about the decisions they have already made.
Perhaps the useful version of this idea is not an application that constantly redesigns itself. It may be quieter than that: a design system able to notice a small point of friction, suggest a careful response, and leave the rest alone.
That still requires designers and developers. It may require more deliberate work from both.
The component can help test what changes. People remain responsible for deciding what improvement means.