{"record":{"id":"e5e9327a1a32bcf7","repo":"sveltejs/kit","slug":"the-edge-runtime-is-no-longer-supported","errorCode":null,"errorMessage":"The `edge` runtime is no longer supported","messagePattern":"The `edge` runtime is no longer supported","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-vercel/index.js","lineNumber":15,"sourceCode":"import fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\nimport { fileURLToPath } from 'node:url';\nimport { VERSION } from '@sveltejs/kit';\nimport { nodeFileTrace } from '@vercel/nft';\nimport { parse_isr_expiration, pattern_to_src, resolve_runtime } from './utils.js';\n\nconst INTERNAL = '![-]'; // this name is guaranteed not to conflict with user routes\n\n/** @type {typeof import('./index.js').default} **/\nconst plugin = function (defaults = {}) {\n\t// @ts-ignore TODO remove this in a future version\n\tif ('edge' in defaults || defaults.runtime === 'edge') {\n\t\tthrow new Error('The `edge` runtime is no longer supported');\n\t}\n\n\treturn {\n\t\tname: '@sveltejs/adapter-vercel',\n\t\t/** @param {import('@sveltejs/kit').Builder} builder */\n\t\tasync adapt(builder) {\n\t\t\tconst dir = '.vercel/output';\n\t\t\tconst tmp = builder.getBuildDirectory('vercel-tmp');\n\n\t\t\tfs.rmSync(dir, { force: true, recursive: true });\n\t\t\tfs.rmSync(tmp, { force: true, recursive: true });\n\n\t\t\tif (fs.existsSync('vercel.json')) {\n\t\t\t\tconst vercel_file = fs.readFileSync('vercel.json', 'utf-8');\n\t\t\t\tconst vercel_config = JSON.parse(vercel_file);\n\t\t\t\tvalidate_vercel_json(builder, vercel_config);\n\t\t\t}\n","sourceCodeStart":1,"sourceCodeEnd":33,"githubUrl":"https://github.com/sveltejs/kit/blob/03f1687fe612ce3d2d9131139b5b188d9cf90c64/packages/adapter-vercel/index.js#L1-L33","documentation":"adapter-vercel no longer supports the Vercel Edge runtime. Passing `edge` (as a truthy key or as runtime: 'edge') in the adapter options in svelte.config.js throws immediately in the plugin function before any adaptation begins.","triggerScenarios":"Calling the adapter factory as `vercel({ edge: true })` or `vercel({ runtime: 'edge' })` in svelte.config.js.","commonSituations":"Following an old tutorial or a pre-migration project file that configured edge deployment; upgrading @sveltejs/adapter-vercel from a version that supported edge; copy-pasting a config from a different project.","solutions":["Remove the `edge` / `runtime: 'edge'` options from the adapter config in svelte.config.js","Let the adapter pick a supported runtime (nodejsXX.x or bun1.x) by omitting `runtime`","If per-route edge behavior is required, that is no longer available — deploy with the Node.js runtime or use a platform that supports edge","Pin an older adapter version only as a temporary measure (not recommended, unsupported)"],"exampleFix":"// before\nexport default adapter({ runtime: 'edge' });\n// after\nexport default adapter();","handlingStrategy":"validation","validationCode":"// svelte.config.js pre-check\nconst opts = { /* your options */ };\nif ('edge' in opts || opts.runtime === 'edge') {\n  throw new Error('edge runtime is unsupported; remove it before building');\n}","typeGuard":"const usesEdge = (opts = {}) => 'edge' in opts || opts.runtime === 'edge';","tryCatchPattern":"try {\n  await vite.build();\n} catch (err) {\n  if (err.message.includes('edge` runtime is no longer supported')) {\n    console.error('Remove edge/edge-runtime options from adapter-vercel config.');\n  }\n  throw err;\n}","preventionTips":["Audit svelte.config.js when upgrading adapter-vercel","grep the repo for `runtime: 'edge'` after upgrades","Read the adapter's CHANGELOG for removed options","Never copy adapter configs between projects without review"],"tags":["config","vercel","adapter","edge-runtime"],"backgroundTag":"unsupported-runtime-option","analyzedSha":"03f1687fe612ce3d2d9131139b5b188d9cf90c64","analyzedAt":"2026-09-02T02:01:50.504Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}