diff --git a/packages/svelte/src/internal/client/reactivity/batch.js b/packages/svelte/src/internal/client/reactivity/batch.js index 5da776bdc7..d55e388723 100644 --- a/packages/svelte/src/internal/client/reactivity/batch.js +++ b/packages/svelte/src/internal/client/reactivity/batch.js @@ -271,7 +271,9 @@ export class Batch { var skip = is_skippable_branch || (flags & INERT) !== 0 || this.skipped_effects.has(effect); if (!skip && effect.fn !== null) { - if ((flags & EFFECT_ASYNC) !== 0) { + if (is_branch) { + effect.f ^= CLEAN; + } else if ((flags & EFFECT_ASYNC) !== 0) { const boundary = effect.b; if (check_dirtiness(effect)) { @@ -282,8 +284,6 @@ export class Batch { if (check_dirtiness(effect)) { update_effect(effect); } - } else if (is_branch) { - effect.f ^= CLEAN; } else if ((flags & RENDER_EFFECT) !== 0) { // we need to branch here because in legacy mode we run render effects // before running block effects diff --git a/packages/svelte/src/internal/client/reactivity/effects.js b/packages/svelte/src/internal/client/reactivity/effects.js index cedfed1ea9..747ef8e820 100644 --- a/packages/svelte/src/internal/client/reactivity/effects.js +++ b/packages/svelte/src/internal/client/reactivity/effects.js @@ -355,7 +355,7 @@ export function template_effect(fn, sync = [], async = []) { * @param {number} flags */ export function block(fn, flags = 0) { - var effect = create_effect(RENDER_EFFECT | BLOCK_EFFECT | flags, fn, true); + var effect = create_effect(BLOCK_EFFECT | flags, fn, true); if (DEV) { effect.dev_stack = dev_stack; } @@ -367,7 +367,7 @@ export function block(fn, flags = 0) { * @param {boolean} [push] */ export function branch(fn, push = true) { - return create_effect(RENDER_EFFECT | BRANCH_EFFECT, fn, true, push); + return create_effect(BRANCH_EFFECT, fn, true, push); } /**