kit
kit copied to clipboard
fix: `fields.value()` initial data missing
fixes #14972
The issue happens when you assign form.fields to a variable and then attempt to access .value(). As a result, this results in a hydration mismatch.
const fields = test.fields;
const initial = $state({ initial: "value" });
fields.set(initial);
// On the server, this results in: {}
$inspect(fields.value());
// And this results in: { initial: "value" }
$inspect(test.fields.value());
Before: https://stackblitz.com/edit/sveltekit-308957-8ktcalyf?file=src%2Froutes%2F%2Bpage.svelte
After: https://stackblitz.com/edit/sveltekit-308957-8ktcalyf-apue36pc?file=src%2Froutes%2F%2Bpage.svelte
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:
- [x] 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
- [x] This message body should clearly illustrate what problems it solves.
- [x] Ideally, include a test that fails without this PR but passes with it.
Tests
- [x] Run the tests with
pnpm testand lint the project withpnpm lintandpnpm check
Changesets
- [x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running
pnpm changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.
Edits
- [x] Please ensure that 'Allow edits from maintainers' is checked. PRs without this option may be closed.