{"record":{"id":"429afa942382f959","repo":"sveltejs/kit","slug":"cannot-call-query-name-while-prerendering","errorCode":null,"errorMessage":"Cannot call query '${__.name}' while prerendering, as prerendered pages need static data. Use 'prerender' from $app/server instead","messagePattern":"Cannot call query '(.+?)' while prerendering, as prerendered pages need static data\\. Use 'prerender' from \\$app/server instead","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/kit/src/runtime/app/server/remote/query.js","lineNumber":96,"sourceCode":"\t\tbind(payload, validated_arg) {\n\t\t\tconst { event, state } = get_request_store();\n\n\t\t\treturn create_query_resource(__, payload, event, state, () =>\n\t\t\t\trun_remote_function(\n\t\t\t\t\tevent,\n\t\t\t\t\t{ ...state, is_in_remote_query: true },\n\t\t\t\t\tfalse,\n\t\t\t\t\t() => validated_arg,\n\t\t\t\t\tfn\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t};\n\n\t/** @type {RemoteQueryFunction<Input, Output> & { __: RemoteQueryInternals }} */\n\tconst wrapper = (arg) => {\n\t\tif (prerendering) {\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot call query '${__.name}' while prerendering, as prerendered pages need static data. Use 'prerender' from $app/server instead`\n\t\t\t);\n\t\t}\n\n\t\tconst { event, state } = get_request_store();\n\t\tconst payload = stringify_remote_arg(arg);\n\n\t\treturn create_query_resource(__, payload, event, state, () =>\n\t\t\trun_remote_function(\n\t\t\t\tevent,\n\t\t\t\t{ ...state, is_in_remote_query: true },\n\t\t\t\tfalse,\n\t\t\t\t() => validate(arg),\n\t\t\t\tfn\n\t\t\t)\n\t\t);\n\t};\n","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/sveltejs/kit/blob/03f1687fe612ce3d2d9131139b5b188d9cf90c64/packages/kit/src/runtime/app/server/remote/query.js#L78-L114","documentation":"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.","triggerScenarios":"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().","commonSituations":"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.","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"],"exampleFix":"// before\nimport { getPosts } from './remote.query.js';\nconst posts = await getPosts();\n// after\nimport { prerender } from '$app/server';\nimport { getPosts } from './remote.query.js';\nconst posts = await prerender(() => getPosts());","handlingStrategy":"validation","validationCode":"import { prerendering } from '$app/environment';\nif (prerendering) {\n  throw new Error('use prerender(() => myQuery()) here');\n}","typeGuard":"null","tryCatchPattern":"null","preventionTips":["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"],"tags":["prerendering","remote-functions","query","ssg"],"backgroundTag":"prerender-forbidden-api-call","analyzedSha":"03f1687fe612ce3d2d9131139b5b188d9cf90c64","analyzedAt":"2026-09-02T02:01:50.504Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}