From e00944ffd1940110e4c1aeb8912fa26858e610bc Mon Sep 17 00:00:00 2001
From: Simon H <5968653+dummdidumm@users.noreply.github.com>
Date: Fri, 8 May 2026 18:08:26 +0200
Subject: [PATCH] fix: correctly compile component member expressions for SSR
(#18192)
Fixes #18191
---
.changeset/quiet-teams-pick.md | 5 +++++
.../phases/3-transform/server/visitors/Component.js | 6 +++++-
.../samples/dynamic-component-member/Icon.svelte | 1 +
.../samples/dynamic-component-member/_config.js | 8 ++++++++
.../samples/dynamic-component-member/main.svelte | 8 ++++++++
5 files changed, 27 insertions(+), 1 deletion(-)
create mode 100644 .changeset/quiet-teams-pick.md
create mode 100644 packages/svelte/tests/runtime-runes/samples/dynamic-component-member/Icon.svelte
create mode 100644 packages/svelte/tests/runtime-runes/samples/dynamic-component-member/_config.js
create mode 100644 packages/svelte/tests/runtime-runes/samples/dynamic-component-member/main.svelte
diff --git a/.changeset/quiet-teams-pick.md b/.changeset/quiet-teams-pick.md
new file mode 100644
index 0000000000..ed046168be
--- /dev/null
+++ b/.changeset/quiet-teams-pick.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: correctly compile component member expressions for SSR
diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js
index 8e7d7bcdbf..ed202edd3b 100644
--- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js
+++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js
@@ -9,5 +9,9 @@ import { build_inline_component } from './shared/component.js';
* @param {ComponentContext} context
*/
export function Component(node, context) {
- build_inline_component(node, /** @type {Expression} */ (context.visit(b.id(node.name))), context);
+ build_inline_component(
+ node,
+ /** @type {Expression} */ (context.visit(b.member_id(node.name))),
+ context
+ );
}
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/Icon.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/Icon.svelte
new file mode 100644
index 0000000000..77cdcabaf7
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/Icon.svelte
@@ -0,0 +1 @@
+x
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/_config.js b/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/_config.js
new file mode 100644
index 0000000000..22412de14d
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/_config.js
@@ -0,0 +1,8 @@
+import { test } from '../../test';
+
+export default test({
+ mode: ['client', 'server'],
+
+ html: `x`,
+ ssrHtml: `x`
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/main.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/main.svelte
new file mode 100644
index 0000000000..b0f95b2a31
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-member/main.svelte
@@ -0,0 +1,8 @@
+
+
+