This is a massive issue with the stateless aspect of HTTP, since the history API doesn't refresh the page and the state and components don't update (since its a React app) there's no magic needed to keep scroll position, but the router could be doing something I'm not aware. I've been looking for that solution for years and the first time I've seen it simply and clearly done is the Real World example in the Redux source.