From 4ed6e0656a814d5c56d8a2677dffb7ee42e01cc3 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 25 Mar 2026 13:59:00 -0400 Subject: [PATCH] WIP --- .../src/internal/client/reactivity/batch.js | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/batch.js b/packages/svelte/src/internal/client/reactivity/batch.js index f4987c6daa..72f8ddcb9c 100644 --- a/packages/svelte/src/internal/client/reactivity/batch.js +++ b/packages/svelte/src/internal/client/reactivity/batch.js @@ -1221,18 +1221,12 @@ export function fork(fn) { var batch = Batch.ensure(); batch.is_fork = true; - batch_values = new Map(); var committed = false; var settled = batch.settled(); flushSync(fn); - // revert state changes - for (var [source, value] of batch.previous) { - source.v = value; - } - return { commit: async () => { if (committed) { @@ -1248,10 +1242,17 @@ export function fork(fn) { batch.is_fork = false; - // apply changes and update write versions so deriveds see the change - for (var [source, value] of batch.current) { - source.v = value; - source.wv = increment_write_version(); + for (var [reaction, cv] of batch.cvs) { + if (cv > reaction.cv) { + reaction.cv = cv; + } + } + + for (var [value, wv] of batch.wvs) { + if (wv > value.wv) { + value.wv = increment_write_version(); + value.v = batch.current.get(value); + } } // trigger any `$state.eager(...)` expressions with the new state.