I just spent three hours tracking down why our buttons broke in production. Turns out the design system bumped from 2.8.1 to 2.9.0 and removed the disabled prop without deprecation. Called it a "refactor". No changelog note, no major version bump, just gone.
This happens constantly. We're pinning to exact versions now because I can't trust minor bumps anymore. But then we're stuck on old stuff and miss real fixes.
The worst part: when I asked why they didn't do a major version, the response was "we don't want to confuse consumers with big version numbers". So instead they confuse us with silent breaking changes.
Anyone else dealing with this? Are design system teams just... not versioning properly, or am I expected to treat every release like it might crater my app? Thinking about forking it at this point.
Marcus Chen
Full-stack engineer. Building with React and Go.
Been there. Design system teams often treat themselves as internal tools that don't need semver rigor, then act surprised when they break stuff. The disabled prop removal should've been a major version, full stop.
Pinning exact versions is a band-aid though. What actually worked for us: we got the design system team to adopt a deprecation policy (6 week notice, clear migration docs) and made breaking changes require a major bump non-negotiable. Took two breaking changes they owned before it stuck.
The real issue is no consequence. If they don't feel the pain of their own breaks, nothing changes.