mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-07 03:18:23 -05:00
[GH-ISSUE #23990] issue: Scrolling up jumps around in a conversation/chat #58812
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @FrameXX on GitHub (Apr 22, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/23990
Check Existing Issues
Installation Method
Docker
Open WebUI Version
v0.9.1
Ollama Version (if applicable)
No response
Operating System
Fedora Linux 43
Browser (if applicable)
Zen (Firefox 149.0.2)
Confirmation
README.md.Expected Behavior
I should be able to scroll without the conversation/chat jumping around.
Actual Behavior
When scrolling up in a conversation/chat it jumps back and forth usually around my queries/questions/messages.
Steps to Reproduce
Open a conversation/chat in Firefox or specifically Zen and try to scroll up. I am scrolling using a notebook touchpad. I am unable to reproduce it in a Chromium browser and this also didn't happen to me with the previous OpenWebUI version.
Logs & Screenshots
https://github.com/user-attachments/assets/31fc788c-2cc9-4bd0-b0ff-8a88b789a19b
Additional Information
These errors show in the browser console upon loading a conversation and might be relevant:
I have also noticed that while scrolling up does not jump in Chromium it seems to get bit laggy around my queries.
@DerKay3 commented on GitHub (Apr 22, 2026):
I’m experiencing the same bug.
Happens on Safari and Chrome as well.
Running Open WebUI v0.9.1.
@diminDDL commented on GitHub (Apr 22, 2026):
I am experiencing the same bug under Firefox 149.0.2 as well, it works fine when scrolling from top to bottom, but going bottom to to is full of jumps and is almost impossible to navigate.
The Firefox console also throws:
Scroll anchoring was disabled in a scroll container because of too many consecutive adjustments (12) with too little total distance (0 px average, 0 px total). ada78052-a92c-4adc-ae28-dcf46facd431and also sometimes:
This site appears to use a scroll-linked positioning effect. This may not work well with asynchronous panning; see https://firefox-source-docs.mozilla.org/performance/scroll-linked_effects.html for further details and to join the discussion on related tools and features! ada78052-a92c-4adc-ae28-dcf46facd431@intdel commented on GitHub (Apr 22, 2026):
Yes I have the same problem with Android Chrome 147.0
@Fade78 commented on GitHub (Apr 22, 2026):
Same problem on Firefox on Android and Linux.
@d1ffuser commented on GitHub (Apr 22, 2026):
Confirmed on Firefox and Bave.
Duplicate: https://github.com/open-webui/open-webui/discussions/23993
@mysteryx93 commented on GitHub (Apr 22, 2026):
This is definitely a regression. The major new feature is that now it creates and displays tasks with steps (and isn't even completing all the steps it displays). So this is a partially-working feature; and I'm pretty sure that's what also breaks the scrolling.
@Silvenga commented on GitHub (Apr 22, 2026):
Looks related to lazy loading/virtual dom - scrollbar jumps around too. It's almost like it's trying to remove elements from the dom within the same message (the whole message can't be displayed).
Changing the windows size mitigates it, until a different sized message is seen.
Firefox on Windows if that matters.
@Mersid commented on GitHub (Apr 22, 2026):
Confirm this happens on both Firefox and Safari (iOS). Excellent update, still!
@jxingnet commented on GitHub (Apr 23, 2026):
Same problem on chrome/egde/safari. v0.9.1.
@gmtrnv commented on GitHub (Apr 23, 2026):
Same problem in Chrome
@divemasterza commented on GitHub (Apr 23, 2026):
Same -> Chrome 147.0.7727.56 (Official Build) (arm64)
@Podden commented on GitHub (Apr 23, 2026):
Seems to be related to lazy loading the start and the end of the conversation and the different lenght of messages. Scrollbar is getting smaller and longer as well. Happens on Firefox, Chrome, Edge, WIndows, CachyOS... on mobile and PWA as well
@EuPhobos commented on GitHub (Apr 23, 2026):
Oh.. this is really annoying..
@RabiHikari commented on GitHub (Apr 23, 2026):
Same issue on my Firefox. However, my Chrome behaves a bit differently: when idle, sometimes the text glitches slightly up and down. Once scrolling, the page doesn't jump around but becomes stuttery and laggy, with the degree of lag fluctuating randomly. Seems only occur with long contexts.
@vrelk commented on GitHub (Apr 23, 2026):
Experiencing the same thing in Firefox, except it is MUCH worse than the example video when you have long messages with things like code blocks in them as it will skip entire messages.
@idealclover commented on GitHub (Apr 24, 2026):
Same here on Edge
@morbificagent commented on GitHub (Apr 24, 2026):
Yes its unuseable at the moment.
@bazzspeed commented on GitHub (Apr 24, 2026):
This is my experience:
Weird.
@D3bu9m4n commented on GitHub (Apr 24, 2026):
same issue
@tjbck commented on GitHub (Apr 24, 2026):
Addressed with the latest release.
@FrameXX commented on GitHub (Apr 24, 2026):
@tjbck
I don't think the issue went away completely. Now it only happens at the very top of a chat on first load. How to reproduce:
2 screencasts:
https://github.com/user-attachments/assets/7b82337a-3588-426a-9700-468c15f4b95d
https://github.com/user-attachments/assets/24cacd1a-bdab-46b3-8e3e-bfc511acda42
There's the issue:
Also when I open or reload a chat I get spawned in the middle of the chat. I am not sure whether that's an expected behavior.
Don't read the chat please. I am braindead.
@d1ffuser commented on GitHub (Apr 24, 2026):
@FrameXX Unable to reproduce on the latest version.
Firefox 150.0 mac.
@FrameXX commented on GitHub (Apr 24, 2026):
I tried in freshly installed Librewolf with no extensions. I am still able to reproduce it.
https://github.com/user-attachments/assets/39ff3a54-7bbd-4588-982d-40e94e990469
@TotoShampoin commented on GitHub (Apr 25, 2026):
Experiencing this too. It's incredibly annoying
@FrameXX commented on GitHub (Apr 25, 2026):
You might not actually need to scroll to the top. It's enough to just scroll to the area that isn't loaded yet.
@PuzzleHeaded555 commented on GitHub (Apr 29, 2026):
I'm still having the issue after updating to v0.9.2. It doesn't seem to just be viewing it. Also downloading is all messed up. The text file and the JSON download just repeat themselves a thousand times. PDF just doesn't really export anything as you can see in the screenshot. I also just develeoped a tool for my Unraid server to be able to export the chats to JSON and MD files and it seems to turncate the output around the area that the repeating happens in the browser. Also, scrollbar just didn't show up on any browser except for firefox.
Tested on Mac: Chrome, Vivaldi, Safari, and Firefox.
Tested on Windows: Vivaldi.
@savantskie commented on GitHub (May 2, 2026):
I think I fixed it, i'm testing it right now, I used AI the help me diagnose it by looking at 0.8.2 and comparing to 0.9.0 yes most of this is written by AI
I run Open WebUI on bare metal (not Docker) for my personal AI assistant and I was having the same scrolling problem everyone else has been reporting since 0.9.0. When a model is streaming a response, the scroll position jumps around randomly. Sometimes it snaps to the bottom while you're trying to read, sometimes it bounces back and forth for a few seconds. On Firefox it's especially bad and you get scroll anchoring errors in the console. Brave and Safari do it too from what I can see in the GitHub reports.
I had my AI coding assistant (Eddie, but really it doesn't matter which one) compare the code between 0.8.2 and 0.9.0. Two things changed that caused this. The first was that scrollToBottom was changed to use requestAnimationFrame batching to avoid too many layout reflows during streaming. The second was that they added virtual scrolling to the message list (only rendering messages near the viewport and using spacer divs for the rest). Both were done to improve performance with long chats, but they fight each other during streaming. The spacer calculations from the virtual scrolling change while content is still being written to the DOM because each streaming token changes the height of the message being rendered, which changes the spacer size, which changes the total scroll height, which causes scroll anchoring to freak out.
The fix was three things in two files inside src/lib/components/chat.
One, I added contain: layout as a CSS style on the messages container div. This tells the browser to isolate that container's layout from the rest of the page and stops Firefox from complaining about scroll anchoring.
Two, I made the virtual scrolling system aware of when the model is actually generating a response. Open WebUI already has a boolean called generating that tracks this, it just wasn't being passed to the Messages component. During streaming, the virtual scroller now shows all messages and uses zero-height spacers. The message heights still get measured and cached in the background so the data is ready for later, but the spacers can't fight with the streaming content because they are not there.
Three, when the model finishes generating, the virtual scroller waits one animation frame and then re-calculates the visible range normally using the now-stable heights. This means off-screen messages still get unloaded in long chats, just not while the model is still writing.
If you scroll up while the model is still writing, it stays where you left it. When the model finishes, the scroll position does not snap to the bottom unless you were already at the bottom. This is the same autoScroll behavior that already existed, it just wasnt working properly because the virtual scroll spacers were overriding it during streaming.
I do not know Svelte. I told the AI what the problem felt like from a user perspective, it compared the two versions, found the root cause, and walked me through the fix. The code changes are four guards and a CSS property spread across two files, about 15 lines total. If you want to fix it yourself, look at Chat.svelte around line 2908 for the contain: layout change and around line 2938 for the generating prop, then look at Messages.svelte lines 57, 98-106, 139, and 261-275 for the virtual scroll guards.
If Open WebUI ships an actual fix for this, I will probably just revert mine and take theirs. But for now this works on my instance.
[EDIT] I just tested it, and the bouncing is still there, but it's not nearly as jarring. So i've partially solved it.