sveltejs/kit · error · Error

${message}. Since you're using @sveltejs/adapter-auto, Svelt

Error message

${message}. Since you're using @sveltejs/adapter-auto, SvelteKit cannot determine whether it will work when your app is deployed. Please replace it with an adapter tailored to your target environment.

What it means

This is the shared error formatter for adapter-auto's `supports` checks. adapter-auto has no real deployment target, so it cannot guarantee a capability (like reading from the filesystem at runtime) will work once deployed, and it refuses with this message telling you to pick a target-specific adapter.

Source

Thrown at packages/adapter-auto/index.js:169

	supports: {
		read: () => {
			supports_error(
				'The read function imported from $app/server only works in certain environments'
			);
		},
		instrumentation: () => {
			supports_error('`instrumentation.server.js` only works in certain environments');
		}
	}
});

/**
 * @param {string} message
 * @returns {never}
 * @throws {Error}
 */
function supports_error(message) {
	throw new Error(
		`${message}. Since you're using @sveltejs/adapter-auto, SvelteKit cannot determine whether it will work when your app is deployed. Please replace it with an adapter tailored to your target environment.`
	);
}

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Replace @sveltejs/adapter-auto with the adapter for your actual deployment target in svelte.config.js.
  2. If you must read files at runtime, choose an adapter whose supports.read returns true (e.g. adapter-node, adapter-bun).
  3. If the feature is only needed for one route, remove or guard it so the capability check is never hit.

Example fix

// before
import adapter from '@sveltejs/adapter-auto';
// after
import adapter from '@sveltejs/adapter-node';
export default { kit: { adapter: adapter() } };
Defensive patterns

Strategy: validation

Validate before calling

import fs from 'node:fs/promises';
// guard: fail early if runtime file reads are used with adapter-auto
const src = await fs.readFile('src/routes/+page.server.js', 'utf8');
if (/builder\.read|\bread\(/.test(src)) {
  throw new Error('adapter-auto cannot guarantee runtime file reads — use adapter-node/bun');
}

Type guard

const supportsRead = (adapter) => {
  try { adapter.supports?.read({ routes: [] }); return true; }
  catch { return false; }
};

Try / catch

try {
  await builder.read('data.json');
} catch (e) {
  if (/adapter-auto, SvelteKit cannot determine/.test(e.message)) {
    throw new Error('Feature unsupported by adapter-auto — switch to a target-specific adapter', { cause: e });
  }
  throw e;
}

Prevention

When it happens

Trigger: SvelteKit build or runtime called a capability check on the adapter-auto adapter (e.g. builder.supports.read or supports.response for a route using those features) — the corresponding supports_* function invokes supports_error with a message describing the unsupported feature.

Common situations: Routes using builder.read() (filesystem access via $lib/server read) while still on adapter-auto; prerender/headers features exercised during build that adapter-auto cannot validate.

Related errors


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