Skip to content

<link> and <meta> inside <svelte:head> are duplicated in SSR generated HTML when bind:value is present #7879

@mihaon

Description

@mihaon

Describe the bug

See title and reproduction.

Reproduction

Steps

Create app:

src/routes/+page.svelte

<svelte:head>
	<link rel="canonical" href="/test">
	<meta name="description" content="test">
</svelte:head>
<script>
	import Foo from '$lib/Foo.svelte'
	let bar
</script>
<Foo bind:bar/>

src/lib/Foo.svelte

<script>
	export let bar = null
</script>

svelte.config.js

import adapter from '@sveltejs/adapter-node'

/** @type {import('@sveltejs/kit').Config} */
const config = {
	kit: {
		adapter: adapter(),
	}
}

export default config

vite.config.js

import { sveltekit } from '@sveltejs/kit/vite'

const config = {
	plugins: [sveltekit()],
}

export default config

package.json

{
	"name": "my-app",
	"version": "0.0.1",
	"private": true,
	"scripts": {
		"dev": "vite dev",
		"build": "vite build",
		"preview": "vite preview"
	},
	"devDependencies": {
		"@sveltejs/adapter-node": "next",
		"@sveltejs/kit": "next",
		"svelte": "^3.44.0",
		"vite": "^3.1.0"
	},
	"type": "module"
}

Then execute npm run build && node build and view the source HTML through "View page source" (not through "Inspect").

Expected result

view-source:http://localhost:3000/ contains only one <link rel="canonical"> and only one <meta name="description">

Actual result

view-source:http://localhost:3000/ contains duplicates:

<head>
<meta charset="utf-8" />
<link rel="icon" href="./favicon.png" />
<meta name="viewport" content="width=device-width" />

<link rel="canonical" href="/test" data-svelte="svelte-11vcwl6">
<meta name="description" content="test" data-svelte="svelte-11vcwl6">

<link rel="canonical" href="/test" data-svelte="svelte-11vcwl6">
<meta name="description" content="test" data-svelte="svelte-11vcwl6">
</head>

Repo

Repo with example for reproduction: https://github.com/mihaon/svelte-issues/tree/6875

Logs

No response

System Info

Svelte version: 3.50.1
SvelteKit version: 1.0.0-next.484
Vite version: 3.1.2

Severity

annoyance

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions