sveltejs/kit · warning

Overwriting ${dest} with fallback page. Consider using a di

Error message

Overwriting ${dest} with fallback page. Consider using a different name for the fallback.

What it means

When prerendering generates a fallback page, generateFallback writes it to `dest` inside the output directory. If a file already exists at that path (e.g. a prerendered page already produced a file with the same name), it would be silently replaced, so the builder logs this warning advising you to rename the fallback to avoid clobbering real content.

Source

Thrown at packages/kit/src/core/adapt/builder.js:189

				route_data.map((route) => /** @type {import('types').RouteData} */ (lookup.get(route))),
				vite_config.root
			);
		},

		async generateFallback(dest) {
			const manifest_path = `${config.outDir}/output/server/manifest-full.js`;
			const env = loadEnv(vite_config.mode, config.env.dir, '');

			const fallback = await generate_fallback({
				manifest_path,
				env,
				out_dir: config.outDir,
				origin: config.paths.origin || 'http://sveltekit-prerender',
				assets: config.files.assets
			});

			if (existsSync(dest)) {
				log.warn(
					`\nOverwriting ${dest} with fallback page. Consider using a different name for the fallback.\n`
				);
			}

			write(dest, fallback);
		},

		generateEnvModule() {
			if (!build_data.client?.uses_env_dynamic_public) return;

			const dest = `${config.outDir}/output/prerendered/dependencies/${config.appDir}`;
			const env = loadEnv(vite_config.mode, config.env.dir, '');

			/** @type {Record<string, any>} */
			const values = {};
			const variables = explicit_env_config ?? {};

			/** @type {Record<string, StandardSchemaV1.Issue[]>} */

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Change `prerender.fallback` in svelte.config.js to a unique filename not produced by prerendering (e.g. '200.html' or 'fallback.html').
  2. If overwriting is intended (SPA serving from the fallback), ignore the warning.
  3. Disable prerendering of the colliding route or exclude it via prerender.entries.

Example fix

// before (svelte.config.js)
prerender: { fallback: 'index.html' }
// after
prerender: { fallback: '200.html' }
Defensive patterns

Strategy: validation

Validate before calling

import { existsSync } from 'node:fs';
const fallbackDest = `.svelte-kit/output/prerendered/${config.prerender.fallback}`;
if (existsSync(fallbackDest)) {
  console.warn(`Fallback name collides with prerendered output: ${fallbackDest}`);
}

Prevention

When it happens

Trigger: Calling generateFallback with `kit.prerender.entries`/fallback configured such that `dest = out_dir + fallback path` already exists from prerendered output, detected via existsSync(dest).

Common situations: Setting `fallback: 'index.html'` in a SPA while also prerendering the root route; a fallback name colliding with a prerendered page's directory/file; migrating an SPA to prerendered pages without updating the fallback option.

Related errors


AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02). Data as JSON: /api/errors/7392937b7a6e6291. Report an issue: GitHub.