sveltejs/kit · error

Cannot call '${__.name}.withOverride()' on the server

Error message

Cannot call '${__.name}.withOverride()' on the server

What it means

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.

Source

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

			delete get_cache(__, state)[payload];

			refresh(event, state, __, payload, get_promise);

			return Promise.resolve();
		},
		/** @param {any} value */
		set(value) {
			const p = (promise = Promise.resolve(value));
			get_cache(__, state)[payload] = p;

			refresh(event, state, __, payload, () => p);
		},
		/** @type {Promise<any>['then']} */
		then(onfulfilled, onrejected) {
			return get_promise().then(onfulfilled, onrejected);
		},
		withOverride() {
			throw new Error(`Cannot call '${__.name}.withOverride()' on the server`);
		},
		get [Symbol.toStringTag]() {
			return 'QueryResource';
		}
	};
}

/**
 * @param {RemoteQueryLiveInternals} __
 * @param {string} payload — the stringified raw argument (i.e. the cache key the client will use)
 * @param {RequestEvent} event
 * @param {RequestState} state
 * @param {() => AsyncGenerator<any, void, void>} get_generator
 * @returns {RemoteLiveQuery<any>}
 */
function create_live_query_resource(__, payload, event, state, get_generator) {
	/** @type {Promise<any> | null} */
	let promise = null;

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Move withOverride usage behind an if (browser) check or into client-only test code
  2. Use server-side dependency injection (mock the query implementation itself) for server tests
  3. Guard with import.meta.env.DEV and avoid overriding in SSR paths

Example fix

// before
const resource = getPosts.resource();
resource.withOverride(mockData); // throws on server
// after
if (browser) {
  getPosts.resource().withOverride(mockData);
}
Defensive patterns

Strategy: type-guard

Validate before calling

import { browser } from '$app/environment';
if (!browser) throw new Error('withOverride is client-only');

Type guard

function canOverride(res) {
  return typeof res === 'object' && res !== null && typeof res.withOverride === 'function' && browser;
}

Try / catch

if (browser) {
  resource.withOverride(mock);
} else {
  // server: skip override
}

Prevention

When it happens

Trigger: 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.

Common situations: Reusing client test helpers that mock queries with withOverride in universal code executed on the server; accidentally importing test-only utilities into production code.

Related errors


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