fix: server actions should fetch from the router canonicalUrl #80690
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.
A test related to navigation + server action handling was frequently flaking in CI (x-ref). When simulating a 20x browser slowdown, it's fairly easy to reproduce the failure case as well.
The failure occurs due to a race where the router will invoke the server action against the page the user was on before the navigation, but after the navigation action has been processed. As a result, the RSC payload associated with the target page gets replaced by the RSC payload returned from the server action. There exists a window of time where
window.location.pathname
is still referring to the previous URL whilerouterState.canonicalUrl
would have been updated to the new page.This revealed two things: