RocketChat / RocketChat/Rocket.Chat

Safari doesn't stick to current scroll position when loading older chat messages

Open
#26,990 0 comments 0 reactions 0 assignees View on GitHub

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:

https://streamable.com/877euc

Steps to reproduce:

Using Safari 16 (I reproduced it with private mode, so no safari extension can affect the page)

  1. go to chat.godotengine.org
  2. scroll to the top, to trigger older message load
  3. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.