next.js
48a50718 - Update history in useInsertionEffect (#48553)

Commit
2 years ago
Update history in useInsertionEffect (#48553) ### What? Currently `pushState` / `replaceState` happens in `useEffect`. This causes a problem with timing as the history navigation will happen the moment the new page has been rendered. In short that means that you'll see the new route rendered before the history entry is injected. This causes some issues: - Scroll position for back/forward navigation (popstate) is not preserved correctly - Safari takes a snapshot of the current page at the point of navigation that is then used to show when you "swipe to back" on iPhone/iPad/Mac ### How? This PR changes the approach to `useInsertionEffect` based on the advice from @sebmarkbage. This runs before the new page contents get committed so it ensures the history navigation is captured before additional rendering happens.
Author
Parents
Loading