Lesson 21 of 30
Building a shared component library is the easy part. The system design question is what happens six months later, when twenty teams depend on it and you need to change a button's padding without breaking any of them.
12 min read
Every option explains itself — why the right one is right, and why each wrong one is wrong. Miss one and it comes back later on a spaced-repetition schedule.
Question 1 of 3
A shared component library needs to rename a widely-used prop. What's the strongest rollout approach?
Hints without spoilers, and a plain explanation of why a wrong answer was wrong — answered only from this lesson. Free account, no card.
Sign up freeWhat interviewers actually ask about this, and what a strong answer has to cover.
A strong answer covers
Likely follow-ups
The Design Systems lesson elsewhere in this platform covers what a design system actually is — tokens, components, documented rules. This lesson assumes that and asks the harder question: once a design system has real, independent teams depending on it, how do you keep evolving it without either freezing it in place or breaking everyone downstream?
Three concerns define the system-design answer:
Button prop across twenty consumersSay Button's type prop needs to become variant because type collides with the native HTML attribute and keeps causing bugs. The naive move — rename it and ship — silently breaks every consuming team's build the moment they upgrade. The system-design answer instead: ship a minor version that accepts both type and variant, with type marked deprecated and logging a console warning in development. Teams keep working, unaffected, until they choose to migrate. A major version, released later with real lead time, finally removes type — by which point the deprecation warning has already told every consuming team exactly what to change and why.
"How would you roll out a change to a shared component that twenty teams depend on?" is a real organizational-scale question, and the strong answer routes through versioning, a deprecation window, and clear governance — not "just tell everyone to update."