Skip to content

fix(docs): update FAQ on Chrome's scroll-to-top behavior - #266

Merged
uhyo merged 2 commits into
masterfrom
docs/faq-chrome-scroll-to-top
Oct 8, 2026
Merged

uhyo merged 2 commits into
masterfrom
docs/faq-chrome-scroll-to-top

Conversation

@uhyo

@uhyo uhyo commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Closes #259

Summary

The "Browser doesn't scroll to top after navigation" FAQ said Chrome doesn't follow the Navigation API's automatic scroll-to-top behavior. Chrome has followed it since version 149.

  • FAQ (FaqPage.tsx): now says Chrome follows the spec since version 149, while Safari and Chrome 148 and earlier keep the previous scroll position. Also notes that the workaround is harmless in browsers that follow the spec, since the page is already at the top.
  • Docs site comment (ClientApp.tsx): updated to match.

The workaround code itself is unchanged. Safari and Chrome ≤148 still need it, and it does nothing in browsers that already scroll to top.

Which Chrome version fixed it

Chrome 149. The fix is Chromium commit d6d5d3b9edd9, "Scroll to top on navigation.scroll() to a non-existent fragment" (crbug.com/479874917). It landed on 2026-04-14 and changes NavigateEvent::ProcessScrollBehavior() to scroll to the top when the destination URL has no matching fragment. That path is also used by the default scroll: "after-transition" behavior. It is not behind a flag. According to ChromiumDash, it first shipped in canary 149.0.7794.0 and reached stable in 149.0.7827.22.

Verification

Ran the WebKit bug 304593 repro page (scroll down, then do an intercepted navigation.navigate("page2")) against official Chrome for Testing builds:

Chrome build scrollY before → after Result
141.0.7390.122 749 → 749 Scroll position kept (bug)
147.0.7727.117 749 → 749 Scroll position kept (bug)
148.0.7778.178 (last M148) 749 → 749 Scroll position kept (bug)
149.0.7793.0 (canary) 749 → 749 Scroll position kept (bug)
149.0.7794.0 (canary) 749 → 0 Scrolled to top — first fixed build
149.0.7827.155 749 → 0 Scrolled to top
150.0.7871.124 749 → 0 Scrolled to top
153.0.8010.52 749 → 0 Scrolled to top
Chrome 155 (desktop, reported by the maintainer) 944 → 0 Scrolled to top

The first fixed canary from the bisect, 149.0.7794.0, is the same build ChromiumDash lists for the commit.

pnpm format:check, pnpm lint, and the docs package typecheck pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UAz1tssRXbeyChnrheXK4Z

claude added 2 commits October 8, 2026 12:38
Recent Chrome versions (153+) scroll to the top after an intercepted
push/replace navigation as the Navigation API spec requires, while
Safari and older Chrome versions (e.g. 141) keep the previous scroll
position. Update the FAQ and the docs site comment accordingly, and
note that the workaround is harmless where the spec is followed.

Closes #259

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UAz1tssRXbeyChnrheXK4Z
Bisecting Chrome for Testing builds against the WebKit bug 304593
repro shows Chrome 148 keeps the scroll position while 149 scrolls to
top. The fix is Chromium commit d6d5d3b9edd9 ("Scroll to top on
navigation.scroll() to a non-existent fragment", crbug.com/479874917),
first shipped in 149.0.7794.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UAz1tssRXbeyChnrheXK4Z
@uhyo
uhyo merged commit 2c9a135 into master Oct 8, 2026
1 check passed
@uhyo
uhyo deleted the docs/faq-chrome-scroll-to-top branch October 8, 2026 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update the scroll-to-top FAQ's explanation of Chrome behavior

2 participants