General

Design systems that actually get adopted

I’ve worked on design systems from both sides — as the designer building the Figma library, and as the engineer trying to implement it. I’ve seen more of them fail than succeed. The failure modes are almost always the same.

Daniel Płoskonka3 July 20263 min read

I’ve worked on design systems from both sides — as the designer building the Figma library, and as the engineer trying to implement it. I’ve seen more of them fail than succeed. The failure modes are almost always the same.

The technical problem is usually not the problem

Teams spend enormous energy on the right component API, the perfect token naming convention, the cleanest way to handle variants. These things matter. They’re not why design systems fail.

Design systems fail because adoption is treated as automatic. Someone ships a component library to npm, announces it in a company Slack, and assumes the rest of the org will migrate to it. They won’t.

What actually drives adoption

The system needs to be faster than the alternative. If a developer can copy-paste a quick component in 10 minutes, and using the design system component requires reading documentation, understanding a new abstraction, and filing a PR to add a missing variant, they will copy-paste. Every time.

The design system has to win on speed, not just quality. That means documentation with real working examples, not just props tables. It means codemods for common migration paths. It means a fast issue-to-resolution cycle when someone finds a gap.

Someone has to own the relationship with users. A design system without a dedicated maintainer who actively engages with the teams using it will drift. Features get requested, go unanswered, and teams build their own solutions. A year later you have three button components.

The best design system work I’ve seen treats the system as a product and its consumers as users who need to be listened to, not just shipped at.

Consistency of contribution matters more than perfection of process. Design systems that require a lengthy review and approval process for contributions die because teams can’t wait. The ones that set a clear quality bar and then trust contributors to meet it tend to grow into things that cover the org’s actual needs.

The Figma-to-code gap

The place where most design systems break down is the handoff between the Figma component and the implemented component. A prop exists in Figma that doesn’t exist in code. An interaction state exists in code that was never designed. The two drift within weeks of launch.

The only thing that actually closes this gap is regular, structured sync sessions between the designer maintaining the library and the engineer maintaining the code. Not documentation. Conversation.

We moved to a biweekly design system pairing session at one company — 30 minutes, designer and engineer, looking at the same screen. The gap stopped widening. It started closing.

What a good design system actually gives you

The value isn’t the component library. It’s the shared vocabulary it creates.

When a designer says “use the Alert component in the warning variant” and the engineer immediately knows what that means in code and in visual appearance — that’s the actual product of a design system. The rest is infrastructure.

That vocabulary takes six months to build and will outlast every technology choice you make.