[RFC] nodejs version bump

Node 20 is about to end security support in 6 months Node.js | endoflife.date

And we’re still on yarn v1. Maybe it’s time to look towards a node engine upgrade? I did look into it before and our dependencies are all node >= 18 so we don’t have any dependency problems but we’re starting to creep up on the edge of outdated, and yarn in particular was recommended to switch to the latest version Yarn | endoflife.date

I’ve already tested and built it with pnpm and node24 since I got too annoyed at yarn. There shouldn’t be any major workflow changes or any breaking changes like the golang update

RFC on the following issues

  • package manage (yarn berry vs pnpm)
  • node engine
    • node 22 (stay on security updates only)
    • node 24 (new LTS as of… tomorrow)
    • since we’re transpiling anyways through TS, the runtime is “”“on”“” es2019 regardless
1 Like

I’ve used pnpm and from memory it was good enough. My knowledge of front end tech is pretty terrible, so I’m happy to defer to someone with better knowledge. Fwiw, my uninformed preference would be pnpm with node 24.

I’d be happy to review a PR for an upgrade.

1 Like

I know very little about node but I did notice that stash-box has switched to pnpm: GitHub - stashapp/stash-box: Stash App's own OpenSource video indexing and Perceptual Hashing MetaData API

1 Like

PR ready [packaging] switch to pnpm by feederbox826 · Pull Request #6186 · stashapp/stash · GitHub

I prefer pnpm over yarn for Stash. pnpm is getting more attention every day, and popular projects like Vite and Vue have embraced it.

We should also consider bun as a potential drop-in replacement for nodejs. I know that bun is a bit buggy but it is much easier to use and developing rapidly. If we are going to have no problem with our dependecies, bun can be a good upgrade.

While I love bun and deno, they’re doing great work in the JS ecosystem, bun is still quite immature and is nowhere near close to being on par with the maturity of node. Bun's Roadmap · Issue #159 · oven-sh/bun · GitHub

Windows support is still secondary and we’re not able to make full use of most of the feature or improvements since our runtime is still in the V8 browser, this would just be for tooling