From 72beac921aa398a85b3496955d857efe83d39f7a Mon Sep 17 00:00:00 2001 From: praveen-kumary Date: Sun, 1 Nov 2026 10:58:12 +0530 Subject: [PATCH] fix: resolve node components eagerly in dev to avoid 500 errors on in-flight reloads (#17554) Signed-off-by: praveen-kumary --- .changeset/dev-manifest-component-eager.md | 5 ++++ .../src/exports/vite/dev/generate_manifest.js | 24 +++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 .changeset/dev-manifest-component-eager.md diff --git a/.changeset/dev-manifest-component-eager.md b/.changeset/dev-manifest-component-eager.md new file mode 100644 index 000000000000..cdcda074d093 --- /dev/null +++ b/.changeset/dev-manifest-component-eager.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: start loading node components eagerly in dev to avoid 500 errors on in-flight requests during server module reloads diff --git a/packages/kit/src/exports/vite/dev/generate_manifest.js b/packages/kit/src/exports/vite/dev/generate_manifest.js index 5d1c68d98bf9..65893f4db75c 100644 --- a/packages/kit/src/exports/vite/dev/generate_manifest.js +++ b/packages/kit/src/exports/vite/dev/generate_manifest.js @@ -95,18 +95,22 @@ export function generate_manifest( const module_nodes = []; if (node.component) { - result.component = async () => { - const { module_node, module } = await resolve( - vite, - vite_dev_server, - runner, - /** @type {string} */ (node.component) - ); - + // Start loading the component immediately so it is evaluated in the same module + // generation as root.svelte and svelte/internal/server, rather than waiting until + // after async load() functions finish when in-flight server edits may have triggered a reload (#17554) + const component_promise = resolve( + vite, + vite_dev_server, + runner, + /** @type {string} */ (node.component) + ).then(({ module_node, module }) => { module_nodes.push(module_node); - return module.default; - }; + }); + + component_promise.catch(() => {}); + + result.component = () => component_promise; } if (node.universal) {