diff --git a/.changeset/empty-bags-heal.md b/.changeset/empty-bags-heal.md new file mode 100644 index 0000000000..b19b631c51 --- /dev/null +++ b/.changeset/empty-bags-heal.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: use init properties when exporting non-state values in prod diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js index ee47cc33ae..90abcd3199 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js @@ -242,9 +242,11 @@ export function client_component(source, analysis, options) { const binding = analysis.instance.scope.get(name); const is_source = binding !== null && is_state_source(binding, state); - // TODO This is always a getter because the `renamed-instance-exports` test wants it that way. - // Should we for code size reasons make it an init in runes mode and/or non-dev mode? - return b.get(alias ?? name, [b.return(is_source ? b.call('$.get', b.id(name)) : b.id(name))]); + if (is_source || options.dev) { + return b.get(alias ?? name, [b.return(is_source ? b.call('$.get', b.id(name)) : b.id(name))]); + } + + return b.init(alias ?? name, b.id(name)); }); if (analysis.accessors) { diff --git a/packages/svelte/tests/runtime-legacy/samples/prop-accessors/_config.js b/packages/svelte/tests/runtime-legacy/samples/prop-accessors/_config.js index 0dba67bb39..9f49355214 100644 --- a/packages/svelte/tests/runtime-legacy/samples/prop-accessors/_config.js +++ b/packages/svelte/tests/runtime-legacy/samples/prop-accessors/_config.js @@ -1,7 +1,12 @@ import { test } from '../../test'; export default test({ + compileOptions: { + dev: true + }, + accessors: false, + test({ assert, component }) { assert.equal(component.foo1, 42); assert.equal(component.foo2(), 42); diff --git a/packages/svelte/tests/runtime-legacy/samples/renamed-instance-exports/_config.js b/packages/svelte/tests/runtime-legacy/samples/renamed-instance-exports/_config.js index 9293327b13..29860bb9df 100644 --- a/packages/svelte/tests/runtime-legacy/samples/renamed-instance-exports/_config.js +++ b/packages/svelte/tests/runtime-legacy/samples/renamed-instance-exports/_config.js @@ -1,6 +1,10 @@ import { test } from '../../test'; export default test({ + compileOptions: { + dev: true + }, + test({ assert, component }) { assert.equal(component.bar1, 42); assert.equal(component.bar2, 42);