Excessive scroll events causing UI jitter in terminal multiplexers (4,000-6,700 scrolls/second)
## Summary Claude Code's streaming output causes **4,000-6,700 scroll events per second** when running inside terminal multiplexers (tmux/smux), resulting in severe UI jitter and flickering. This issue was identified through comprehensive instrumentation of a tmux fork (smux) with microsecond-precision logging. ## Problem Description When Claude Code streams LLM responses, it causes excessive terminal scrolling that overwhelms the rendering capability of terminal multiplexers, creating a poor user experience with: - **Visual jitter/flickering** during streaming output - **Scrollbar jumping** erratically - **Screen tearing** effects - **Degraded performance** for 100+ second durations ## Root Cause Analysis ### Measured Metrics (106-second test session) - **Total scroll events**: 423,575 (logged) / 715,901 (counter) - **Scroll rate**: 4,002-6,764 scrolls/second - **PTY read callbacks**: 8,044 (avg 4,095 bytes each) - **Linefeeds parsed**: 400,930 (3,782/second) - **Burst pattern**: 94.7% of scrolls occur in sub-millisecond bursts ### Timing Analysis ``` Scroll burst example: - Scrolls #1-36: All within 144 microseconds - Scroll #37: 1.26 second gap - Scrolls #38-45: Burst of 8 in 1.7ms - Scroll #46: 2.27 second gap - Scrolls #47-50: Burst of 4 in microseconds ``` **Sub-millisecond scroll timing** (first 1,000 scrolls): - Same microsecond: 4.6% - 0-1ms apart: **94.7%** - 1-10ms apart: 0.1% - >10ms apart: 0.6% ### Data Pattern Claude Code sends output in **4,095-byte
Posted by rinadelph on Oct 20, 2025, 12:34 AM
Tags
Related issues
- To be fair, Inform7 can't succeed, generally, because there is no market for the kind of games that you create with Inform7.
- > The notion that somehow LR reliability is misunderstood by Consumer Reports, JD Power, Car & Driver, Automobile etc.
- Custom trigger IDs are not displayed in the new 2026.10 trigger selector
- I hate that too, but I think it’s more the ux than the concept of a default.
- > The biggest problem with UX developers is they know better than you AND force you into their paradigm.
- "Focus follows mouse" is what I use to keep the file manager from popping up when click-dragging files.
Raise real-world problems, find people facing the same issue, and discuss solutions.2,000 issues0 comments
ux (Other)
To be fair, Inform7 can't succeed, generally, because there is no market for the kind of games that you create with Inform7.
New> The notion that somehow LR reliability is misunderstood by Consumer Reports, JD Power, Car & Driver, Automobile etc.
Custom trigger IDs are not displayed in the new 2026.10 trigger selector
I hate that too, but I think it’s more the ux than the concept of a default.
> The biggest problem with UX developers is they know better than you AND force you into their paradigm.
"Focus follows mouse" is what I use to keep the file manager from popping up when click-dragging files.
The biggest problem with this is if the target URL doesn't load but also doesn't quickly error out, like e.g.
Google wants to build up a private web here.
Excessive scroll events causing UI jitter in terminal multiplexers (4,000-6,700 scrolls/second)
## Summary Claude Code's streaming output causes **4,000-6,700 scroll events per second** when running inside terminal multiplexers (tmux/smux), resulting in severe UI jitter and flickering. This issue was identified through comprehensive instrumentation of a tmux fork (smux) with microsecond-precision logging. ## Problem Description When Claude Code streams LLM responses, it causes excessive terminal scrolling that overwhelms the rendering capability of terminal multiplexers, creating a poor user experience with: - **Visual jitter/flickering** during streaming output - **Scrollbar jumping** erratically - **Screen tearing** effects - **Degraded performance** for 100+ second durations ## Root Cause Analysis ### Measured Metrics (106-second test session) - **Total scroll events**: 423,575 (logged) / 715,901 (counter) - **Scroll rate**: 4,002-6,764 scrolls/second - **PTY read callbacks**: 8,044 (avg 4,095 bytes each) - **Linefeeds parsed**: 400,930 (3,782/second) - **Burst pattern**: 94.7% of scrolls occur in sub-millisecond bursts ### Timing Analysis ``` Scroll burst example: - Scrolls #1-36: All within 144 microseconds - Scroll #37: 1.26 second gap - Scrolls #38-45: Burst of 8 in 1.7ms - Scroll #46: 2.27 second gap - Scrolls #47-50: Burst of 4 in microseconds ``` **Sub-millisecond scroll timing** (first 1,000 scrolls): - Same microsecond: 4.6% - 0-1ms apart: **94.7%** - 1-10ms apart: 0.1% - >10ms apart: 0.6% ### Data Pattern Claude Code sends output in **4,095-byte
Comments (0)
No comments yet. Start the discussion.