Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: repair each block length even without an else #12098

Merged

Conversation

paoloricciuti
Copy link
Member

Svelte 5 rewrite

Fixes #12095

I don't know if it's the correct approach but tests are all greens and it fixes the problem. As i've explained in the comments the error was happening because if the length on the server was 0 hydration was only set to false if an {:else} branch was specified by the user.

Initially i thought of always add the HIDRATION_END_ELSE marker if the array length was 0 on the server (even if the fallback was not provided by the user) but this would've add an if for every each. So i tried to infer if the length was 0 in another way and i come up with the idea of checking the length of hydrate_nodes but to be fair i don't know if this is correct so i would appreciate some input.

Please note that the Svelte codebase is currently being rewritten for Svelte 5. Changes should target Svelte 5, which lives on the default branch (main).

If your PR concerns Svelte 4 (including updates to svelte.dev.docs), please ensure the base branch is svelte-4 and not main.

Before submitting the PR, please make sure you do the following

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • Prefix your PR title with feat:, fix:, chore:, or docs:.
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests and linting

  • Run the tests with pnpm test and lint the project with pnpm lint

Copy link

changeset-bot bot commented Jun 19, 2024

🦋 Changeset detected

Latest commit: c0b5894

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

@Rich-Harris
Copy link
Member

Thanks — am trying to avoid adding any more dependency on hydrate_nodes as I'd like to get rid of it at some point. Checking hydrate_start === undefined is easier and serves the same purpose

@paoloricciuti
Copy link
Member Author

Thanks — am trying to avoid adding any more dependency on hydrate_nodes as I'd like to get rid of it at some point. Checking hydrate_start === undefined is easier and serves the same purpose

Gotcha...i'm trying to get around to better understand hydration but i think this is the first time i really interacted with hydration code so i only have a general understanding of it.

@Rich-Harris Rich-Harris merged commit be9b0a2 into sveltejs:main Jun 20, 2024
9 checks passed
This was referenced Jun 20, 2024
FoHoOV pushed a commit to FoHoOV/svelte that referenced this pull request Jun 27, 2024
* fix: repair each block length even without an else

* chore: add changeset

* simplify

---------

Co-authored-by: Rich Harris <[email protected]>
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.

Svelte 5: hydration error on each with 0 elements on the server and some elements on the client
3 participants