diff --git a/.changeset/shaggy-socks-glow.md b/.changeset/shaggy-socks-glow.md new file mode 100644 index 000000000000..409d02908560 --- /dev/null +++ b/.changeset/shaggy-socks-glow.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes a view transition issue on webKit browsers that prevented scrolling to #fragments diff --git a/packages/astro/src/transitions/router.ts b/packages/astro/src/transitions/router.ts index a97abfcf77a2..6ff0efc01d3b 100644 --- a/packages/astro/src/transitions/router.ts +++ b/packages/astro/src/transitions/router.ts @@ -194,7 +194,6 @@ const moveToLocation = (to: URL, from: URL, options: Options, historyState?: Sta to.href ); } - history.scrollRestoration = 'manual'; } // now we are on the new page for non-history navigations! // (with history navigation page change happens before popstate is fired) @@ -213,12 +212,14 @@ const moveToLocation = (to: URL, from: URL, options: Options, historyState?: Sta // because we are already on the target page ... // ... what comes next is a intra-page navigation // that won't reload the page but instead scroll to the fragment + history.scrollRestoration = 'auto'; location.href = to.href; } else { if (!scrolledToTop) { scrollTo({ left: 0, top: 0, behavior: 'instant' }); } } + history.scrollRestoration = 'manual'; } };