sveltejs/kit · error

Cannot prerender endpoints with body-dependent methods

Error message

Cannot prerender endpoints with body-dependent methods

What it means

Prerender validation in the endpoint renderer: the endpoint module opted into prerendering but also defines body-dependent methods (POST/PUT/PATCH/DELETE). Prerendering only captures responses to GET/HEAD requests; methods that consume a request body cannot be pre-rendered, so such an endpoint cannot be prerendered at all.

Source

Thrown at packages/kit/src/runtime/server/endpoint.js:34

	let handler = mod[method] || mod.fallback;

	if (method === 'HEAD' && !mod.HEAD && mod.GET) {
		handler = mod.GET;
	}

	if (!handler) {
		return method_not_allowed(mod, method);
	}

	const prerender = mod.prerender ?? state.prerender_default;

	if (
		prerender &&
		/** @type {import('types').HttpMethod[]} */ (BODY_DEPENDENT_METHODS).some(
			(method) => mod[method]
		)
	) {
		throw new Error('Cannot prerender endpoints with body-dependent methods');
	}

	if (state.prerendering && !state.prerendering.inside_reroute && !prerender) {
		if (state.depth > 0) {
			// if request came from a prerendered page, bail
			throw new Error(`${event.route.id} is not prerenderable`);
		} else {
			// if request came direct from the crawler, signal that
			// this route cannot be prerendered, but don't bail
			return new Response(undefined, { status: 204 });
		}
	}

	try {
		const response = await with_request_store({ event, state }, () =>
			handler(/** @type {import('@sveltejs/kit').RequestEvent<Record<string, any>>} */ (event))
		);

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Remove `export const prerender = true` from endpoints that define POST/PUT/PATCH/DELETE handlers
  2. Split the GET logic into its own prerenderable +server.js file and keep mutative methods in a non-prerendered endpoint
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/kit/src/runtime/server/endpoint.js:34 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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