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
- Wrap the query in prerender(() => myQuery(arg)) from $app/server
- Remove prerender = true from the route if dynamic data is required
- 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
- Always wrap queries consumed in prerendered routes with prerender()
- Keep prerender = true routes free of dynamic remote query calls
- Test builds with prerender enabled locally
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
- Cannot call query.batch '${__.name}' while prerendering, as
- ${prerendered.error}
- Cannot call query.live '${__.name}' while prerendering, as p
- Cannot call '${__.name}.withOverride()' on the server
- requested(...) expects a query function created with query(.
AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02).
Data as JSON: /api/errors/429afa942382f959.
Report an issue: GitHub.