From 2bc97a06831022cbf098fdbefa7cb8851e79a4ea Mon Sep 17 00:00:00 2001 From: samfundev Date: Wed, 11 Feb 2026 15:52:37 -0500 Subject: [PATCH] fix: catch errors thrown during component mount to prevent source from losing tracking --- .changeset/wet-gifts-stare.md | 5 +++ .../svelte/src/internal/client/dev/hmr.js | 35 +++++++++++-------- 2 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 .changeset/wet-gifts-stare.md diff --git a/.changeset/wet-gifts-stare.md b/.changeset/wet-gifts-stare.md new file mode 100644 index 0000000000..efb2a7baeb --- /dev/null +++ b/.changeset/wet-gifts-stare.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: catch errors thrown during component mount to prevent source from losing tracking diff --git a/packages/svelte/src/internal/client/dev/hmr.js b/packages/svelte/src/internal/client/dev/hmr.js index 9fa4e6ccbd..5650efb77f 100644 --- a/packages/svelte/src/internal/client/dev/hmr.js +++ b/packages/svelte/src/internal/client/dev/hmr.js @@ -38,21 +38,26 @@ export function hmr(fn) { destroy_effect(effect); } - effect = branch(() => { - // when the component is invalidated, replace it without transitions - if (ran) set_should_intro(false); - - // preserve getters/setters - Object.defineProperties( - instance, - Object.getOwnPropertyDescriptors( - // @ts-expect-error - new.target ? new component(anchor, props) : component(anchor, props) - ) - ); - - if (ran) set_should_intro(true); - }); + try { + effect = branch(() => { + // when the component is invalidated, replace it without transitions + if (ran) set_should_intro(false); + + // preserve getters/setters + Object.defineProperties( + instance, + Object.getOwnPropertyDescriptors( + // @ts-expect-error + new.target ? new component(anchor, props) : component(anchor, props) + ) + ); + + if (ran) set_should_intro(true); + }); + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } }, EFFECT_TRANSPARENT); ran = true;