diff --git a/src/compiler/compile/render_dom/wrappers/Element/index.ts b/src/compiler/compile/render_dom/wrappers/Element/index.ts
index 382bdfaec1..eed7c6f4ee 100644
--- a/src/compiler/compile/render_dom/wrappers/Element/index.ts
+++ b/src/compiler/compile/render_dom/wrappers/Element/index.ts
@@ -1048,7 +1048,7 @@ export default class ElementWrapper extends Wrapper {
block.chunks.hydrate.push(updater);
- if (has_spread) {
+ if (has_spread || this.node.is_dynamic_element) {
block.chunks.update.push(updater);
} else if ((dependencies && dependencies.size > 0) || this.class_dependencies.length) {
const all_dependencies = this.class_dependencies.concat(...dependencies);
diff --git a/test/runtime/samples/dynamic-element-class-directive/Link.svelte b/test/runtime/samples/dynamic-element-class-directive/Link.svelte
new file mode 100644
index 0000000000..c58b3d1dc5
--- /dev/null
+++ b/test/runtime/samples/dynamic-element-class-directive/Link.svelte
@@ -0,0 +1,13 @@
+
+
+