diff --git a/.changeset/purple-hairs-glow.md b/.changeset/purple-hairs-glow.md new file mode 100644 index 0000000000..c2ba4ba7fb --- /dev/null +++ b/.changeset/purple-hairs-glow.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: nullify `last_propagated_event` to avoid memory leak diff --git a/packages/svelte/src/internal/client/dom/elements/events.js b/packages/svelte/src/internal/client/dom/elements/events.js index 19bd1cfa18..997cd71efa 100644 --- a/packages/svelte/src/internal/client/dom/elements/events.js +++ b/packages/svelte/src/internal/client/dom/elements/events.js @@ -146,6 +146,7 @@ export function delegate(events) { // If the event object is GCed too early, the expando __root property // set on the event object is lost, causing the event delegation // to process the event twice +/** @type {Event | null} */ let last_propagated_event = null; /** @@ -182,6 +183,7 @@ export function handle_event_propagation(event) { // chain in case someone manually dispatches the same event object again. // @ts-expect-error event.__root = handler_element; + last_propagated_event = null; return; }