Stop a horizontal scrollbar flashing under every tab switch

Fixkamo-internal
Shipped
September 6, 2026 at 6:47 AM UTC
Author
Kamo
Commit
e2363c8

Every tab and sub-tab change in the Interaction Center slides the incoming pane in from x: 12 (the panel's tabs) or x: 10 (the Terminals workbench's). A transform counts toward an element's scrollable overflow, so for the ~160ms of that slide the pane really is a dozen pixels wider than the box holding it. That box was a horizontal scroll container, which nobody wrote: CSS computes overflow-x: visible to auto the moment the other axis is not visible, so `overflowY: 'auto'` on its own quietly asks for both bars. The dozen pixels were measured as scrollable width and a full-width bar was painted along the bottom of the list for the length of the animation, then taken away again. These panes are lists — there is nothing to the right of them to scroll to on any of the four tabs — so each scroller now names both axes. hidden also takes the container out of the overlay's reach entirely (it draws only for auto, scroll and overlay), which covers the other ways a child overflows sideways: a member row's hover actions park at translateX(6px), and popLayout absolutely positions exiting sections at their pre-reflow width. Verified in a real browser against a probe of the panel's shape: before, a tab switch measured 12px of scrollable width and drew a bar on the pane scroller; after, the 12px is still there and no bar is drawn. jsdom has no scrollbars and does no layout, so the guard beside oneScrollbar.test.ts is source-level, like its sibling.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing