From 4883fd2c83e92226eb17c9a686712351163c482f Mon Sep 17 00:00:00 2001
From: Simon H <5968653+dummdidumm@users.noreply.github.com>
Date: Thu, 6 Feb 2025 22:26:03 +0100
Subject: [PATCH] fix: hydrate `href` that is part of spread attributes
(#15226)
We had some duplicated and buggy code, removing it fixes #15120
---
.changeset/wicked-apes-sin.md | 5 +++++
.../svelte/src/internal/client/dom/elements/attributes.js | 6 +-----
.../samples/repair-mismatched-a-href/_expected.html | 2 +-
.../hydration/samples/repair-mismatched-a-href/main.svelte | 1 +
4 files changed, 8 insertions(+), 6 deletions(-)
create mode 100644 .changeset/wicked-apes-sin.md
diff --git a/.changeset/wicked-apes-sin.md b/.changeset/wicked-apes-sin.md
new file mode 100644
index 0000000000..f40294ddff
--- /dev/null
+++ b/.changeset/wicked-apes-sin.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: hydrate `href` that is part of spread attributes
diff --git a/packages/svelte/src/internal/client/dom/elements/attributes.js b/packages/svelte/src/internal/client/dom/elements/attributes.js
index 308f23d340..4a0f0cea0e 100644
--- a/packages/svelte/src/internal/client/dom/elements/attributes.js
+++ b/packages/svelte/src/internal/client/dom/elements/attributes.js
@@ -419,11 +419,7 @@ export function set_attributes(
// @ts-ignore
element[name] = value;
} else if (typeof value !== 'function') {
- if (hydrating && (name === 'src' || name === 'href' || name === 'srcset')) {
- if (!skip_warning) check_src_in_dev_hydration(element, name, value ?? '');
- } else {
- set_attribute(element, name, value);
- }
+ set_attribute(element, name, value);
}
}
if (key === 'style' && '__styles' in element) {
diff --git a/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/_expected.html b/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/_expected.html
index 2f5b652fac..e1076af2ec 100644
--- a/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/_expected.html
+++ b/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/_expected.html
@@ -1 +1 @@
-foo
+foo foo
diff --git a/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/main.svelte b/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/main.svelte
index be01d05f8e..3f0c988016 100644
--- a/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/main.svelte
+++ b/packages/svelte/tests/hydration/samples/repair-mismatched-a-href/main.svelte
@@ -3,3 +3,4 @@
foo
+foo