chore: verify that $effect.root(...) does not re-run
#11020
Merged
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.
There was a TODO in the codebase to check whether root effects should re-run if they reference any state that later changes. I think that would be surprising, and indeed it's currently the case that they do not re-run. This PR just adds a test case to verify that.
It also tweaks the implementation — rather than using
untrack, we can use the effect flag and do microscopically less work. Finally, since branch effects also have this 'don't re-run me' behaviour, we can remove anuntrackcall from the effect root inmount.No changeset because this doesn't change anything user-observable.
Before submitting the PR, please make sure you do the following
feat:,fix:,chore:, ordocs:.Tests and linting
pnpm testand lint the project withpnpm lint