You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Scrolling lists in dialogs flickers on macOS, but never while screen recording #23788
I searched existing issues and did not find a duplicate.
I included enough detail to reproduce or investigate the problem.
Possibly related: #7766 (flicker over masked scroll areas on Linux and Windows). For those reporters, removing the scroll-area-viewport mask fixes it. Here it doesn't, so I'm filing this separately until we know whether it's the same root cause.
Area
apps/desktop
Steps to reproduce
On macOS, open T3 Code (Nightly).
Go to Settings → Providers → Add provider.
Scroll the "Or choose from ACP Registry" list.
The same flicker happens when scrolling the command palette.
Expected behavior
The list scrolls without flickering.
Actual behavior
The dialog flickers while the list scrolls. It never shows up while macOS screen recording is running, so I haven't been able to capture it in a recording.
Ruled out with live DevTools overrides in Nightly (none of these stopped the flicker):
mask-image: none on [data-slot=scroll-area-viewport]. This doesn't touch the command palette's mask, which is .virtualized-scroll-fade on the LegendList scroller.
A static mask on the viewport, and the mask moved to the non-scrolling ScrollArea root.
filter: none on the registry icons, which use an SVG url(#…) filter.
backdrop-filter: none on dialog-popup and dialog-backdrop.
will-change: auto on the popup.
I also probed it headlessly against a dev server in Linux Chromium, and over CDP in Chrome 155 on another Mac (DPR 1 and 2), using real wheel ticks. In neither dialog did anything change on every frame: no React commits, no layout shift, and on macOS no GPU layers created or destroyed. The only per-frame repaint was the scrollbar thumb. React only commits at scroll start and stop (data-scrolling). The scrollbar's opacity transition never runs during a wheel scroll, because data-hovering stays set.
The one per-frame churn found was in Linux Chromium at DPR 1: the mask makes a large "Overlap" layer get rebuilt on almost every wheel tick (~21 per gesture, 0 with the mask removed). It doesn't happen on macOS at DPR 1 or 2.
Current guess: a Chromium compositor or macOS display-timing bug, possibly ProMotion frame pacing, which would explain why screen recording hides it. Unconfirmed.
Not yet tried:
Disabling all masks, filters, backdrop filters, transitions and animations at once.
Hiding the scrollbars.
Locking the display to 60 Hz.
Launching with --disable-skia-graphite or --disable-gpu-compositing.
I tried reproducing this on my Mac (T3 Code Beta 0.1.1, Electron 44.4.5) by scrolling the ACP Registry list and the command palette, and couldn't see the flicker.
What are your display settings? Which display, its refresh rate, and whether it's ProMotion or an external monitor.
Since screen recording hides it, could you film it with your phone? Even a short clip would help a lot.
I experienced this and tried to reproduce this on macOS with an external high-refresh monitor and filmed it with my phone, the flickers happen more towards the end of the 23 sec video
Setup
T3 Code Nightly 0.1.3-nightly.20261023.3592 (Electron 44.9.3)
macOS 27.2 (26B118), Apple M4 Max
Main display: ASUS ROG XG27AQM, 2560x1440 @ 240 Hz, external (not ProMotion). Two other external monitors at 144 Hz and 165 Hz, plus the built-in display.
What I see
Open the command palette (Cmd+K) and move the selection up and down the list. Single frames flash where the dimmed, blurred backdrop disappears.
In those frames the palette's own frosted background also disappears, so the chat shows straight through the list. The palette text stays drawn. Both missing layers are the backdrop-filter layers (dialog-backdrop and dialog-glass).
In a 23 second clip at 30 fps I counted about 15 single-frame flashes. Each one is a +10 brightness spike that recovers on the next frame.
What does not trigger it
With the palette open and my hands off it, an agent scrolling, screenshotting, resizing and reloading a browser preview behind it caused no flashes.
Flashes continued after the agent went idle, as long as I kept moving through the list.
I can reproduce this on macOS with T3 Code Desktop 0.1.6-nightly.20261030.3904.zh.2, using a trackpad and an external display at 144Hz. Scrolling the Cmd+K list causes flickering whether the conversation behind it is generating a response or has finished. Switching the same display to 60Hz eliminates the flickering.
Another data point for the refresh-rate theory, this time on a built-in ProMotion display rather than an external monitor, and on the stable build:
T3 Code (Beta) desktop 0.1.5, local server 0.1.5 (Electron 44.10.0)
macOS 27.0, Apple Silicon, built-in Liquid Retina XDR (ProMotion), trackpad
Repro: Settings → Sharing & access → "Get more tunnels" → Security tab, then scroll the active devices list. Partway through the scroll, the thread view behind the modal shows through for one frame. It reproduces reliably.
Switching the display from ProMotion to a fixed 60 Hz (System Settings → Displays → Refresh Rate) stops it completely.
Investigated via t3 triage with Claude Code (Claude Opus 5.5).
Activity
koushikxd commentedon Oct 22, 2026
I tried reproducing this on my Mac (T3 Code Beta 0.1.1, Electron 44.4.5) by scrolling the ACP Registry list and the command palette, and couldn't see the flicker.
What are your display settings? Which display, its refresh rate, and whether it's ProMotion or an external monitor.
Since screen recording hides it, could you film it with your phone? Even a short clip would help a lot.
prayzey commentedon Oct 25, 2026
Hi! @flamboh @koushikxd
I experienced this and tried to reproduce this on macOS with an external high-refresh monitor and filmed it with my phone, the flickers happen more towards the end of the 23 sec video
Setup
What I see
backdrop-filterlayers (dialog-backdropanddialog-glass).What does not trigger it
t3-flicker-palette-scrolling-v2.mp4
shanghaiEric commentedon Oct 30, 2026
I can reproduce this on macOS with T3 Code Desktop
0.1.6-nightly.20261030.3904.zh.2, using a trackpad and an external display at 144Hz. Scrolling the Cmd+K list causes flickering whether the conversation behind it is generating a response or has finished. Switching the same display to 60Hz eliminates the flickering.FiveFM commentedon Oct 31, 2026
Another data point for the refresh-rate theory, this time on a built-in ProMotion display rather than an external monitor, and on the stable build:
Repro: Settings → Sharing & access → "Get more tunnels" → Security tab, then scroll the active devices list. Partway through the scroll, the thread view behind the modal shows through for one frame. It reproduces reliably.
Switching the display from ProMotion to a fixed 60 Hz (System Settings → Displays → Refresh Rate) stops it completely.
Investigated via
t3 triagewith Claude Code (Claude Opus 5.5).