Skip to content

fix: unset context synchronously in run#18236

Merged
dummdidumm merged 1 commit into
mainfrom
unset-context-fix
May 18, 2026
Merged

fix: unset context synchronously in run#18236
dummdidumm merged 1 commit into
mainfrom
unset-context-fix

Conversation

@dummdidumm

Copy link
Copy Markdown
Member

Our run function which executes top level awaits (and synchronous statements in-between/after) did not unset the context in time in case the function returns an async value. In that case the context was still around until the that promise resolves, which can be too late because unrelated things can be intertwined with the batch.

The test shows this: Without the fix, the unrelated count incrementation would not update the view until the top level awaits in the child are done. In the test this just shows as a delayed visual update, but it also can result in stale roots as shown in #18221 (comment)

Our `run` function which executes top level awaits (and synchronous statements in-between/after) did not unset the context in time in case the function returns an async value. In that case the context was still around until the that promise resolves, which can be too late because unrelated things can be intertwined with the batch.

The test shows this: Without the fix, the unrelated count incrementation would not update the view until the top level awaits in the child are done. In the test this just shows as a delayed visual update, but it also can result in stale roots as shown in #18221 (comment)
@changeset-bot

changeset-bot Bot commented May 18, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 751c2b1

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@18236

@dummdidumm dummdidumm merged commit eb10a70 into main May 18, 2026
21 checks passed
@dummdidumm dummdidumm deleted the unset-context-fix branch May 18, 2026 15:36
@github-actions github-actions Bot mentioned this pull request May 18, 2026
dummdidumm pushed a commit that referenced this pull request May 18, 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.8

### Patch Changes

- fix(print): handle `svelte:body` and fix keyframe percentage
double-printing
([#18234](#18234))

- fix: execute uninitialized derived even if it's destroyed
([#18228](#18228))

- fix: use named symbols everywhere
([#18238](#18238))

- fix: don't run teardown effects when deriveds are unfreezed
([#18227](#18227))

- fix: unset context synchronously in `run`
([#18236](#18236))

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.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.

2 participants