diff --git a/.changeset/hydration-head-renderer-type.md b/.changeset/hydration-head-renderer-type.md new file mode 100644 index 0000000000..bc566c158d --- /dev/null +++ b/.changeset/hydration-head-renderer-type.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: don't corrupt renderer type during SSR's legacy `bind:` retry loop diff --git a/packages/svelte/src/internal/server/renderer.js b/packages/svelte/src/internal/server/renderer.js index 35aac64721..ba6a361a90 100644 --- a/packages/svelte/src/internal/server/renderer.js +++ b/packages/svelte/src/internal/server/renderer.js @@ -451,6 +451,7 @@ export class Renderer { */ copy() { const copy = new Renderer(this.global, this.#parent); + copy.type = this.type; copy.#out = this.#out.map((item) => (item instanceof Renderer ? item.copy() : item)); copy.promise = this.promise; return copy; diff --git a/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/Foo.svelte b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/Foo.svelte new file mode 100644 index 0000000000..b991cdf968 --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/Foo.svelte @@ -0,0 +1,3 @@ + diff --git a/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/Wrapper.svelte b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/Wrapper.svelte new file mode 100644 index 0000000000..d48c90fe59 --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/Wrapper.svelte @@ -0,0 +1,6 @@ + + + diff --git a/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/_expected.html b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/_expected.html new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/_expected_head.html b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/_expected_head.html new file mode 100644 index 0000000000..904fa1d9eb --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/_expected_head.html @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/main.svelte b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/main.svelte new file mode 100644 index 0000000000..b68ccd07fe --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/head-with-multiple-binding-components/main.svelte @@ -0,0 +1,12 @@ + + + + + + + + + +