`<svelte:head>` duplicate tags when using `+layout.svelte`
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 20.8k
- Forks
- 2.3k
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 156
Description
Describe the bug
This is similar to https://github.com/sveltejs/kit/issues/6858, https://github.com/sveltejs/svelte/issues/4533, https://github.com/sveltejs/svelte/issues/6463, https://github.com/sveltejs/svelte/issues/7444 but is SvelteKit specific.
When using <svelte:head> in +layout.svelte, some tags are duplicated when then using <svelte:head> on other pages. It looks like <title> is de-duped successfully, but other meta tags slip through, giving duplicates.
This is a problem for me when working with Opengraph tags - my hope was that the last tag attributed would just be picked up when sharing a link, but that doesn't seem to happen, and it's always picking up the first meta tag it finds instead. Since SvelteKit already elegantly handles duplicate <title> tags it feels like this is a bug, and that it should also account for duplicate <meta> tags too.
Potential work around here of course is just to define <svelte:head> in each individual page file, but this isn't ideal DX.
Reproduction
https://www.sveltelab.dev/eq6abubatgq8jn1
Logs
No response
System Info
System:
OS: macOS 13.3.1
CPU: (8) arm64 Apple M1 Pro
Memory: 103.92 MB / 16.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 18.12.1 - ~/.nvm/versions/node/v18.12.1/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v18.12.1/bin/yarn
npm: 8.19.2 - ~/.nvm/versions/node/v18.12.1/bin/npm
Browsers:
Brave Browser: 113.1.51.110
Chrome: 113.0.5672.126
Safari: 16.4
npmPackages:
@sveltejs/adapter-auto: ^2.1.0 => 2.1.0
@sveltejs/kit: ^1.20.1 => 1.20.1
svelte: ^3.59.1 => 3.59.1
vite: ^4.3.9 => 4.3.9
Severity
annoyance
Additional Information
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked SvelteLab reproduction and compare head output from +layout.svelte with output from individual page files. Trace the SvelteKit handling of svelte:head and verify that the completed fix prevents duplicate meta tags while preserving the existing title behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100