From 1c313630d2e2235dd5a3f674986dfbffbe0b5f11 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 21 Apr 2025 11:45:28 -0400 Subject: [PATCH] WIP --- .../svelte/src/internal/client/reactivity/batch.js | 7 ++++++- packages/svelte/src/internal/client/runtime.js | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/batch.js b/packages/svelte/src/internal/client/reactivity/batch.js index 13b8cf4709..0381a99cbd 100644 --- a/packages/svelte/src/internal/client/reactivity/batch.js +++ b/packages/svelte/src/internal/client/reactivity/batch.js @@ -60,7 +60,12 @@ export class Batch { source.v = current; } - for (const e of this.combined_effects) { + for (const e of this.render_effects) { + set_signal_status(e, DIRTY); + schedule_effect(e); + } + + for (const e of this.effects) { set_signal_status(e, DIRTY); schedule_effect(e); } diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index addcfc29a0..044f1ab240 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -705,9 +705,15 @@ function flush_queued_root_effects() { } if (batch.async_effects.length === 0 && batch.settled()) { + var render_effects = batch.render_effects; + var effects = batch.effects; + + batch.render_effects = []; + batch.effects = []; + batch.commit(); - flush_queued_effects(batch.render_effects); - flush_queued_effects(batch.effects); + flush_queued_effects(render_effects); + flush_queued_effects(effects); } else { // store the effects on the batch so that they run next time, // even if they don't get re-dirtied