diff --git a/.changeset/tasty-snails-dress.md b/.changeset/tasty-snails-dress.md new file mode 100644 index 0000000000..0fb847c1ff --- /dev/null +++ b/.changeset/tasty-snails-dress.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: async `class:` + spread attributes were compiled into sync server-side code diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js index da90011259..3b5f2423a3 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js @@ -372,7 +372,10 @@ function build_element_spread_attributes( directive.name, directive.expression.type === 'Identifier' && directive.expression.name === directive.name ? b.id(directive.name) - : /** @type {Expression} */ (context.visit(directive.expression)) + : transform( + /** @type {Expression} */ (context.visit(directive.expression)), + directive.metadata.expression + ) ); }); diff --git a/packages/svelte/tests/server-side-rendering/samples/async-directive-with-spreading/_expected.html b/packages/svelte/tests/server-side-rendering/samples/async-directive-with-spreading/_expected.html new file mode 100644 index 0000000000..d46a957bdf --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/async-directive-with-spreading/_expected.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/packages/svelte/tests/server-side-rendering/samples/async-directive-with-spreading/main.svelte b/packages/svelte/tests/server-side-rendering/samples/async-directive-with-spreading/main.svelte new file mode 100644 index 0000000000..ed4270b754 --- /dev/null +++ b/packages/svelte/tests/server-side-rendering/samples/async-directive-with-spreading/main.svelte @@ -0,0 +1,2 @@ +
+