beacon
beacon copied to clipboard
Preserve scroll position
This is a problem in LiveView but we can solve it on our own. Pages currently don't preserve scroll position. See:
https://user-images.githubusercontent.com/18524/215903473-99d47362-fac5-495d-b7ad-3071c45a5b61.mp4
I solved this a few years ago in ember-router-scroll: https://github.com/DockYard/ember-router-scroll/blob/master/addon/services/router-scroll.js
We'll need to pull in some JS resources to implement in Beacon. Two cases need to be accounted for:
- preserving scroll position when navigating to a new page then back to the original
- preserving scroll position when reloading a page (hard refresh also respects position)
- if opening a new tab to the same URL or navigating forward from A, to B, and pushing a new instance of A to the history stack it shouldn't inherit the scroll position of the original visit of A but if I go back in history it should
For reference there're currently 2 open issues upstream related to scroll: https://github.com/phoenixframework/phoenix_live_view/issues/2326 and https://github.com/phoenixframework/phoenix_live_view/issues/2107
This being solved at the Phoenix level instead of at the Beacon level would be amazing!
I agree, that's something we'll need to solve eventually. Fixing it upstream makes sense.