{"record":{"id":"8c44edd5e14baad9","repo":"withastro/astro","slug":"your-project-is-being-built-for-node-js-major-a-8c44ed","errorCode":null,"errorMessage":"Your project is being built for Node.js ${major} as the runtime, which is currently in beta for Vercel Serverless Functions.","messagePattern":"Your project is being built for Node\\.js (.+?) as the runtime, which is currently in beta for Vercel Serverless Functions\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/integrations/vercel/src/index.ts","lineNumber":812,"sourceCode":"\t\t\t\t`\\tThe local Node.js version (${major}) is not supported by Vercel Serverless Functions.\\n` +\n\t\t\t\t`\\tYour project will use Node.js 24 as the runtime instead.\\n` +\n\t\t\t\t`\\tConsider switching your local version to 24.\\n`,\n\t\t);\n\t\treturn 'nodejs24.x';\n\t}\n\tif (support.status === 'default' || support.status === 'available') {\n\t\treturn `nodejs${major}.x`;\n\t}\n\tif (support.status === 'retiring') {\n\t\tif (support.warnDate && new Date() >= support.warnDate) {\n\t\t\tlogger.warn(\n\t\t\t\t`Your project is being built for Node.js ${major} as the runtime, which is retiring by ${support.removal}.`,\n\t\t\t);\n\t\t}\n\t\treturn `nodejs${major}.x`;\n\t}\n\tif (support.status === 'beta') {\n\t\tlogger.warn(\n\t\t\t`Your project is being built for Node.js ${major} as the runtime, which is currently in beta for Vercel Serverless Functions.`,\n\t\t);\n\t\treturn `nodejs${major}.x`;\n\t}\n\tif (support.status === 'deprecated') {\n\t\tlogger.warn(\n\t\t\t`\\n` +\n\t\t\t\t`\\tYour project is being built for Node.js ${major} as the runtime.\\n` +\n\t\t\t\t`\\tThis version is deprecated by Vercel Serverless Functions.\\n` +\n\t\t\t\t`\\tConsider upgrading your local version to 24.\\n`,\n\t\t);\n\t\treturn `nodejs${major}.x`;\n\t}\n\treturn 'nodejs24.x';\n}\n\nfunction createRoutesWithStaticHeaders(\n\tstaticHeaders: RouteToHeaders,","sourceCodeStart":794,"sourceCodeEnd":830,"githubUrl":"https://github.com/withastro/astro/blob/3578d45d34226d63cff3d261c971c221de6794d2/packages/integrations/vercel/src/index.ts#L794-L830","documentation":"@astrojs/vercel's getRuntime() (packages/integrations/vercel/src/index.ts:771) checks your local Node.js major against its SUPPORTED_NODE_VERSIONS table before emitting the `nodejs<major>.x` runtime for serverless functions. When the entry has status 'beta', the adapter warns that the runtime is in beta for Vercel Serverless Functions and returns your major anyway, so the build completes on an unproven runtime. It is purely informational — nothing fails — but a beta runtime can have bugs, behavioral differences, or sudden changes on Vercel's side.","triggerScenarios":"Running `astro build` with @astrojs/vercel while `process.version`'s major maps to `{status:'beta'}` in SUPPORTED_NODE_VERSIONS (line 78). No current entry has status 'beta' (18=deprecated, 20/22=available, 24=default), so this fires only with an adapter version whose table marks a major as beta — typically a newly released Node major before Vercel promotes it, e.g. building on Node 26 with an adapter that lists it as beta.","commonSituations":"Running the newest Node.js release (installed via nvm/homebrew/volta defaults) before Vercel graduates it to 'available'; a CI image updated to a bleeding-edge Node; using an old pinned adapter whose beta entry for what is now a stable runtime was never updated.","solutions":["Switch local/CI Node to the current 'default' major (24): update `.nvmrc`/`engines.node` and rebuild to run on the fully supported runtime.","Update @astrojs/vercel to the latest release — its SUPPORTED_NODE_VERSIONS table may already list your major as 'available' or 'default'.","If you intentionally want to test the beta runtime, keep the Node version but monitor Vercel's Node.js runtime docs for promotion or breaking changes."],"exampleFix":"# before: engines in package.json\n\"engines\": { \"node\": \"26\" }\n\n# after\n\"engines\": { \"node\": \">=24\" }\n\n# .nvmrc\n24","handlingStrategy":"validation","validationCode":"// assert the local Node major is not flagged beta/retiring/deprecated before `astro build`\nconst major = Number(process.version.slice(1).split('.')[0]);\nconst bad = new Set([18]); // extend with majors the adapter flags beta/retiring as they appear\nif (bad.has(major)) {\n  console.error(`Refusing to build on Node ${major} — switch to a stable Vercel runtime (24)`);\n  process.exit(1);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Default your toolchain (nvm/homebrew/CI image) to the Vercel 'default' major (24) instead of latest-or-legacy Node, so you never land on a beta runtime unintentionally.","Add a CI step that reads the adapter's warning output and fails on /beta|retiring|deprecated/ so a Node drift is caught in CI rather than discovered on Vercel.","Check Vercel's Node.js runtime docs when adopting a new Node major; build on it only after the adapter table shows 'available' or 'default'."],"tags":["vercel","nodejs","runtime","beta","build-warning","serverless"],"backgroundTag":"nodejs-runtime-version-unsupported","analyzedSha":"3578d45d34226d63cff3d261c971c221de6794d2","analyzedAt":"2026-08-18T18:48:03.901Z","contentChangedAt":"2026-08-18T18:48:03.901Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}