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:
- 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.
- Make the threshold configurable.
- 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.
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.tsxenables top-level windowing at 60 (40 on compact screens). With 59 items the DOM had 6,616 nodes and nodata-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:
Possibly a follow-up to #1301, closed after windowing landed.