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?