How much customisation should a shared component expose before it stops being a design system?
Design system component customization should expose sanctioned variants, slots for content and a visible escape hatch, not arbitrary styling on every part. Once any product can restyle a shared component freely, consistency becomes unenforceable.
Answer
Short answer
A shared design system component should expose only variations the design language supports, such as size, intent and state. Use slots or composition for content differences, keep one visible escape hatch for exceptions, and promote repeated overrides into sanctioned variants only when the pattern proves reusable.
Use design systems as the constraint on customisation: a component can offer variation, but it should not let each team recreate the brand, accessibility model, or interaction contract. Good design systems work makes the allowed choices explicit so local flexibility does not become a second component library.
Was this answer helpful?
Likely follow-ups
- A team needs a button with a spinner inside it. Do you add a loading prop or let them compose one?
- How would you measure whether your escape hatch is being used for legitimate cases or as a bypass?
- What is the argument for shipping unstyled primitives plus a theme rather than finished components?
- When two products need genuinely different visual languages, what belongs in the shared layer at all?
Related questions
- Two clients open the same record, both edit it, and the second save silently overwrites the first. How would you use ETags to turn that lost update into something the client can see and handle?mediumAlso on api-design4 min
- Every uploaded image needs six sizes and the thumbnail has to appear immediately. What runs before you return, and what does not?mediumAlso on api-design5 min
- How do you implement a scalable architecture and tooling to automatically enforce strict WCAG 2.1 AA compliance across dozens of autonomous frontend teams without crippling developer velocity?hardAlso on design-systems3 min
- The same domain has to be exposed to a mobile app, a partner integration and internal service-to-service traffic. Where does GraphQL fit, where does gRPC, and where does neither?hardAlso on api-design7 min