Skip to main content

Node.js and Python versions

Layero picks the version to build and run your project on. If you need a specific one, you can pin it.

Supported versions​

Node.jsStatus
24supported
22supported, default
20supported
18deprecated
PythonStatus
3.13supported
3.12supported, default
3.11supported
3.10supported

The version your project built on — and where it came from — appears in the build log as [config] node=22.18.0 (.nvmrc).

Pinning a Node.js version​

Listed in priority order; the first one found wins.

1. Project settings — Project → Settings → Node.js version (you can also pick it while creating the project).

2. .nvmrc in the repository root

22

3. .node-version — same format.

4. engines.node in package.json

{
"engines": { "node": ">=22" }
}

The dashboard setting takes priority over repository files: it is the last place where you tell the platform what you want, and that choice should not lose silently to a file. If the version is set in both places we build on the one you picked, and name the pin we overrode in the build log:

[config] node=24 (project settings); project setting overrode .nvmrc=22

Leave the setting on "Auto" if you want the repository to decide.

A major (22) is enough. We update the exact build within a major ourselves, along with security updates.

Pinning a Python version​

1. runtime.txt (Heroku format):

python-3.12

2. .python-version — just 3.12.

There is no dashboard setting for Python yet.

If you pin an unsupported version​

The build does not fail. We build on the default version and say so in the log:

[config] WARNING: Requested Node.js 16 is not supported (supported: 18, 20, 22, 24). Using 22.18.0.

This way a typo in .nvmrc does not block a deploy. Do read the warning though: the default may differ from what you build on locally.

Retiring versions​

When a version reaches end of life upstream, we go through three steps:

  1. Warning — in the build log and in the dashboard. Everything keeps working.
  2. Closed for new builds — roughly 3–4 months later. A new deploy on that version will not start, and the error says what to change.
  3. Anything already deployed keeps running, always. We never rebuild your site without you: static files sit in storage, application images are immutable.

We email you before a version closes.

Node.js 18 is at step one. New builds on it close on 1 September 2026.

Worth upgrading early

Node.js 18 genuinely cannot build a modern frontend any more — Vite, for instance, fails with ReferenceError: CustomEvent is not defined, a function added in Node 19. If your project is pinned to 18, moving to 22 usually needs no code changes.