Skip to content

Node compatibility

Nimbus’s Node.js runtime compatibility is evidence-backed and deliberately bounded: a surface is documented as supported only when it has checked-in fixture, canary, oracle, or classification evidence. This page is the contract — the supported Node versions, the vocabulary behind every support claim, and the headline numbers.

TargetStatusRelease phaseDefaultLTS supportUpstream line
Node20Supported for local development onlyEOL legacynonov20.20.2
Node22Supported in processMaintenance LTSnoyesv22.22.3
Node24Supported in processActive LTSyesyesv24.16.0
Node26Supported in processCurrent non-LTSnonov26.2.0
  • Node24 is the default compatibility target. The default is a routing default, not an evidence priority.
  • Node22 and Node24 are the supported LTS targets, each with its own per-version evidence.
  • Node20 remains selectable as a legacy-grace target after its 2026-04-30 end of life, but it is not an active LTS support target.
  • Node26 is selectable as a Current/non-LTS compatibility target. It becomes an LTS support target only after Node itself enters LTS and the same evidence gates pass.
StatusMeaning
Supported in processPasses production in-process application canaries on the supported LTS versions and may back public support claims.
Supported for local development onlyUseful for local tooling or development but excluded from production in-process support claims.
Service/microVM requiredSupported only when explicitly routed to a service or microVM profile with host authority.
Import-compatible stubModule import may succeed for package probing, but runtime use throws a clear Nimbus diagnostic.
UnsupportedRejected with a documented diagnostic and no support claim.
Not applicable to functionsCLI, interactive, daemon, or process-wide behavior that does not map to function invocation.
  • Convex-compatible "use node" action modules can select Node20, Node22, Node24, or Node26 through convex.json — see configuration.
  • Selecting a Node version does not grant host access. Runtime permission mode and explicit grants are a separate axis from the compatibility target.
  • Nimbus does not claim full Node built-in compatibility for any version.
  • Runtime support is narrower than Node CLI parity: node --test, the inspector, worker threads, child processes, native addons, and other host-heavy behavior are service/microVM-routed unless the Node API reference says otherwise.

As of 2026-05-28, from the checked-in evidence snapshots. Fixtures are official upstream Node test files executed against the Nimbus runtime; canaries are real packages and application scenarios exercised end-to-end.

TargetUpstreamFixturesPassedExpected failure / known gapSkipped / excludedPass rateClassified coverage
Node20v20.20.21308902401569.0%100.0%
Node22v22.22.34748100037282021.1%100.0%
Node24v24.16.05198100241494719.3%100.0%
Node26v26.2.0557805529490.0%100.0%

How to read these numbers:

  • The fixture corpora are the vendored official upstream Node test suites. Much of each suite exercises CLI, daemon, and process-wide behavior that is intentionally out of scope for in-process function invocation, so the pass rate is not a percentage of the supported surface.
  • Every non-passing fixture is explicitly classified as an expected failure, a known gap, or a skip — 100% classified coverage means no fixture result is unaccounted for. Classifications are recorded boundaries, not support claims.
  • Node26 is an early Current-line target: its corpus is vendored and fully classified, and its support claims currently rest on canary evidence rather than fixture passes.
  • 37 package and framework canary claims across 101 checks, all passing on their required versions.
  • 11 diagnostic canary claims proving host-heavy denials and service routes produce the intended errors.
  • 0 required canary gaps.

The per-package breakdown is in the Node package reference, and the API-family breakdown is in the Node API reference.