From 36612abdd8389e0b28f58294601c8ef555fbace3 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 14 Jul 2025 11:58:24 -0400 Subject: [PATCH] use queue_micro_task in createSubscriber --- packages/svelte/src/reactivity/create-subscriber.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/reactivity/create-subscriber.js b/packages/svelte/src/reactivity/create-subscriber.js index dcbc5df9fe..afcea9c5b4 100644 --- a/packages/svelte/src/reactivity/create-subscriber.js +++ b/packages/svelte/src/reactivity/create-subscriber.js @@ -3,6 +3,7 @@ import { effect_tracking, render_effect } from '../internal/client/reactivity/ef import { source, increment } from '../internal/client/reactivity/sources.js'; import { tag } from '../internal/client/dev/tracing.js'; import { DEV } from 'esm-env'; +import { queue_micro_task } from '../internal/client/dom/task.js'; /** * Returns a `subscribe` function that, if called in an effect (including expressions in the template), @@ -68,7 +69,7 @@ export function createSubscriber(start) { subscribers += 1; return () => { - queueMicrotask(() => { + queue_micro_task(() => { // Only count down after a microtask, else we would reach 0 before our own render effect reruns, // but reach 1 again when the tick callback of the prior teardown runs. That would mean we // re-subcribe unnecessarily and create a memory leak because the old subscription is never cleaned up.