diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/A.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/A.svelte
new file mode 100644
index 0000000000..e73551cc28
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/A.svelte
@@ -0,0 +1,8 @@
+
+
+
A
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/B.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/B.svelte
new file mode 100644
index 0000000000..459aa313c4
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/B.svelte
@@ -0,0 +1,8 @@
+
+
+B
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/_config.js b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/_config.js
new file mode 100644
index 0000000000..e750c48a00
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/_config.js
@@ -0,0 +1,13 @@
+import { test } from '../../test';
+import { flushSync } from 'svelte';
+
+export default test({
+ mode: ['client', 'hydrate'],
+
+ async test({ assert, target, logs }) {
+ const [button] = target.querySelectorAll('button');
+
+ flushSync(() => button.click());
+ assert.deepEqual(logs, ['create A', 'destroy A', 'create B']);
+ }
+});
diff --git a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/main.svelte b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/main.svelte
new file mode 100644
index 0000000000..c9ef5430a4
--- /dev/null
+++ b/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/main.svelte
@@ -0,0 +1,13 @@
+
+
+
+
+