diff --git a/.changeset/thin-papayas-tap.md b/.changeset/thin-papayas-tap.md new file mode 100644 index 000000000000..abdd314005b1 --- /dev/null +++ b/.changeset/thin-papayas-tap.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improved memory profile for transitions/animations diff --git a/packages/svelte/src/internal/client/dom/elements/transitions.js b/packages/svelte/src/internal/client/dom/elements/transitions.js index 8777ba706bf4..f747e2f4023a 100644 --- a/packages/svelte/src/internal/client/dom/elements/transitions.js +++ b/packages/svelte/src/internal/client/dom/elements/transitions.js @@ -448,9 +448,15 @@ function animate(element, options, counterpart, t2, on_finish, on_abort) { return { abort: () => { - animation?.cancel(); + if (animation) { + animation.cancel(); + // This prevents memory leaks in Chromium + animation.effect = null; + } task?.abort(); on_abort?.(); + on_finish = undefined; + on_abort = undefined; }, deactivate: () => { on_finish = undefined;