fix: don't mark deriveds while an effect is updating#18124
Merged
Conversation
🦋 Changeset detectedLatest commit: 36a537f The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
Contributor
|
Member
|
/autofix |
Rich-Harris
approved these changes
Apr 20, 2026
Merged
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Setpreviously but it did hurt the benchmarks a bit - might try to revisit a variant of this.