I know, I love it too. And I even understand why we do it technically, but... not acceptable UX I'd say this displaying the chat scrolled to the top, and then bringing me to the very bottom in a split of a second. I almost makes me nauseous :-)
An easy workaround would be to hide the loader only when the chat has scrolled down, which would already be a much better UX. If we can find a way to start from the bottom directly even better.
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
I am not sure we can start at the bottom as the chatbox is opened before all messages are loaded. We could keep the panel invisible until the jump to the bottom. The risk is that if the event to jump fails or is missed for whatever reason, then the chat will un-useable as compared to it being irritating right now.
Another approach could be to use a smooth scroll-down to the bottom in JavaScript with Element.scrollIntoView.
I can raise the change on Converse as a PR and make it configurable for "jump", "scroll" or "fade"
Another approach could be to use a smooth scroll-down to the bottom in JavaScript with Element.scrollIntoView.
To me it would be worse. As a user, I want to see the relevant part of the conversation, ideally the first unread message. If we can't do that, bottom of the conversation straight up is better in my opinion.
By Alexandre on 2020-02-27T15:17:58 (imported from GitLab project)
If we can't do that, bottom of the conversation straight up is better in my opinion.
I agree with you, but when the chatbox is opened, the bottom and the top are the same place. Converse asks for the last N messages, displays them, calculates the bottom and then jumps there.
@alexandre it's interesting. Note that Slack and Rocket chat are first showing you the last message with a button enabling two options: 1. jump to the last unread message. 2. Mark all previous unread message as read.
But scrolling to the first unread message can be a first step before this kind of behavior.
I have implemented the two new options "scroll" or "fade" and this is what I discovered
fade has no effect. Converse is already hiding the chat history and does not display it until the fetching is complete. It then sets the scrollTop of the chat history element to effect the jump. When I tried to keep it hidden until after the setting, it had no visible effect. You can see the jump effect.
scroll does produce a better user experience (UX). I set the chat hsitory element CSS scrollBehavior to "smooth" and that produces the desired effect.
I recomend we go for a single new setting called "smooth_scroll" that has a value of true or false.