Skip to content

fix: don't mark deriveds while an effect is updating#18124

Merged
Rich-Harris merged 2 commits into
mainfrom
mark-derived-fix
Apr 20, 2026
Merged

fix: don't mark deriveds while an effect is updating#18124
Rich-Harris merged 2 commits into
mainfrom
mark-derived-fix

Conversation

@dummdidumm
Copy link
Copy Markdown
Member

Fixes #18123

This makes setting state inside effects slightly slower theoretically (since they hit the new guard), but I verified that the original issue for which we introduced this (#16658) is still fast with this change.

The more we add logic to this the more I think we should investigate switching to a different mechanism. I tried using a Set previously but it did hurt the benchmarks a bit - might try to revisit a variant of this.

Fixes #18123

This makes setting state inside effects slightly slower theoretically (since they hit the new guard), but I verified that the original issue for which we introduced this (#16658) is still fast with this change.
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 20, 2026

🦋 Changeset detected

Latest commit: 36a537f

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
svelte Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@svelte-docs-bot
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown
Contributor

Playground

pnpm add https://pkg.pr.new/svelte@18124

@Rich-Harris
Copy link
Copy Markdown
Member

/autofix

@Rich-Harris Rich-Harris merged commit 8e73190 into main Apr 20, 2026
3 checks passed
@Rich-Harris Rich-Harris deleted the mark-derived-fix branch April 20, 2026 14:35
@github-actions github-actions Bot mentioned this pull request Apr 20, 2026
elliott-with-the-longest-name-on-github pushed a commit that referenced this pull request Apr 23, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## svelte@5.55.5

### Patch Changes

- fix: don't mark deriveds while an effect is updating
([#18124](#18124))

- fix: do not dispatch introstart event with animation of animate
directive ([#18122](#18122))

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
tomyan added a commit to tomyan/svelterm-vt100 that referenced this pull request May 9, 2026
The previous commit deferred `changeMarker = {}` via `setTimeout(0)` to
work around a customRenderer-induced stuck-derived bug in the bundled
svelte fork. Upstream svelte-custom-renderer has now landed
sveltejs/svelte#18124 ("don't mark deriveds while an effect is
updating"), which fixes the underlying race — `mark_reactions` no
longer leaves host deriveds in a `DIRTY|WAS_MARKED` state with no
consumer scheduled when an effect's dep is mutated mid-flush.

Verified end-to-end: with svelte-fork merged up to upstream's
`c92989ad1` and TerminalView reverted to a synchronous
`changeMarker = {}`, both browser-mode and terminal-mode preview
panels render v86 boot output as expected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
maxffarrell added a commit to maxffarrell/bits-ui that referenced this pull request May 15, 2026
Svelte 5.55.5 introduced a change ("don't mark deriveds while an effect is
updating", sveltejs/svelte#18124) that breaks svelte-toolbelt's boxWith()
ref resolution, causing NavigationMenu refs to return a non-Element value
and failing the onFocusOutside/onkeydown guards. Tests pass with 5.55.4.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

{#if} content remains visible when condition is false (regression since 5.41.3)

2 participants