sveltejs/kit · error

Could not get the request store.

Error message

Could not get the request store.

What it means

`get_request_store()` fetches the per-request store (used by remote functions and related state) from `AsyncLocalStorage`. If no store exists in the current async context, it throws. Like `getRequestEvent`, it must be accessed synchronously within a request, and if accessed synchronously yet still missing, it indicates an internal error.

Source

Thrown at packages/kit/src/exports/internal/server/event.js:59

	}

	return event;
}

export function get_request_store() {
	const result = try_get_request_store();
	if (!result) {
		let message = 'Could not get the request store.';

		if (als) {
			message += ' This is an internal error.';
		} else {
			message +=
				' In environments without `AsyncLocalStorage`, the request store (used by e.g. remote functions) must be accessed synchronously, not after an `await`.' +
				' If it was accessed synchronously then this is an internal error.';
		}

		throw new Error(message);
	}
	return result;
}

export function try_get_request_store() {
	return sync_store ?? als?.getStore() ?? null;
}

/**
 * @template T
 * @param {RequestStore | null} store
 * @param {() => T} fn
 */
export function with_request_store(store, fn) {
	try {
		sync_store = store;
		return als ? als.run(store, fn) : fn();
	} finally {

View on GitHub (pinned to 03f1687fe6)

Solutions

  1. Call `get_request_store()` synchronously at function start and hold the reference across awaits.
  2. Ensure the call happens inside a server request context (remote functions, load, actions, hooks).
  3. Use `try_get_request_store()` when a store may legitimately be absent, and handle `null`.
  4. If it fails synchronously inside a valid request, file an issue — it may be an internal error from version mismatch; clear caches and align `@sveltejs/kit` and vite plugin versions.

Example fix

// before
async function helper() {
  await setup();
  const { state } = get_request_store();
}
// after
function helper() {
  const store = get_request_store();
  return async () => { await setup(); return store.state; };
}
Defensive patterns

Strategy: fallback

Validate before calling

import { try_get_request_store } from '@sveltejs/kit/internal';
const store = try_get_request_store();
if (!store) {
  // not in a request context — skip or use defaults
}

Try / catch

let store;
try {
  store = get_request_store();
} catch {
  store = null; // degrade gracefully outside request scope
}

Prevention

When it happens

Trigger: Calling `get_request_store()` outside a server request, from detached async callbacks, or after `await` in environments lacking `AsyncLocalStorage` — commonly from remote function helpers or code reading `state`.

Common situations: Using remote-function internals in a plain script or test without a request wrapper; queueing work on `setImmediate` that reads the store; Cloudflare Workers without the ALS polyfill after an await boundary.

Related errors


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