Software 44056 Published by

Node 25.5.0 upgrades the bundled NSS trust store to 3.119, eliminating many TLS‑certificate errors that plagued older versions after recent CA rollouts. It adds LIEF as a core dependency, which slightly lengthens native‑addon builds but otherwise stays invisible to pure JavaScript projects. The new fs.watch ignore option lets you filter out noise files, dramatically cutting down unnecessary rebuilds for long‑running watchers. Finally, the --build-sea flag enables creating single‑executable bundles directly with Node, while SQLite now runs in defensive mode by default for safer database handling.



Node.js 25.5.0 – What’s actually new and worth your time

If you’re running the current LTS or just keeping an eye on the bleeding‑edge, this post tells you which changes in Node 25.5.0 will save you headaches (or add a few more). I’ll skip the boilerplate and focus on the bits that matter when you’re writing code, building native addons, or just trying not to get bitten by a bad update.

New root certificates – finally stop the “ERR_TLS_CERT_ALTNAME_INVALID” surprises

The release bumps the bundled NSS trust store to 3.119. In practice this means Node now trusts a handful of newer CA roots that were missing in previous builds

Why you care: If your CI pipelines hit external APIs that recently switched certificates, a quick version bump may be all you need—no manual NODE_EXTRA_CA_CERTS gymnastics required.

LIEF as a dependency – more native‑addon baggage

Joyee Cheung added LIEF (the “Library to Instrument Executable Formats”) to Node’s core dependencies. For most JavaScript developers this is invisible, but if you compile native addons it means an extra library gets pulled into the build chain. On Windows 

Bottom line: If you never touch binary modules, ignore it. If you do, be prepared for a slightly longer install on fresh machines; otherwise nothing changes in your runtime behavior.

fs.watch gets an ignore option – finally stop watching junk files
fs.watch('src', { ignore: ['**/node_modules/**', '**/*.tmp'] }, (event, filename) => {
console.log(event, filename);
});

The new ignore glob array lets you filter out noise without wrapping the watcher in a custom debounce.

When to use: Any long‑running file‑watcher (e.g., hot‑reloading servers, lint daemons) should adopt this flag. It’s a tiny change that can cut down on spurious rebuilds.

--build-sea – ship a single binary with your code baked in

Self‑extracting archives (SEA) have been an experimental feature for years. Node 25.5.0 finally gives the runtime a built‑in flag to create them:

node --build-sea my-app.js -o my-app.sea

The output is a single executable that contains both the node binary and your JavaScript payload. No need for external packagers like pkg unless you require advanced bundling tricks.

Reality check: The generated SEA is only as portable as the host it was built on (Linux → Linux, macOS → macOS). If you target multiple OSes you still need separate builds, but for internal tooling this can shave off a handful of deployment steps.

SQLite defensive mode & prepare‑options – safer defaults

Two minor but welcome updates landed in the bundled SQLite:

  • Defensive mode is now enabled by default, which blocks certain malformed queries from corrupting the database file.
  • New prepareOptions arguments give you finer control over statement compilation (e.g., cache: false).

Takeaway: If your app relies on SQLite, you can now trust it to be a bit more robust out‑of‑the‑box. No code changes required unless you need to tweak the new options.

Other noteworthy tidbits
  • Crypto root store update – see above; also fixes several CVE warnings in audit reports.
  • V8 tweaks (GCProfiler, total_allocated_bytes) are internal performance refinements; they don’t affect typical user code.
  • Test runner improvements (--expect-failure) make writing negative tests easier, but only matter if you contribute to Node itself.
Quick upgrade checklist
  1. Back up your node_modules (especially on Windows where the new LIEF dependency can cause a reinstall).
  2. Run npm install -g npm@11.8.0 – the bundled npm was updated alongside Node.
  3. If you use native addons, run node-gyp rebuild to pull in LIEF and verify compilation succeeds.
  4. Test any file‑watcher logic with the new ignore option; adjust globs as needed.
  5. For SEA deployments, try a dry run on a staging box before promoting to production.

That’s it. Node 25.5.0 isn’t a radical overhaul, but those few additions (especially the watcher ignore flag and built‑in SEA support) feel like genuine quality‑of‑life upgrades rather than vanity features... For more information, check out the official announcement below:

Node.js — Node.js 25.5.0 (Current)

Node.js:registered: is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

Node.js — Node.js 25.5.0 (Current)