Your design system is used by three of eleven applications. The other eight built their own components. What do you do?
Show the full answer Hide the answer
Find out where the eight bounced
Interview them, and look at what they built rather than what they say. Four causes recur:
It did not have what they needed. A component missing, or one that could not be adapted to their case. The most common, and the most actionable.
It was too rigid. No supported way to customise, so they forked or rebuilt.
Adoption cost was too high — a framework version mismatch, a bundle size increase, or a migration nobody funded.
They did not know it existed, or believed it was not ready.
Fix the top cause before promoting anything
Adoption is a usability outcome. If using the system is harder than not using it, teams will not use it and no mandate reliably changes that.
The specific fix for rigidity is worth naming: provide named slots for content injection and design tokens for theming, so customisation is supported rather than achieved by overriding internals. A component customised through arbitrary style injection cannot be changed later, because every internal detail has become part of the contract.
Reduce the cost of moving
Do the migration for the two largest holdouts yourself. Provide a codemod where the API maps cleanly. Reference implementations from respected teams move others more effectively than advocacy.
Then treat it as a versioned product
Fifteen consumers on fifteen schedules means a compatibility policy, a deprecation process and stated support windows. And visual changes are breaking changes — altering spacing or a component's height can break a consumer's layout with no type error — so visual regression testing across consuming applications is the equivalent of a contract test.
The measure
Not the count of adopting applications. The proportion of components in the estate that come from the system, and the number of teams who left after adopting — the second is the more informative number, because it names the specific component that failed under real use.