sveltejs/kit · error

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

Error message

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

What it means

Live remote queries stream values and cannot run during prerendering, since prerendered pages require static, captured data. Direct invocation of a query.live function while prerendering throws this error; use prerender() to capture the first value.

Source

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

	const __ = {
		type: 'query_live',
		id: '',
		name: '',
		run: (event, state, arg) => run(event, state, () => validate(arg)),
		validate,
		bind(payload, validated_arg) {
			const { event, state } = get_request_store();

			return create_live_query_resource(__, payload, event, state, () =>
				run(event, state, () => validated_arg)
			);
		}
	};

	/** @type {RemoteLiveQueryFunction<Input, Output> & { __: RemoteQueryLiveInternals }} */
	const wrapper = (arg) => {
		if (prerendering) {
			throw new Error(
				`Cannot call query.live '${__.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_live_query_resource(__, payload, event, state, () =>
			run(event, state, () => validate(arg))
		);
	};

	Object.defineProperty(wrapper, '__', { value: __ });

	return wrapper;
}

/**

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Wrap the live query in prerender(() => myLiveQuery(arg)) to capture its first value at build time
  2. Remove prerender = true from routes that need live/streaming data
  3. Switch back to plain query(...) if a static snapshot suffices

Example fix

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

Strategy: validation

Validate before calling

import { prerendering } from '$app/environment';
if (prerendering) {
  throw new Error('wrap query.live in prerender()');
}

Type guard

null

Try / catch

null

Prevention

When it happens

Trigger: Calling a server function created with query.live(...) directly (not via prerender()) from code executing during a prerender build.

Common situations: Using live queries in prerendered routes; adding prerender = true to a page using real-time data; forgetting to wrap the call after switching query to query.live.

Related errors


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