Skip to content

Timeline windowing starts only at 60 rows: a rich 59-row thread renders fully and lags #4445

Description

@werserk

bb 0.44.0 (desktop-v0.44.0), desktop viewport, local server.

A long, tool-heavy thread loads the latest 20 segments (not the whole history), but its initial top-level list had 59 items. ThreadTimelineRows.tsx enables top-level windowing at 60 (40 on compact screens). With 59 items the DOM had 6,616 nodes and no data-timeline-virtual-spacer; a two-row control thread had 1,054. After scrolling up loaded an older page, windowing switched on, 13 rows stayed mounted and the DOM dropped to 1,358 nodes.

Even when windowed, a scripted 30-step scroll recorded 49 long tasks of 54–146 ms (p95 215 ms per step) versus zero on the control (p95 17.5 ms). No iframes were mounted. One server timeline build logged 162.7 ms of synchronous work; the browser-side scroll is the main visible symptom.

Suggestions:

  1. Enable windowing much earlier (for example from ~20 rows), always on, or based on estimated row cost rather than row count, since tool-heavy rows are large.
  2. Make the threshold configurable.
  3. A Chrome trace of the remaining scroll long tasks may show what else is heavy.

Possibly a follow-up to #1301, closed after windowing landed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions