diff --git a/.changeset/tame-tomatoes-warn.md b/.changeset/tame-tomatoes-warn.md
new file mode 100644
index 000000000000..eafba8820867
--- /dev/null
+++ b/.changeset/tame-tomatoes-warn.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: take custom attribute name into account when reflecting property
diff --git a/packages/svelte/src/runtime/internal/Component.js b/packages/svelte/src/runtime/internal/Component.js
index bc5b117c2ff0..2bfdb6fd4899 100644
--- a/packages/svelte/src/runtime/internal/Component.js
+++ b/packages/svelte/src/runtime/internal/Component.js
@@ -283,7 +283,7 @@ if (typeof HTMLElement === 'function') {
'toAttribute'
);
if (attribute_value == null) {
- this.removeAttribute(key);
+ this.removeAttribute(this.$$p_d[key].attribute || key);
} else {
this.setAttribute(this.$$p_d[key].attribute || key, attribute_value);
}
diff --git a/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/main.svelte b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/main.svelte
new file mode 100644
index 000000000000..c5c80c16a3e4
--- /dev/null
+++ b/packages/svelte/test/runtime-browser/custom-elements-samples/reflect-attributes-add-remove/main.svelte
@@ -0,0 +1,23 @@
+