{"record":{"id":"312b994e05883400","repo":"sveltejs/kit","slug":"cannot-call-name-withoverride-on-the-ser","errorCode":null,"errorMessage":"Cannot call '${__.name}.withOverride()' on the server","messagePattern":"Cannot call '(.+?)\\.withOverride\\(\\)' on the server","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/kit/src/runtime/app/server/remote/query.js","lineNumber":499,"sourceCode":"\t\t\tdelete get_cache(__, state)[payload];\n\n\t\t\trefresh(event, state, __, payload, get_promise);\n\n\t\t\treturn Promise.resolve();\n\t\t},\n\t\t/** @param {any} value */\n\t\tset(value) {\n\t\t\tconst p = (promise = Promise.resolve(value));\n\t\t\tget_cache(__, state)[payload] = p;\n\n\t\t\trefresh(event, state, __, payload, () => p);\n\t\t},\n\t\t/** @type {Promise<any>['then']} */\n\t\tthen(onfulfilled, onrejected) {\n\t\t\treturn get_promise().then(onfulfilled, onrejected);\n\t\t},\n\t\twithOverride() {\n\t\t\tthrow new Error(`Cannot call '${__.name}.withOverride()' on the server`);\n\t\t},\n\t\tget [Symbol.toStringTag]() {\n\t\t\treturn 'QueryResource';\n\t\t}\n\t};\n}\n\n/**\n * @param {RemoteQueryLiveInternals} __\n * @param {string} payload — the stringified raw argument (i.e. the cache key the client will use)\n * @param {RequestEvent} event\n * @param {RequestState} state\n * @param {() => AsyncGenerator<any, void, void>} get_generator\n * @returns {RemoteLiveQuery<any>}\n */\nfunction create_live_query_resource(__, payload, event, state, get_generator) {\n\t/** @type {Promise<any> | null} */\n\tlet promise = null;","sourceCodeStart":481,"sourceCodeEnd":517,"githubUrl":"https://github.com/sveltejs/kit/blob/03f1687fe612ce3d2d9131139b5b188d9cf90c64/packages/kit/src/runtime/app/server/remote/query.js#L481-L517","documentation":"Runtime guard on a server-side query resource: withOverride() is a client-only method that lets browser code override query state (e.g. after a mutation). Server-side query resources return live promises, not reactive state, so the method is replaced by this throwing stub.","triggerScenarios":"Calling .withOverride() on a query resource (created via prerender/parse of a query resource) in server-side code, e.g. in a load function, server hook, or during SSR.","commonSituations":"Reusing client test helpers that mock queries with withOverride in universal code executed on the server; accidentally importing test-only utilities into production code.","solutions":["Move withOverride usage behind an if (browser) check or into client-only test code","Use server-side dependency injection (mock the query implementation itself) for server tests","Guard with import.meta.env.DEV and avoid overriding in SSR paths"],"exampleFix":"// before\nconst resource = getPosts.resource();\nresource.withOverride(mockData); // throws on server\n// after\nif (browser) {\n  getPosts.resource().withOverride(mockData);\n}","handlingStrategy":"type-guard","validationCode":"import { browser } from '$app/environment';\nif (!browser) throw new Error('withOverride is client-only');","typeGuard":"function canOverride(res) {\n  return typeof res === 'object' && res !== null && typeof res.withOverride === 'function' && browser;\n}","tryCatchPattern":"if (browser) {\n  resource.withOverride(mock);\n} else {\n  // server: skip override\n}","preventionTips":["Only use withOverride in client/test code","Never import test utilities into SSR paths","Gate overrides behind browser checks"],"tags":["remote-functions","query","ssr","testing"],"backgroundTag":"server-forbidden-client-api","analyzedSha":"03f1687fe612ce3d2d9131139b5b188d9cf90c64","analyzedAt":"2026-09-02T02:01:50.504Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}