diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index e1d3b61275..17e8dfff72 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -168,17 +168,9 @@ export function set(source, value, should_proxy = false) { e.state_unsafe_mutation(); } - var onchange = source.o; + var new_value = should_proxy ? proxy(value, source.o) : value; - var new_value = should_proxy ? proxy(value, onchange) : value; - - internal_set(source, new_value); - - if (onchange && new_value !== value) { - onchange(); - } - - return new_value; + return internal_set(source, new_value); } /** @@ -199,6 +191,8 @@ export function internal_set(source, value) { source.v = value; + source.o?.(); + if (DEV && tracing_mode_flag) { source.updated = get_stack('UpdatedAt'); if (active_effect != null) {