Tooling migrations don't have to take weeks anymore
I used to block out weeks for tooling migrations. Now I let Claude Code run in the background, check in when it's done, and pair with it to understand what changed.
Are you struggling to make sense of whether you should version your components as a unified system, like Babel or to version them separately, like Gatsby? Well, you're certainly not alone. It can seem like there really is no right answer, and you might even start wondering why you need to version your components at all, especially if you're building an internal library.
There are a few questions you can ask yourself to determine which approach to take.
If your answer to questions #1 and #2 are yes, it'd be reasonable to version everything together.
If you answered yes to questions #3 and #4, it's probably better to version components as separate packages. This can help you provide more flexibility to your consumers. It'll also make contributing to the library easier, since people unfamiliar with the system will only need to know about individual packages rather than understanding how their changes will affect the versions of multiple libraries. And it allows your consumers to only have to deal with one breaking change at a time.
Additionally, you always have the option of bundling up your separately-versioned components into a library with it's own version. For example,
you might have a button and a link package. You can version each one individually, and have a third package called base-components that contains button@1.0.0 and link@2.0.0.
There's really only one wrong answer to this question in my opinion, and its to not version your packages at all. It's important to communicate to your stakeholders how stable your packages are and whether or not upgrading them is going to mean a breaking change. You also want to make sure it's easy for them to downgrade if your new version isn't working for them. If you don't version them and you introduce a breaking change or a bug they can't downgrade out of you might be negatively affecting a team's ability to ship. That's the exact opposite of what a library should strive to do.
I used to block out weeks for tooling migrations. Now I let Claude Code run in the background, check in when it's done, and pair with it to understand what changed.
Frontend technical debt doesn't just slow down developers. It undermines your entire business through user attrition, legal risks, and revenue loss. Here's how to spot and communicate these hidden costs.
How I used Conductor and Claude to streamline my team's Dependabot review workflow — and how a colleague turned it into a GitHub Action