You can’t mandate a design system into existence. You’ve seen the pattern — a polished library launches, and six months later adoption sits at 30% while everyone quietly ships their own button. Systems that win aren’t enforced; they’re the ones engineers reach for because using them beats rolling their own.
Give them the code
The biggest shift is ownership. A package you npm install is a black box: when it doesn’t fit, the engineer files an issue and waits, or forks it and eats the maintenance. That gap between wanting a change and getting one is where trust leaks out.
Copy-paste ownership flips that. The component lands in components/ui as plain source you can read, edit, and delete. This is the model shadcn/ui popularized, and it’s why libraries like Spectrum UI hand you the code instead of a dependency to version-bump.
Type the props
Engineers trust components they can’t misuse. A real union — variant: 'default' | 'ghost' | 'destructive' — turns the docs into autocomplete and a typo into a red squiggle instead of a runtime surprise.
Skip the any. Every loosely typed prop is a question someone has to ask in Slack, and every question is a small tax on adoption. The library that answers questions before they’re asked is the one that spreads.
Zero lock-in
The fear that kills adoption is getting trapped. If your system can’t express one specific design and there’s no way out, engineers won’t risk building on it at all.
So leave the exits in from the start: a className passthrough, an asChild prop, defaults you can override. When people know they can bail out on the one hard case, they’ll happily use you for the other ninety-nine. A visible exit is what makes people comfortable walking in.
The test
Ship one component the copy-paste way and watch what happens. If an engineer pulls it in, tweaks two lines, and never files an issue, you built the right thing. No survey needed; the issue tracker tells you everything.
Adoption isn’t a rollout plan or a lunch-and-learn. It’s the moment your system is simply easier than the alternative — and the only way there is to make the easy path the good one.