NPM aliases, Panda CSS and big bang migrations
Weekly roundup for the 27th of March 2026

This week has been an interesting one full of research and big think energy. As mentioned last week, I'm working on a migration and I'm currently trying to figure out how to make sure it goes off without a hitch. It's been a contemplative one, that's for sure. Here's what I learned this week.
NPM aliases are pretty cool
I learned about NPM aliases this week as I was looking to install two different versions of the same package in one repo, which is exactly what they allow you to do. Here's how you add an NPM alias:
npm install <alias>@npm:<real-package-name>
Unfortunately, my plan didn't work out due to the fact that the dependencies I was trying to alias were all interconnected. So when I aliased one package to a specific version, that aliased version was still trying to access the non-aliased version under the hood.
Such a pain, but it was fascinating to learn more about this new tool. I also learned that there's a gotcha in Yarn Classic (another thing we have to migrate away from), where it won't find a scoped dependency's registry if it's aliased without the scope. i.e. if you have a package called @something/cool-package your alias needs to be @something/cool-alias-legacy for it to work. That took a while to figure out!
I might do a longer post showing exactly how to use NPM aliases at some point.
Panda CSS is also neat
Another topic I want to do a longer post about at some point is Panda CSS. It sounds cute, but it's actually just a CSS-in-JS library that works with React Server Components. Traditional CSS-in-JS libraries like styled components and Emotion only work client-side as they generate CSS at runtime and inject the styles into the <head> tag. With the move to the server, these libraries have lost all momentum and aren't really being supported any more. A lot of developers choose to use Tailwind because the styles are generated at build time, but Tailwind uses utility classes, which can lead to long strings defining your styles that aren't always easy to read. Panda CSS combines the build-time generation of styles with the nicer developer experience (depending on who you talk to) of having native CSS available to use. Setting it up is pretty simple and I found it quite nice to use, especially because I'm already used to using styled components and class variance authority. Keep your eyes peeled for a longer post on this one.
Big bang migrations are not
I hate big bang migrations. They keep me up at night, they're so anxiety inducing. I'm sure there are developers out there who thrive in the chaos of touching hundreds of files in one PR and keeping all of that ticking over while the rest of the team is merging at many PRs a day, but that developer is not me. It is looking likely that I will have to do one of these soon, and I am trying my best to figure out ways to reduce the impact, both on our codebase and on my mental health. I have tried to slice and dice this migration many different kinds of ways, but I so far, I haven't found anything that works. So my plan is to do this the hard way while putting guardrails in place to make sure the PR doesn't go stale and gets merged quickly. If my plan is successful, I might just write about it one day. Wish me luck!



