diff --git a/.changeset/little-aliens-pick.md b/.changeset/little-aliens-pick.md new file mode 100644 index 0000000000..1433625551 --- /dev/null +++ b/.changeset/little-aliens-pick.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: don't reset static elements with debug/snippets diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js index 690715df84..c780350d3e 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js @@ -21,7 +21,7 @@ import { build_set_class, build_set_style } from './shared/element.js'; -import { process_children } from './shared/fragment.js'; +import { process_children, is_static_element } from './shared/fragment.js'; import { build_render_statement, build_template_chunk, Memoizer } from './shared/utils.js'; import { visit_event_attribute } from './shared/events.js'; @@ -356,8 +356,9 @@ export function RegularElement(node, context) { let arg = context.state.node; // If `hydrate_node` is set inside the element, we need to reset it - // after the element has been hydrated - let needs_reset = trimmed.some((node) => node.type !== 'Text'); + // after the element has been hydrated. We need to check if any child + // would actually advance the hydrate_node cursor - static elements don't. + let needs_reset = trimmed.some((node) => node.type !== 'Text' && !is_static_element(node)); // The same applies if it's a `