From c419ab0eec9f48b4aaca048b0bcc08d7ea2ac78d Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 10 Jul 2025 16:23:32 -0400 Subject: [PATCH] dont update derived status when time-travelling --- .../src/internal/client/reactivity/deriveds.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/deriveds.js b/packages/svelte/src/internal/client/reactivity/deriveds.js index 2012bb81ac..c659804054 100644 --- a/packages/svelte/src/internal/client/reactivity/deriveds.js +++ b/packages/svelte/src/internal/client/reactivity/deriveds.js @@ -33,7 +33,7 @@ import { tracing_mode_flag } from '../../flags/index.js'; import { Boundary } from '../dom/blocks/boundary.js'; import { component_context } from '../context.js'; import { UNINITIALIZED } from '../../../constants.js'; -import { current_batch } from './batch.js'; +import { batch_deriveds, current_batch } from './batch.js'; /** @type {Effect | null} */ export let current_async_effect = null; @@ -328,8 +328,12 @@ export function update_derived(derived) { // cleanup function, or it will cache a stale value if (is_destroying_effect) return; - var status = - (skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null ? MAYBE_DIRTY : CLEAN; + if (batch_deriveds !== null) { + batch_deriveds.set(derived, derived.v); + } else { + var status = + (skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null ? MAYBE_DIRTY : CLEAN; - set_signal_status(derived, status); + set_signal_status(derived, status); + } }