The component library is the easy part. The contract is what makes a design system survive a team change.
A contract here means: what the component accepts, what it promises, and what you'll never change without a major version.
Practically:
- Props are public API. Rename one and you've broken someone's page.
- Deprecation needs a date and a codemod, not a note in a doc.
- Docs are generated from the code, because handwritten docs drift within a sprint.
- Version the package, even internally. "Just pull main" is how a design system becomes a fork.
The hard part is saying no. Every component request is a request to own another contract.
The best design systems I've used felt small, and the docs explained the why, not just the props.
Do you version your internal design system?
Top comments (0)