diff --git a/.changeset/tough-tomatoes-explain.md b/.changeset/tough-tomatoes-explain.md new file mode 100644 index 0000000000..ac6b0ba0f2 --- /dev/null +++ b/.changeset/tough-tomatoes-explain.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: robustify initial scroll value detection when scroll is smooth diff --git a/packages/svelte/src/internal/client/dom/elements/bindings/window.js b/packages/svelte/src/internal/client/dom/elements/bindings/window.js index 608f1ffbd2..13fa9d4225 100644 --- a/packages/svelte/src/internal/client/dom/elements/bindings/window.js +++ b/packages/svelte/src/internal/client/dom/elements/bindings/window.js @@ -49,14 +49,8 @@ export function bind_window_scroll(type, get_value, update) { } }); - // Browsers fire the scroll event only if the scroll position is not 0. - // This effect is (almost) guaranteed to run after the scroll event would've fired. - effect(() => { - var value = window[is_scrolling_x ? 'scrollX' : 'scrollY']; - if (value === 0) { - yield_updates(() => update(value)); - } - }); + // Browsers don't fire the scroll event for the initial scroll position when scroll style isn't set to smooth + effect(target_handler); render_effect(() => { return () => {