Skip to content

Pinning Node.js LTS on macOS with Homebrew

If you installed Node.js via Homebrew (brew install node), you’re tracking the latest current release — which can include odd-numbered development versions (e.g. 23.x, 25.x). These aren’t LTS and may have breaking changes or instability.

GSD requires Node.js v22 or later and works best on an LTS (even-numbered) release. This guide shows how to pin Node 24 LTS using Homebrew.

Terminal window
node --version

If this shows an odd number (e.g. v23.x, v25.x), you’re on a development release.

Homebrew provides versioned formulas for LTS releases:

Terminal window
# Unlink the current (possibly non-LTS) version
brew unlink node
# Install Node 24 LTS
brew install node@24
# Link it as the default
brew link --overwrite node@24

Verify:

Terminal window
node --version
# Should show v24.x.x
  • Stability — LTS releases receive bug fixes and security patches for 30 months
  • Compatibility — npm packages (including GSD) test against LTS versions
  • No surprisesbrew upgrade won’t jump you to an unstable development release

By default, brew upgrade will upgrade all packages, which could move you off the pinned version. Pin the formula:

Terminal window
brew pin node@24

To unpin later:

Terminal window
brew unpin node@24

If you need multiple Node versions (e.g. 22 and 24), consider using a version manager instead:

  • nvmnvm install 24 && nvm use 24
  • fnmfnm install 24 && fnm use 24 (faster, Rust-based)
  • misemise use node@24 (polyglot version manager)

These let you set per-project Node versions via .node-version or .nvmrc files.

After pinning:

Terminal window
node --version # v24.x.x
npm install -g gsd-pi
gsd --version