fix: Don't destroy boundary contents on error unless the boundary is an error boundary #16746
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.
Right now, if you wrap some content in a
svelte:boundary
and don't specify afailed
snippet oronerror
handler, an error inside that boundary will cause its contents to be destroyed. This is confusing behavior, as you could wrap your app in asvelte:boundary
with apending
snippet and suddenly the error behavior would differ (as non-wrapped content is not destroyed on an error). This PR adjusts the logic such that when an error is thrown, as it traverses the boundary tree, it only causes the contents of a boundary to be removed if that boundary is an error boundary (i.e. it defines anonerror
handler or afailed
snippet).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 test
and lint the project withpnpm lint