Skip to content

Commit 2b78ae0

Browse files
committed
fix(app): fix scroll jump during fast upward scrolling
preserveScroll used a stale beforeTop captured at event time, but by the rAF callback the user had scrolled further. Reset to beforeTop+delta jumped the viewport forward by a page or more. Fix: use el.scrollTop += delta (current position) instead of the stale capture, and temporarily disable overflow-anchor to prevent double compensation from the browser's built-in scroll anchoring. Ref: anomalyco#17996
1 parent 8c227fe commit 2b78ae0

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

‎packages/app/src/pages/session.tsx‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,15 @@ function createSessionHistoryWindow(input: SessionHistoryWindowInput) {
132132
fn()
133133
return
134134
}
135-
const beforeTop = el.scrollTop
135+
const prev = el.style.overflowAnchor
136+
el.style.overflowAnchor = "none"
136137
const beforeHeight = el.scrollHeight
137138
fn()
138139
requestAnimationFrame(() => {
139140
const delta = el.scrollHeight - beforeHeight
141+
el.style.overflowAnchor = prev
140142
if (!delta) return
141-
el.scrollTop = beforeTop + delta
143+
el.scrollTop += delta
142144
})
143145
}
144146

0 commit comments

Comments
 (0)