Vercel Makes Node.js 26 the Default, and fetch Now Speaks HTTP/2
Vercel made Node.js 26 LTS generally available Oct. 29 and the default for new projects. Its fetch now negotiates HTTP/2, with an opt-out for Functions.

Vercel made Node.js 26 LTS generally available for builds and Vercel Functions on Oct. 29, and it is now the default for new projects. The change that can bite existing code is fetch, which now negotiates HTTP/2 (Vercel changelog, Oct. 29, 2026).
What Changed
In the release, fetch runs on Undici 8 and uses HTTP/2 with servers that support it. Requests can share connections. Vercel said that may cut latency on calls to APIs and databases. The release also brings the Temporal API, an immutable alternative to Date with built-in time zone and calendar support, and V8 14.6.
Vercel’s docs add a caveat. On HTTP/2 responses, response.statusText is empty, so code that reads it should switch to response.status. A project that wants HTTP/1.1 back in Functions can set VERCEL_FETCH_DISABLE_H2 to 1 and redeploy. The setting does not touch fetch during builds. A custom dispatcher set with setGlobalDispatcher, or passed to fetch, takes precedence, the docs said.
Who Gets Upgraded
New projects start on 26.x. Existing projects move on their own if engines.node in package.json allows it. Vercel’s example is >=20. The next deployment then uses Node.js 26. To move a pinned project, set engines.node to 26.x and redeploy. Prebuilt deployments need Vercel CLI 65.8.0 or later. Minor and patch updates roll out automatically.
Vercel’s versions page now lists 26.x as the default, with 24.x and 22.x also available. Node.js 20 is gone from that list. Vercel said in a July 14 changelog it would disable Node.js 20 on Oct. 1, after the runtime’s April 30 end of life.
The Take
An open-ended range like >=20 is the trap. It looks permissive. It now moves the project to a new major runtime on the next push, with a different fetch underneath. Few teams will notice until a call to an HTTP/1.1-only upstream or a check on statusText behaves differently in production.
Pin the range deliberately. Test against 26 on a preview deployment before the default decides. The opt-out variable is a stopgap, not a plan.


