diff --git a/packages/svelte/src/internal/client/dom/blocks/boundary.js b/packages/svelte/src/internal/client/dom/blocks/boundary.js index 2596494f37..289d182ab4 100644 --- a/packages/svelte/src/internal/client/dom/blocks/boundary.js +++ b/packages/svelte/src/internal/client/dom/blocks/boundary.js @@ -3,6 +3,7 @@ import { BOUNDARY_EFFECT, BOUNDARY_SUSPENDED, + DIRTY, EFFECT_PRESERVED, EFFECT_RAN, EFFECT_TRANSPARENT, @@ -36,6 +37,7 @@ import { DEV } from 'esm-env'; import { from_async_derived, set_from_async_derived } from '../../reactivity/deriveds.js'; import { raf } from '../../timing.js'; import { loop } from '../../loop.js'; +import { mark_reactions } from '../../reactivity/sources.js'; const ASYNC_INCREMENT = Symbol(); const ASYNC_DECREMENT = Symbol(); @@ -175,6 +177,11 @@ export function boundary(node, props, children) { // @ts-ignore var sources = boundary.fn.sources; + for (var [source, entry] of sources) { + if (source.v !== entry.v) { + mark_reactions(source, DIRTY); + } + } sources.clear(); for (const e of render_effects) { diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index 5ad2ca6dd7..207d8fa06a 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -261,7 +261,7 @@ export function update_pre(source, d = 1) { * @param {Source} [source] * @returns {void} */ -function mark_reactions(signal, status, source) { +export function mark_reactions(signal, status, source) { var reactions = signal.reactions; if (reactions === null) return;