{"record":{"id":"1a7ffea361bf8ad8","repo":"sveltejs/kit","slug":"query-resolved-without-a-value","errorCode":null,"errorMessage":"Query resolved without a value","messagePattern":"Query resolved without a value","errorType":"http","errorClass":"HandledHttpError","httpStatus":500,"severity":"error","filePath":"packages/kit/src/runtime/client/remote-functions/query/instance.svelte.js","lineNumber":54,"sourceCode":"\t\t// don't reduce undefined value\n\t\tif (!this.#ready) return undefined;\n\n\t\treturn this.#overrides.reduce((v, r) => r(v), /** @type {T} */ (this.#raw));\n\t});\n\n\t/** @type {App.Error | undefined} */\n\t#error = $state.raw(undefined);\n\n\t/** @type {Promise<T>['then']} */\n\t// @ts-expect-error TS doesn't understand that the promise returns something\n\t#then = $derived.by(() => {\n\t\tconst p = this.#get_promise();\n\t\tthis.#overrides.length;\n\n\t\treturn (resolve, reject) => {\n\t\t\tconst result = p.then(tick).then(() => {\n\t\t\t\tif (!this.#ready) {\n\t\t\t\t\tthrow new HandledHttpError(\n\t\t\t\t\t\tthis.#error ?? { status: 500, message: 'Query resolved without a value' }\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn /** @type {T} */ (this.#current);\n\t\t\t});\n\n\t\t\tif (resolve || reject) {\n\t\t\t\treturn result.then(resolve, reject);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t});\n\n\t/**\n\t * @param {string} key\n\t * @param {() => Promise<T>} fn","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/sveltejs/kit/blob/03f1687fe612ce3d2d9131139b5b188d9cf90c64/packages/kit/src/runtime/client/remote-functions/query/instance.svelte.js#L36-L72","documentation":"A Query's promise resolves only when the query has a value (#ready). If the underlying promise settles but no value was ever set, the client throws a HandledHttpError (500 by default, or the stored #error), meaning the query resolved without producing a value.","triggerScenarios":"The remote query function's returned promise resolved without the query instance receiving a value — e.g. the server handler returned undefined, an override was applied without a value, or the query errored in a way that left #error unset and #ready false when the awaited chain completed.","commonSituations":"Remote query function that conditionally returns nothing; awaiting a query that was never properly started; race where an error/override path skipped setting the current value; server bug returning an empty result the client can't adopt.","solutions":["Ensure the remote query function always returns a value for every code path","Check the server handler for early returns/undefined results and add logging","Inspect overrides/cancel logic so a query is not left in a non-ready settled state","Update @sveltejs/kit — resolution handling in queries changed across releases"],"exampleFix":"// before\nexport const getUser = query(async (id) => {\n  if (!id) return; // resolves without a value\n  return db.users.get(id);\n});\n// after\nexport const getUser = query(async (id) => {\n  if (!id) error(400, 'id required');\n  return db.users.get(id);\n});","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  const value = await userQuery;\n} catch (e) {\n  // HandledHttpError — Query resolved without a value\n  showFallback(e.status ?? 500);\n}","preventionTips":["Ensure remote query functions return a value on every path","Use error(...) instead of bare returns for invalid input","Test all conditional branches of remote query functions"],"tags":["query","remote-functions","client","unresolved-value"],"backgroundTag":"query-resolved-without-value","analyzedSha":"03f1687fe612ce3d2d9131139b5b188d9cf90c64","analyzedAt":"2026-09-02T02:01:50.504Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}