BeaconCMS/beacon

Preserve scroll position

Open

#123 opened on Jan 31, 2023

View on GitHub
 (3 comments) (1 reaction) (0 assignees)Elixir (120 forks)batch import
enhancementgood first issue

Repository metrics

Stars
 (1,194 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

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:

  1. preserving scroll position when navigating to a new page then back to the original
  2. preserving scroll position when reloading a page (hard refresh also respects position)
  3. 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

Contributor guide