sveltejs/kit · error

Cannot call query '${__.name}' while prerendering, as preren

Error message

Cannot call query '${__.name}' while prerendering, as prerendered pages need static data. Use 'prerender' from $app/server instead

What it means

During prerendering, remote queries must be consumed through prerender() so their values are captured statically. Calling the query function directly while prerendering is rejected because prerendered pages need static data captured in the manifest.

Source

Thrown at packages/kit/src/runtime/app/server/remote/query.js:96

		bind(payload, validated_arg) {
			const { event, state } = get_request_store();

			return create_query_resource(__, payload, event, state, () =>
				run_remote_function(
					event,
					{ ...state, is_in_remote_query: true },
					false,
					() => validated_arg,
					fn
				)
			);
		}
	};

	/** @type {RemoteQueryFunction<Input, Output> & { __: RemoteQueryInternals }} */
	const wrapper = (arg) => {
		if (prerendering) {
			throw new Error(
				`Cannot call query '${__.name}' while prerendering, as prerendered pages need static data. Use 'prerender' from $app/server instead`
			);
		}

		const { event, state } = get_request_store();
		const payload = stringify_remote_arg(arg);

		return create_query_resource(__, payload, event, state, () =>
			run_remote_function(
				event,
				{ ...state, is_in_remote_query: true },
				false,
				() => validate(arg),
				fn
			)
		);
	};

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Wrap the query in prerender(() => myQuery(arg)) from $app/server
  2. Remove prerender = true from the route if dynamic data is required
  3. Gate the call so it only runs when not prerendering

Example fix

// before
import { getPosts } from './remote.query.js';
const posts = await getPosts();
// after
import { prerender } from '$app/server';
import { getPosts } from './remote.query.js';
const posts = await prerender(() => getPosts());
Defensive patterns

Strategy: validation

Validate before calling

import { prerendering } from '$app/environment';
if (prerendering) {
  throw new Error('use prerender(() => myQuery()) here');
}

Type guard

null

Try / catch

null

Prevention

When it happens

Trigger: Inside a load function or page that is being prerendered, code calls a server query function created with query(...) directly instead of wrapping it in prerender().

Common situations: Adding prerender = true to a route that uses remote queries; calling queries in module context during build; migrating to remote functions without updating prerendering data flow.

Related errors


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