diff --git a/.changeset/sixty-numbers-hope.md b/.changeset/sixty-numbers-hope.md new file mode 100644 index 000000000000..eb1c94975002 --- /dev/null +++ b/.changeset/sixty-numbers-hope.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: support `$state.snapshot` as part of variable declarations diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-runes.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-runes.js index 7857909aa523..7646ae78b7c0 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-runes.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-runes.js @@ -197,7 +197,13 @@ export const javascript_visitors_runes = { for (const declarator of node.declarations) { const init = declarator.init; const rune = get_rune(init, state.scope); - if (!rune || rune === '$effect.active' || rune === '$effect.root' || rune === '$inspect') { + if ( + !rune || + rune === '$effect.active' || + rune === '$effect.root' || + rune === '$inspect' || + rune === '$state.snapshot' + ) { if (init != null && is_hoistable_function(init)) { const hoistable_function = visit(init); state.hoisted.push( diff --git a/packages/svelte/tests/runtime-runes/samples/state-snapshot/_config.js b/packages/svelte/tests/runtime-runes/samples/state-snapshot/_config.js index c0d6357f14c9..1088a5189ca0 100644 --- a/packages/svelte/tests/runtime-runes/samples/state-snapshot/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/state-snapshot/_config.js @@ -1,12 +1,12 @@ import { test } from '../../test'; export default test({ - html: ``, + html: `[{"a":0}] `, async test({ assert, target }) { const btn = target.querySelector('button'); await btn?.click(); - assert.htmlEqual(target.innerHTML, ``); + assert.htmlEqual(target.innerHTML, `[{"a":0}] `); } }); diff --git a/packages/svelte/tests/runtime-runes/samples/state-snapshot/main.svelte b/packages/svelte/tests/runtime-runes/samples/state-snapshot/main.svelte index ac438dacc49d..567b7fa537a1 100644 --- a/packages/svelte/tests/runtime-runes/samples/state-snapshot/main.svelte +++ b/packages/svelte/tests/runtime-runes/samples/state-snapshot/main.svelte @@ -1,5 +1,7 @@ +{JSON.stringify(start)}