Skip to content

Commit d5839ef

Browse files
authored
fix: head duplication when binding is present (#9124)
fixes #7879 fixes #4982
1 parent 2691e19 commit d5839ef

File tree

6 files changed

+25
-0
lines changed

6 files changed

+25
-0
lines changed

.changeset/stale-terms-sing.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: head duplication when binding is present

packages/svelte/src/compiler/compile/render_ssr/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,13 @@ export default function ssr(component, options) {
144144
? b`
145145
let $$settled;
146146
let $$rendered;
147+
let #previous_head = $$result.head;
147148
148149
do {
149150
$$settled = true;
151+
// $$result.head is mutated by the literal expression
152+
// need to reset it if we're looping back to prevent duplication
153+
$$result.head = #previous_head;
150154
151155
${reactive_declarations}
152156
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<script>
2+
export let bar = null
3+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<link rel="canonical" href="/test">
2+
<meta name="description" content="test">

packages/svelte/test/server-side-rendering/samples/head-no-duplicates-with-binding/_expected.html

Whitespace-only changes.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script>
2+
import Foo from './Foo.svelte';
3+
let bar;
4+
</script>
5+
6+
<svelte:head>
7+
<link rel="canonical" href="/test" />
8+
<meta name="description" content="test" />
9+
</svelte:head>
10+
11+
<Foo bind:bar />

0 commit comments

Comments
 (0)