diff --git a/packages/svelte/src/compiler/phases/3-transform/client/utils.js b/packages/svelte/src/compiler/phases/3-transform/client/utils.js index eed06295e7..d8dc5d8273 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/utils.js @@ -73,9 +73,8 @@ export function serialize_get_binding(node, state) { } if ( - state.analysis.runes && !state.analysis.accessors && - !binding.reassigned && + !(state.analysis.runes ? binding.reassigned : binding.mutated) && !binding.initial ) { return b.member(b.id('$$props'), node); diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-legacy.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-legacy.js index 76a9c66a1c..02ba1e16fb 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-legacy.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/javascript-legacy.js @@ -67,17 +67,24 @@ export const javascript_visitors_legacy = { state.scope.get(declarator.id.name) ); - declarations.push( - b.declarator( - declarator.id, - get_props_method( - binding, - state, - binding.prop_alias ?? declarator.id.name, - declarator.init && /** @type {import('estree').Expression} */ (visit(declarator.init)) + if ( + state.analysis.accessors || + (state.analysis.immutable ? binding.reassigned : binding.mutated) || + declarator.init + ) { + declarations.push( + b.declarator( + declarator.id, + get_props_method( + binding, + state, + binding.prop_alias ?? declarator.id.name, + declarator.init && + /** @type {import('estree').Expression} */ (visit(declarator.init)) + ) ) - ) - ); + ); + } continue; }