From 06dd689758bad106412a5eaf3a0c0783d9941b46 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Sat, 11 Apr 2026 21:09:05 +0200 Subject: [PATCH 1/3] fix: reapply context after transforming error during SSR Don't have a test for it and no bug report but I stumbled upon this and I'm very certain not restoring context here is wrong since it means the failed snippet rendering gets the wrong context. --- .changeset/cruel-boxes-serve.md | 5 +++++ packages/svelte/src/internal/server/renderer.js | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/cruel-boxes-serve.md diff --git a/.changeset/cruel-boxes-serve.md b/.changeset/cruel-boxes-serve.md new file mode 100644 index 0000000000..592cec4d01 --- /dev/null +++ b/.changeset/cruel-boxes-serve.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: reapply context after transforming error during SSR diff --git a/packages/svelte/src/internal/server/renderer.js b/packages/svelte/src/internal/server/renderer.js index d2ab35a1f2..8353839ec0 100644 --- a/packages/svelte/src/internal/server/renderer.js +++ b/packages/svelte/src/internal/server/renderer.js @@ -716,6 +716,7 @@ export class Renderer { set_ssr_context(context); let transformed = await transformError(error); + set_ssr_context(context); // Render the failed snippet instead of the partial children content const failed_renderer = new Renderer(item.global, item); From 84c49bab01e477ce7bbe349435429fb29b66ef75 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 1 May 2026 22:02:58 +0200 Subject: [PATCH 2/3] Apply suggestion from @Rich-Harris Co-authored-by: Rich Harris --- packages/svelte/src/internal/server/renderer.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/internal/server/renderer.js b/packages/svelte/src/internal/server/renderer.js index 8353839ec0..67e950050d 100644 --- a/packages/svelte/src/internal/server/renderer.js +++ b/packages/svelte/src/internal/server/renderer.js @@ -715,7 +715,11 @@ export class Renderer { const { context, failed, transformError } = item.#boundary; set_ssr_context(context); - let transformed = await transformError(error); + + let promise = transformError(error); + set_ssr_context(null); + + let transformed = await promise; set_ssr_context(context); // Render the failed snippet instead of the partial children content From 76447cbefda68331a752fbe636eb25151e703027 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Tue, 5 May 2026 23:40:22 +0200 Subject: [PATCH 3/3] format --- packages/svelte/src/internal/server/renderer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/svelte/src/internal/server/renderer.js b/packages/svelte/src/internal/server/renderer.js index 67e950050d..35aac64721 100644 --- a/packages/svelte/src/internal/server/renderer.js +++ b/packages/svelte/src/internal/server/renderer.js @@ -718,7 +718,7 @@ export class Renderer { let promise = transformError(error); set_ssr_context(null); - + let transformed = await promise; set_ssr_context(context);