update page URL and location on pushState/replaceState#2131
Merged
krichprollsch merged 3 commits intomainfrom Apr 10, 2026
Merged
update page URL and location on pushState/replaceState#2131krichprollsch merged 3 commits intomainfrom
krichprollsch merged 3 commits intomainfrom
Conversation
history.pushState() and replaceState() updated the navigation entry but did not update page.url or reinitialize window.location. This caused location.pathname to return the old value after pushState, breaking SPA routing detection in automation scripts. Both methods now set page.url and re-init the Location object after updating the navigation history. Fixes #2081 Ref #2043
krichprollsch
approved these changes
Apr 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adapted from #2084.
Original Description:
history.pushState()andreplaceState()added entries to the navigation history but didn't updatepage.urlor reinitializewindow._location. This meantlocation.pathnamestill returned the old path after pushState, breaking SPA routing detection in automation scripts.The fix adds two lines to both
pushStateandreplaceStateinHistory.zig:page.url = urlto update the page's active URLpage.window._location = try Location.init(url, page)to reinitialize the Location objectThis follows the same pattern used during actual navigation (Page.zig lines 477, 560, 895).
replaceStategets the same fix since it had the same gap.This adds on by fixing the
pushStateandreplaceStateby properly resolving the URL before initializing theLocation. It also adds a test that ensures the proper behavior and prevents regressions.