sveltejs/kit · error
Cannot call query.batch '${__.name}' while prerendering, as
Error message
Cannot call query.batch '${__.name}' while prerendering, as prerendered pages need static data. Use 'prerender' from $app/server instead What it means
Runtime guard when invoking a query.batch function: the process is currently prerendering, and batched queries are stateful/streaming primitives whose data cannot be embedded into a static prerendered page. The message redirects users to the prerender utility from $app/server, which is designed to fetch data at build time.
Source
Thrown at packages/kit/src/runtime/app/server/remote/query.js:374
}
})
);
}
);
},
bind(payload, validated_arg) {
const { event, state } = get_request_store();
return create_query_resource(__, payload, event, state, () =>
enqueue(payload, () => validated_arg)
);
}
};
/** @type {RemoteQueryFunction<Input, Output> & { __: RemoteQueryBatchInternals }} */
const wrapper = (arg) => {
if (prerendering) {
throw new Error(
`Cannot call query.batch '${__.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, () =>
// Collect all the calls to the same query in the same macrotask,
// then execute them as one backend request.
enqueue(payload, () => validate(arg))
);
};
Object.defineProperty(wrapper, '__', { value: __ });
return wrapper;
}View on GitHub (pinned to 03f1687fe6)
Solutions
- Wrap the call: prerender(() => myBatchQuery(arg))
- Remove prerendering from the route that needs dynamic batched data
- Split the route into a prerendered shell with client-fetched dynamic data
Example fix
// before
const data = await getBatch(id);
// after
import { prerender } from '$app/server';
const data = await prerender(() => getBatch(id)); Defensive patterns
Strategy: validation
Validate before calling
import { prerendering } from '$app/environment';
if (prerendering) {
throw new Error('wrap query.batch in prerender()');
} Type guard
null
Try / catch
null
Prevention
- Wrap batched query calls with prerender() in prerendered routes
- Review route prerender settings when introducing query.batch
- Run prerender builds in CI to catch direct calls early
When it happens
Trigger: Calling a function created with query.batch(...) directly from code that runs during a prerender build, instead of wrapping it in prerender().
Common situations: Using batched queries in prerendered routes; converting grouped per-item queries to query.batch in an existing prerendered page.
Related errors
- Cannot call query '${__.name}' while prerendering, as preren
- ${prerendered.error}
- Cannot call query.live '${__.name}' while prerendering, as p
- Cannot access url.${property} on a page with prerendering en
- Could not get the request store.
AI-assisted analysis of sveltejs/kit@03f1687fe6 (2026-09-02).
Data as JSON: /api/errors/e7080b5de8e3fced.
Report an issue: GitHub.