diff --git a/.changeset/few-geese-itch.md b/.changeset/few-geese-itch.md
deleted file mode 100644
index 737aa01911..0000000000
--- a/.changeset/few-geese-itch.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'svelte': patch
----
-
-fix: destroy dynamic component instance before creating new one
diff --git a/packages/svelte/src/internal/client/dom/blocks/svelte-component.js b/packages/svelte/src/internal/client/dom/blocks/svelte-component.js
index be6611c96d..2697722b39 100644
--- a/packages/svelte/src/internal/client/dom/blocks/svelte-component.js
+++ b/packages/svelte/src/internal/client/dom/blocks/svelte-component.js
@@ -34,6 +34,11 @@ export function component(node, get_component, render_fn) {
var pending_effect = null;
function commit() {
+ if (effect) {
+ pause_effect(effect);
+ effect = null;
+ }
+
if (offscreen_fragment) {
// remove the anchor
/** @type {Text} */ (offscreen_fragment.lastChild).remove();
@@ -51,11 +56,6 @@ export function component(node, get_component, render_fn) {
var defer = should_defer_append();
- if (effect) {
- pause_effect(effect);
- effect = null;
- }
-
if (component) {
var target = anchor;
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
deleted file mode 100644
index e73551cc28..0000000000
--- a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/A.svelte
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
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
deleted file mode 100644
index 459aa313c4..0000000000
--- a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/B.svelte
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-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
deleted file mode 100644
index e750c48a00..0000000000
--- a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/_config.js
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index c9ef5430a4..0000000000
--- a/packages/svelte/tests/runtime-runes/samples/dynamic-component-destroy-then-create/main.svelte
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-