Remove global overscroll-behavior-y: contain from CSS. Instead, set it
on document.documentElement via JS when the PullToRefresh component
mounts and restore the previous value on unmount. This way other pages
keep the browser's native pull-to-refresh behavior.
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Add overscroll-behavior-y: contain on html/body to disable browser's
native pull-to-refresh
- Switch from React synthetic touch events to native addEventListener
with { passive: false } so e.preventDefault() actually blocks the
browser gesture during pull-down
- Use a mirrored ref (currentPull) for synchronous reads inside native
event handlers
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Create PullToRefresh component with touch drag detection
- Rubber-band resistance effect for natural feel
- Spinner indicator appears below tabs when pulling down
- Triggers feed data refetch on release past threshold
- Only active on mobile (touch events + indicator hidden on sidebar breakpoint)
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>