RocketChat / RocketChat/Rocket.Chat
Safari doesn't stick to current scroll position when loading older chat messages
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 46.1k
- Forks
- 13.9k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 130
Description
Description:
As title suggests, with Safari 16 and 15, scroll position remains at the top when older chat messages are loaded, triggering another message load immediately and/or content scroll multiple times.
Here is a video demostrating the behavior, reproducible on blender.chat and chat.godotengine.org, both using rocket chat:
Steps to reproduce:
Using Safari 16 (I reproduced it with private mode, so no safari extension can affect the page)
- go to chat.godotengine.org
- scroll to the top, to trigger older message load
- notice it is easy to get into a situation where scroll position doesn't stick to currently visible messages.
Expected behavior:
scroll position should stick to the currently on screen messages and users should then scroll up to reveal loaded messages.
Actual behavior:
scroll jumps to the oldest message and trigger another load (and can repeat multiple times).
Server Setup Information:
(not a server admin so cannot answer these questions)
- Version of Rocket.Chat Server:
- Operating System:
- Deployment Method:
- Number of Running Instances:
- DB Replicaset Oplog:
- NodeJS Version:
- MongoDB Version:
Client Setup Information
- Desktop App or Browser Version: Safari 16 or 15
- Operating System: macOS 12.5
Additional context
N/A
Relevant logs:
N/A
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin by reproducing the issue on Safari 15 or 16 at chat.godotengine.org, scrolling to the top of the general channel while older messages load. Trace the client-side chat message loading and scroll behavior; done means loaded messages no longer move the current viewport or immediately trigger repeated loads.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend, web-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100