A design system that cannot evolve will eventually be replaced.
Evolvability and versioning define how a system changes over time
without breaking the products that depend on it.
Change is inevitable.
Unmanaged change is what causes fragmentation and loss of trust.
Design for change, not permanence
Every component and rule should be expected to evolve.
Component evolution
v2.0.0
Added size="xl" variant
Non-breaking
v1.8.0
Added loading state
Non-breaking
v1.5.0
Extended variant prop with new options
Non-breaking
v1.0.0
Initial implementationFoundation
Assume components will need new variants and behaviors.Treat initial implementations as final.Favor extension over replacement when possible.Introduce breaking changes for convenience.
A list of tools and services related to this argument.Version control
v2.0.0
Major
Removed variant="ghost"Breaking change
v1.5.0
Minor
Added size="xl" option
New feature
v1.4.1
Patch
Fixed button focus stateBug fix
v1.4.0
Minor
Added loading state
New feature
Adopt semantic versioning for the design system.Ship breaking changes without a major version bump.Document changes clearly with release notes.Rely on informal communication for updates.
A list of tools and services related to this argument.Semantic versioning
Deprecation is part of a healthy system lifecycle.
Deprecation timeline
variant="ghost"
Deprecated
v1.8.0
Use variant="outline"at-full-width
Deprecated
v1.5.0
Use class="w-full"onMdsButtonClicked
Removed
v2.0.0
Use onMdsButtonClickanimate
Removed
v2.0.0Use CSS transitions instead
Mark deprecated components and APIs explicitly.Remove features without warning.Provide migration paths and timelines.Force immediate rewrites on consuming teams.
A list of tools and services related to this argument.Documentation platforms
Keep foundations stable while iterating on higher layers.Change tokens and primitives frequently.Evaluate impact before introducing breaking changes.Optimize for short-term speed over long-term health.
A list of tools and services related to this argument.Semantic versioning