fix: traverse graph when time traveling #17095
Open
+79
−20
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.
Often deriveds are currently unowned but through graph traversal during
is_dirty()might reconnect to the graph, therefore having dependent effects register themselves as reactions.The problem prior to this fix was that the graph was not traversed to update the derived's dependencies and unowned status of deriveds when batch_values contained the derived - the batch value was just returned then -, which results in reactivity loss. #17024 (comment) contains a detailed rundown of such a case. The fix is to still traverse the graph, though not executing any deriveds in the process or resetting signals.
Fixes #17024
Fixes #17049 (comment) (and therefore everything that was still buggy in that issue I think)
Before submitting the PR, please make sure you do the following
feat:,fix:,chore:, ordocs:.packages/svelte/src, add a changeset (npx changeset).Tests and linting
pnpm testand lint the project withpnpm lint