Skip to content

Fix long thread timeline scroll stalls - #898

Merged
SawyerHood merged 1 commit into
mainfrom
bb/virtualize-long-thread-timelines-thr_jtaxhzu33q
Jul 30, 2026
Merged

Fix long thread timeline scroll stalls#898
SawyerHood merged 1 commit into
mainfrom
bb/virtualize-long-thread-timelines-thr_jtaxhzu33q

Conversation

@SawyerHood

Copy link
Copy Markdown
Collaborator

Summary

  • replace per-frame linear timeline geometry scans with debounced logarithmic lookups using fresh row geometry
  • bound scroll-anchor capture work to top-level timeline rows while preserving prepend and streaming anchoring
  • avoid rendering the closed TOC panel and stabilize outline-derived inputs during streaming updates
  • preserve keyboard, pointer, focus, and overflow affordance behavior for the thread table of contents

Profiling

Before, the fully loaded long thread produced 33 long tasks, 4.21s aggregate blocking, a 190ms worst task, and 32 frames over 50ms during a bottom → top → bottom sweep. After removing the forced-layout hot paths, the same thread produced 0 long tasks and no frames over 50ms with flat heap. A synthetic 1,100-row sweep remained frame-smooth, so virtualization was not warranted after the measured low-hanging work was removed.

Validation

  • pnpm exec turbo run typecheck --filter=@bb/app
  • full @bb/app suite: 295 files / 2,169 tests
  • post-rebase focused suite: 32 tests
  • live browser QA for bottom anchoring, keyboard/pointer access, focus preservation, overflow fades, and geometry-read count
  • independent GPT-5.6-Sol review: APPROVE

@SawyerHood
SawyerHood merged commit d15503a into main Jul 30, 2026
10 checks passed
@SawyerHood
SawyerHood deleted the bb/virtualize-long-thread-timelines-thr_jtaxhzu33q branch July 30, 2026 00:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant