From 970aa7cfaa70707da1b87c3ca0af264c7589db9d Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 30 Jan 2025 19:15:04 +0100 Subject: [PATCH] fix: prevent false-positive ownership validations due to hot reload (#15154) The component identity could change due to HMR, so we fall back to checking the filenames as well fixes #14746 --- .changeset/ten-cougars-look.md | 5 +++++ packages/svelte/src/internal/client/dev/ownership.js | 4 ++++ 2 files changed, 9 insertions(+) create mode 100644 .changeset/ten-cougars-look.md diff --git a/.changeset/ten-cougars-look.md b/.changeset/ten-cougars-look.md new file mode 100644 index 0000000000..fe20d057dd --- /dev/null +++ b/.changeset/ten-cougars-look.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: prevent false-positive ownership validations due to hot reload diff --git a/packages/svelte/src/internal/client/dev/ownership.js b/packages/svelte/src/internal/client/dev/ownership.js index a9506cfdc0..2a2527803a 100644 --- a/packages/svelte/src/internal/client/dev/ownership.js +++ b/packages/svelte/src/internal/client/dev/ownership.js @@ -220,6 +220,10 @@ function has_owner(metadata, component) { return ( metadata.owners.has(component) || + // This helps avoid false positives when using HMR, where the component function is replaced + [...metadata.owners].some( + (owner) => /** @type {any} */ (owner)[FILENAME] === /** @type {any} */ (component)?.[FILENAME] + ) || (metadata.parent !== null && has_owner(metadata.parent, component)) ); }