abejfehr
5 hours ago
I'm surprised people are still using nvm, considering it's impact on shell startup time.
I can't recommend switching to mise highly enough: https://mise.en.dev/
nickjj
2 hours ago
I had performance issues with Mise which I reported here https://github.com/jdx/mise/discussions/4821.
Unrelated to Mise but related to zsh, there's also https://github.com/jeffreytse/zsh-vi-mode/issues/316. I noticed this plugin was causing a lot of delay. Learned a decent amount about zsh profiling from that issue.
dawnerd
2 hours ago
I used to use volta but then they killed it and told people to switch to mise. The mise setup is just way too complicated. I just am tired of having different config files for different tooling when it should just read whats in the package.json and be done with it.
shhsshs
5 hours ago
I use aliases that lazily load nvm when I actually want to use it. This converts the shell startup penalty into a node/npm startup penalty.
abejfehr
4 hours ago
This wasn't an option for us because as an org we used their recommended hook (1) to automatically change node versions when switching directories, but it effectively undoes the lazy loading.
With mise you get the behaviour of automatically switching when you change directories effectively for free.
1. https://github.com/nvm-sh/nvm#zsh
Edit: unless you aliased it to `node` or `npm`, which would be fine I guess but super annoying if you ran node or npm commands often. It is not worth the hassle, no one should use nvm in 2026 imo
blfr
3 hours ago
How often do you launch a fresh terminal though? I start mine with a script to have favourite tabs ready at boot and then generally not much afterwards.
hombre_fatal
2 hours ago
Constantly. I think we've used the excuse of "well, what if you just launch it less often?" enough to excuse bad performance defaults, especially when alternative solutions fix the issue with very few trade-offs.
frollogaston
2 hours ago
Maybe once a minute, though it's bursty so more like 4 times every 4 minutes, but I still didn't notice the nvm slowdown
skydhash
2 hours ago
For every query and commands. I don’t use a DE, so pretty much everything is cli based. I use xterm and it’s bound to mod4+Return for me.
vstm
5 hours ago
I wasn't actually aware of the impact. I measured the zsh startup time locally (with mvn active and commented out) and it indeed makes a difference (.39s -> .08s). Not that I would have noticed that without measuring :) - yes I'm an old geezer.
Thank you for the recommendation, I might then also be able to ditch sdkman as well.
VorpalWay
2 hours ago
With zsh i set up nvm to lazy load, so I don't pay for it when I don't use it (I'm a C++ and Rust dev, but I occasionally need to run js stuff from other team members).
I can strongly recommend lazy loading in zsh in general, I use it for pyenv too (which is also slow to load, but I write Python maybe every other week or so only).
The way to do this is to use the autoload functionality in zsh and have the autoloaded script replace itself with the real shell init code for the tool in question.