fix: properly hydrate dynamic css props components and remove element removal #16118
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.
Closes #16115
Boi this was a rollercoaster. So the original bug was actually fixed just by removing the
teardown
incss_props
...I'm pretty sure that with #11948 it was not needed anymore but stuck around. No test failed when i removed it.However when I wrote the test for it it was failing to hydrate. When i checked with the same component on
main
it was still failing hydration. Every-time i fixed that hydration some other test was failing.The reason is that
css_props
was used in two different ways depending if it was aSvelteComponent
it produced a code like thiswhile with a dynamic component was used like this
since
$.component
set thehydration_node
doingnext_sibling
and$.css_props
does it by doingfirst_child
the fact that the two were different was problematic.Initially I thought of moving the logic outside of
build_component
for both dynamicComponent
andSvelteComponent
sincebuild_component
it's already complex but it would've been kind of a mess to change all the rest of the things to satisfy hydration.A nice thing is that now the
Component
visitor is much shorter.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