Tags: web-dev concept

Design System Adoption

Date: 2026-08-16


Getting people to actually use it, which is the real problem and is almost entirely social. A technically excellent system nobody adopts has produced nothing, and the reasons for non-adoption are usually reasonable.


Adoption is the proportion of interface actually built from the system, and the degree to which it’s used as intended rather than overridden.

The uncomfortable framing that makes progress possible: non-adoption is feedback, not resistance. People route around a system when using it costs more than not using it, and that calculation is usually correct from where they’re standing.

Why people don’t use it

Ranked by how often it’s the real reason:

  1. They didn’t know it existed, or couldn’t find the component. Discovery is the largest single cause and the cheapest to fix — Component Documentation
  2. It doesn’t do what they need, and there’s no visible route to change that — Design System Governance
  3. It’s slower. Reading docs and fighting an API versus twenty lines of CSS they can write now
  4. They tried and hit a wall. One bad experience — a missing variant, a stale doc, an unanswered question — and they stop trying
  5. They weren’t asked to. No mandate, no expectation, no consequence

Only the last is about resistance. The rest are product problems with the system.

Measure it, or the conversation is opinions

COVERAGE      % of components on a page
              that come from the system

OVERRIDE RATE how often system components
              are style-overridden
              ↑ the quality signal

ADOPTION      teams / repos using it
              at all

DRIFT         local components that
              duplicate a system one

Override rate is the one that tells you something you don’t already know. High coverage with a high override rate means people are using the system and fighting it — which is worse than low adoption, because it looks like success.

These can be measured mechanically — scan consumer codebases for imports and for style overrides on system components, and trend it. Doing this from the start matters, because the first number is only useful as a baseline.

What actually moves it

  • Make it the path of least resistance. Scaffolding, snippets, a linter that flags a raw <button> and offers the import. Tooling beats persuasion, reliably
  • Fix discovery first. Search that works on the words people actually use — “popup” should reach Modal
  • Go to them. Pair with a team on their next feature and build it with the system. You’ll fix three real gaps and gain an advocate, which is worth more than a launch announcement
  • Publish the roadmap, so “it doesn’t do X” has a visible answer other than silence
  • Migrate for them. A codemod that updates their code is worth more than a migration guide nobody reads — Design System Versioning
  • Close the loop loudly. Someone reports a gap, it ships, they hear about it. That one cycle does more than any amount of advocacy

Mandates

They work, and they’re not sufficient.

MANDATE ALONE
  compliance, resentment, creative
  workarounds, and an overrides file

MANDATE + GOOD SYSTEM + RESPONSIVE TEAM
  works

A mandate makes a good system universal and makes a bad system hated. Earn adoption on a few teams first; use the mandate to finish rather than to start.

Adopting into an existing product

Big-bang rewrites don’t get funded and don’t finish.

1  new work uses the system, always
2  replace on touch — a screen being
   changed gets migrated
3  target the highest-traffic shared
   components first (button, field,
   modal) for the widest effect
4  leave stable legacy screens alone

“Replace on touch” is the sustainable pattern — it costs a little per feature rather than a quarter up front, and it naturally prioritises whatever people actually work on.

Accept that some screens never migrate. A product that is 80% system is a success, and pursuing the last 20% is usually worse value than the next component.

The trap

Measuring adoption instead of value. A system can hit high coverage while the product gets worse — inconsistent spacing inside components, unusable dark mode, accessibility failures shipped everywhere at once because they’re now central.

Coverage is a proxy. The thing it proxies for is whether interfaces are better and cheaper, and that needs checking directly from time to time — Design Systems.