diff --git a/.changeset/grumpy-students-drop.md b/.changeset/grumpy-students-drop.md
new file mode 100644
index 0000000000..09e4baf2dd
--- /dev/null
+++ b/.changeset/grumpy-students-drop.md
@@ -0,0 +1,5 @@
+---
+'svelte': patch
+---
+
+fix: correctly handle action member expression keys
diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js
index a8ac315934..e7dcb0e870 100644
--- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js
+++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/template.js
@@ -2413,12 +2413,17 @@ export const template_visitors = {
if (node.expression) {
params.push(b.id('$$props'));
}
+ let callee;
+ if (node.name.includes('.')) {
+ const parts = node.name.split('.');
+ const key = b.key(parts[1]);
+ callee = b.member(serialize_get_binding(b.id(parts[0]), state), key, key.type === 'Literal');
+ } else {
+ callee = serialize_get_binding(b.id(node.name), state);
+ }
/** @type {import('estree').Expression[]} */
- const args = [
- state.node,
- b.arrow(params, b.call(serialize_get_binding(b.id(node.name), state), ...params))
- ];
+ const args = [state.node, b.arrow(params, b.call(callee, ...params))];
if (node.expression) {
args.push(b.thunk(/** @type {import('estree').Expression} */ (visit(node.expression))));
diff --git a/packages/svelte/tests/runtime-legacy/samples/action-object-key/_config.js b/packages/svelte/tests/runtime-legacy/samples/action-object-key/_config.js
new file mode 100644
index 0000000000..59153c4162
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/action-object-key/_config.js
@@ -0,0 +1,10 @@
+import { test } from '../../test';
+
+export default test({
+ html: `
+ Text
+ `,
+ ssrHtml: `
+ Text
+ `
+});
diff --git a/packages/svelte/tests/runtime-legacy/samples/action-object-key/main.svelte b/packages/svelte/tests/runtime-legacy/samples/action-object-key/main.svelte
new file mode 100644
index 0000000000..67f5e28ac4
--- /dev/null
+++ b/packages/svelte/tests/runtime-legacy/samples/action-object-key/main.svelte
@@ -0,0 +1,4 @@
+
+Text