Current-main isolated timeline remount does not reproduce the reported stall
2026-09-30 · Bug · Medium priority · Medium effort
NOT REPRODUCED in the optimized component fixture. The full application issue remains unresolved by this experiment.
Confidence is high in the recorded fixture observations and low in generalizing them to the original workload. This is not an ALREADY FIXED finding.
Claim, experiment and limitations
The report describes multi-second switches between long threads, with a markdown pane affecting the delay. Here the unmodified current TimelineWindowedItems component is mounted inside a fresh scroll-root ref on each keyed A/B transition. The optimized fixture supplies 100, 1,000 or 5,000 simple text rows per thread, each 48 pixels high, a 600-pixel scrollport and a new measurement map on every mount. It exercises the pending-ref/remount path without persistent measurement caching.
Three cold component mounts and eight warm revisits were measured for each size in each of two clean checkouts: 66 samples total. Cold means a fresh document and first component mount, not a cold machine or complete application launch. Warm means alternating previously selected A/B labels in the same document after priming both; each keyed remount still gets a fresh measurement map. Browser HTTP cache was disabled. No CPU throttling was applied.
The measurement is elapsed time from programmatic click to the third subsequent requestAnimationFrame callback. It includes frame pacing and is not an exact time-to-paint, CPU, network or full thread-switch metric. A Long Animation Frame observer separately records overlapping blockingDuration. Zero observed blocking does not mean zero work. Realized row counts are settled samples, not peak mounts. Simple text rows do not model rich messages, expandable panels, markdown previews, secondary panels, plugins, server loading, workspaces with untracked files or production thread histories. Those remaining paths must be investigated before resolving the issue.
Expected and actual
Expected for this narrow fixture: a keyed remount stays windowed and does not incur a multi-second stall simply because the supplied key list is long. Actual: every sample had 21 realized rows; the largest measured click-to-third-frame interval across both runs was below 50 ms, and no overlapping long-frame blocking was observed. This does not disprove the original 2–9 second application-level observation.
Environment and trusted base
Fetched public origin/main: 79172bcaaaaadec37ae6ab7b098f25b06c7e6e99. Linux x86_64 execution container, Node 24.19.0, pinned pnpm 9.15.0, Vite production build, headless desktop Chromium 151.0.7922.173 at 1100×800 CSS pixels. Host load and display scheduling were uncontrolled. No macOS/Safari/iOS or reporter-machine replication. Dependencies came only from the frozen lockfile. Both clean detached checkouts used the identical three fixture source files and measurement script, separate node_modules, caches, browser profiles, HTTP ports and debugger ports.
The fixture uses a deliberately isolated Vite production entry instead of the full app or development server. It adds no dependencies, API proxy or application runtime access. The production component itself is unchanged. Minimal CSS supplies its existing relative-position and full-width utility semantics. An initial attempt omitted those rules; screenshot inspection exposed the malformed layout. Those measurements were discarded, and only the corrected first and second runs below are reported.
Measurements
| Run | Rows | Condition | n | Median ms | Maximum ms | Max blocking ms |
|---|---|---|---|---|---|---|
| first | 100 | cold-component | 3 | 37.5 | 40.5 | 0.0 |
| first | 100 | warm-revisit | 8 | 28.2 | 28.6 | 0.0 |
| first | 1000 | cold-component | 3 | 39.6 | 49.5 | 0.0 |
| first | 1000 | warm-revisit | 8 | 28.0 | 28.4 | 0.0 |
| first | 5000 | cold-component | 3 | 39.3 | 39.7 | 0.0 |
| first | 5000 | warm-revisit | 8 | 28.2 | 28.4 | 0.0 |
| second | 100 | cold-component | 3 | 33.9 | 35.0 | 0.0 |
| second | 100 | warm-revisit | 8 | 28.3 | 28.5 | 0.0 |
| second | 1000 | cold-component | 3 | 19.7 | 35.7 | 0.0 |
| second | 1000 | warm-revisit | 8 | 27.9 | 28.2 | 0.0 |
| second | 5000 | cold-component | 3 | 38.7 | 40.9 | 0.0 |
| second | 5000 | warm-revisit | 8 | 27.8 | 28.5 | 0.0 |
Same-agent second clean reproduction
The same agent personally repeated the corrected optimized fixture in a second clean checkout at the identical SHA. Both frozen installs, both production fixture builds and both browser measurement commands exited 0. Each run measured 33 samples and produced a genuine screenshot. No independent verifier or investigation agent was used. The second run supports the same narrow negative finding; it does not justify a broader fixed claim.
Repeatable steps
git clone https://github.com/get-bb/bb.git bb-repro cd bb-repro git checkout --detach 79172bcaaaaadec37ae6ab7b098f25b06c7e6e99 corepack pnpm install --frozen-lockfile # Create apps/app/issue4396/ and save the three inline fixture files below. # Save measure.mjs outside the checkout. cd apps/app corepack pnpm exec vite build --config issue4396/vite.config.ts python -m http.server 49131 --bind 127.0.0.1 --directory issue4396/dist
In separate terminals, start a disposable Chromium profile and run the supplied measurement script:
chromium --headless --no-sandbox --disable-dev-shm-usage --disable-background-networking --no-first-run --remote-debugging-address=127.0.0.1 --remote-debugging-port=49132 --user-data-dir="$(mktemp -d)" about:blank node measure.mjs 49132 49131 first-run
Repeat from a second clean checkout at the same SHA, using HTTP port 49133, debugger port 49134 and another fresh profile:
node measure.mjs 49134 49133 second-run
Ensure subprocess pnpm resolves to 9.15.0. This environment used a task-local Corepack shim and writable disposable caches/store. Stop the two local servers and browser processes after measurement. The script writes actual sample JSON and a screenshot; these are not assumed outputs.
apps/app/issue4396/index.html
<!doctype html><html><head><meta charset="utf-8"><title>4396 isolated timeline fixture</title><style>.relative{position:relative}.w-full{width:100%}</style></head><body><div id="root"></div><script type="module" src="/main.tsx"></script></body></html>
apps/app/issue4396/vite.config.ts
import { defineConfig } from "vite";
export default defineConfig({ root: __dirname, resolve: { conditions: ["source"], dedupe: ["react", "react-dom"] }, esbuild: { jsx: "automatic" }, build: { outDir: "dist", emptyOutDir: true }, server: { host: "127.0.0.1" } });
apps/app/issue4396/main.tsx
import { useCallback, useRef, useState } from "react";
import { createRoot } from "react-dom/client";
import { TimelineWindowedItems } from "../src/components/thread/timeline/TimelineWindowedItems";
const rowCount = Number(new URLSearchParams(location.search).get("rows") ?? 1000);
const keys = Array.from({ length: rowCount }, (_, i) => `synthetic-row-${i}`);
function Thread({ name }: { name: string }) {
const scroll = useRef<HTMLDivElement>(null);
const measurements = useRef(new Map<string, number>());
const getScrollElement = useCallback(() => scroll.current, []);
return <div ref={scroll} style={{ height: 600, overflow: "auto", border: "1px solid #777" }}>
<TimelineWindowedItems itemKeys={keys} measurements={measurements.current} getScrollElement={getScrollElement}
estimateItemHeight={() => 48} gap={0}
renderItem={(index, state) => <div key={keys[index]} ref={state.itemRef} data-index={state.itemIndex}
data-timeline-window-key={keys[index]} data-timeline-windowed-realized={String(state.isRealized)}
style={state.itemStyle}>{state.isRealized ? <div style={{ height: 48, boxSizing: "border-box", padding: 10, borderBottom: "1px solid #ddd" }}>
{name} — synthetic message {index}: ordinary fixture text</div> : null}</div>} />
</div>;
}
function App() {
const [thread, setThread] = useState<string | null>(null);
return <main style={{ font: "16px system-ui", margin: "20px auto", maxWidth: 900 }}>
<h1>Isolated timeline remount fixture</h1><p>{rowCount} synthetic rows per thread. Optimized component bundle; not the full bb app.</p>
<button id="a" onClick={() => setThread("Thread A")}>Open A</button>{" "}
<button id="b" onClick={() => setThread("Thread B")}>Open B</button>
<p id="selected">{thread ?? "No thread mounted"}</p>
{thread ? <Thread key={thread} name={thread} /> : null}
</main>;
}
createRoot(document.getElementById("root")!).render(<App />);
measure.mjs
import { writeFile } from 'node:fs/promises';
const [debugPort,appPort,output]=process.argv.slice(2);
const tabs=await(await fetch(`http://127.0.0.1:${debugPort}/json/list`)).json();
const ws=new WebSocket(tabs.find(t=>t.type==='page').webSocketDebuggerUrl);
await new Promise(r=>ws.addEventListener('open',r,{once:true}));let id=0;const pending=new Map();
ws.addEventListener('message',event=>{const x=JSON.parse(event.data);if(x.id){const p=pending.get(x.id);pending.delete(x.id);x.error?p.reject(new Error(JSON.stringify(x.error))):p.resolve(x.result);}});
const call=(method,params={})=>new Promise((resolve,reject)=>{const serial=++id;pending.set(serial,{resolve,reject});ws.send(JSON.stringify({id:serial,method,params}));});
const evaluate=async expression=>{const x=await call('Runtime.evaluate',{expression,returnByValue:true,awaitPromise:true});if(x.exceptionDetails)throw new Error(JSON.stringify(x.exceptionDetails));return x.result.value;};
await call('Page.enable');await call('Runtime.enable');await call('Network.enable');await call('Network.setCacheDisabled',{cacheDisabled:true});
await call('Emulation.setDeviceMetricsOverride',{width:1100,height:800,deviceScaleFactor:1,mobile:false});
const samples=[];
async function navigate(rows){await call('Page.navigate',{url:`http://127.0.0.1:${appPort}/?rows=${rows}`});for(let i=0;i<100;i++){if(await evaluate('document.getElementById("selected")?.textContent === "No thread mounted"'))return;await new Promise(r=>setTimeout(r,50));}throw new Error('Fixture not loaded');}
async function measure(button){return await evaluate(`(async()=>{const frames=[];const observer=new PerformanceObserver(list=>frames.push(...list.getEntries()));observer.observe({type:'long-animation-frame',buffered:false});const start=performance.now();document.getElementById('${button}').click();await new Promise(r=>requestAnimationFrame(()=>requestAnimationFrame(()=>requestAnimationFrame(r))));const end=performance.now();const selected=document.getElementById('selected').textContent;const realizedRows=document.querySelectorAll('[data-timeline-windowed-realized="true"]').length;await new Promise(r=>setTimeout(r,120));observer.disconnect();return {clickToThirdFrameMs:end-start,selected,realizedRows,longFrameBlockingMs:frames.filter(f=>f.startTime<end && f.startTime+f.duration>start).reduce((sum,f)=>sum+f.blockingDuration,0)};})()`);}
for(const rows of [100,1000,5000]){
for(let repeat=0;repeat<3;repeat++){await navigate(rows);samples.push({rows,condition:'cold-component',repeat,...await measure('a')});}
await measure('b');await measure('a');
for(let repeat=0;repeat<8;repeat++)samples.push({rows,condition:'warm-revisit',repeat,...await measure(repeat%2===0?'b':'a')});
}
const screenshot=await call('Page.captureScreenshot',{format:'png',captureBeyondViewport:false});await writeFile(output+'.png',Buffer.from(screenshot.data,'base64'));
const result={browser:await call('Browser.getVersion'),samples};await writeFile(output+'.json',JSON.stringify(result,null,2));console.log(JSON.stringify(result));ws.close();
Actual raw samples and genuine screenshots
First clean run
{
"browser": {
"protocolVersion": "1.3",
"product": "Chrome/151.0.7922.173",
"revision": "@a96602f30358e9b5d256a0464e7e4d4bec223004",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
"jsVersion": "15.1.206.23"
},
"samples": [
{
"rows": 100,
"condition": "cold-component",
"repeat": 0,
"clickToThirdFrameMs": 37.5,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "cold-component",
"repeat": 1,
"clickToThirdFrameMs": 40.5,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "cold-component",
"repeat": 2,
"clickToThirdFrameMs": 35.799999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 0,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 1,
"clickToThirdFrameMs": 28.100000000558794,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 2,
"clickToThirdFrameMs": 28.300000000745058,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 3,
"clickToThirdFrameMs": 28.200000000186265,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 4,
"clickToThirdFrameMs": 28.09999999962747,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 5,
"clickToThirdFrameMs": 28.600000000558794,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 6,
"clickToThirdFrameMs": 28.09999999962747,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 7,
"clickToThirdFrameMs": 28.300000000745058,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "cold-component",
"repeat": 0,
"clickToThirdFrameMs": 39.60000000055879,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "cold-component",
"repeat": 1,
"clickToThirdFrameMs": 38.5,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "cold-component",
"repeat": 2,
"clickToThirdFrameMs": 49.5,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 0,
"clickToThirdFrameMs": 28.40000000037253,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 1,
"clickToThirdFrameMs": 28,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 2,
"clickToThirdFrameMs": 28,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 3,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 4,
"clickToThirdFrameMs": 28.09999999962747,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 5,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 6,
"clickToThirdFrameMs": 27.699999999254942,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 7,
"clickToThirdFrameMs": 28,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "cold-component",
"repeat": 0,
"clickToThirdFrameMs": 39.30000000074506,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "cold-component",
"repeat": 1,
"clickToThirdFrameMs": 39.69999999925494,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "cold-component",
"repeat": 2,
"clickToThirdFrameMs": 38.39999999944121,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 0,
"clickToThirdFrameMs": 28,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 1,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 2,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 3,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 4,
"clickToThirdFrameMs": 27.5,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 5,
"clickToThirdFrameMs": 28.399999999441206,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 6,
"clickToThirdFrameMs": 28.100000000558794,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 7,
"clickToThirdFrameMs": 27.09999999962747,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
}
]
}

This image shows the isolated component with 5,000 supplied row keys. It is not the full application and does not by itself demonstrate latency or a blanking fix.
Second clean run
{
"browser": {
"protocolVersion": "1.3",
"product": "Chrome/151.0.7922.173",
"revision": "@a96602f30358e9b5d256a0464e7e4d4bec223004",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
"jsVersion": "15.1.206.23"
},
"samples": [
{
"rows": 100,
"condition": "cold-component",
"repeat": 0,
"clickToThirdFrameMs": 28.700000000186265,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "cold-component",
"repeat": 1,
"clickToThirdFrameMs": 33.89999999944121,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "cold-component",
"repeat": 2,
"clickToThirdFrameMs": 35,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 0,
"clickToThirdFrameMs": 28.399999999441206,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 1,
"clickToThirdFrameMs": 27.899999999441206,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 2,
"clickToThirdFrameMs": 28.5,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 3,
"clickToThirdFrameMs": 27.59999999962747,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 4,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 5,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 6,
"clickToThirdFrameMs": 28,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 100,
"condition": "warm-revisit",
"repeat": 7,
"clickToThirdFrameMs": 28.299999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "cold-component",
"repeat": 0,
"clickToThirdFrameMs": 18.299999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "cold-component",
"repeat": 1,
"clickToThirdFrameMs": 19.700000000186265,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "cold-component",
"repeat": 2,
"clickToThirdFrameMs": 35.700000000186265,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 0,
"clickToThirdFrameMs": 27.799999999813735,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 1,
"clickToThirdFrameMs": 28.199999999254942,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 2,
"clickToThirdFrameMs": 28.09999999962747,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 3,
"clickToThirdFrameMs": 28,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 4,
"clickToThirdFrameMs": 28.200000000186265,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 5,
"clickToThirdFrameMs": 27.799999999813735,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 6,
"clickToThirdFrameMs": 27.799999999813735,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 1000,
"condition": "warm-revisit",
"repeat": 7,
"clickToThirdFrameMs": 27.899999999441206,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "cold-component",
"repeat": 0,
"clickToThirdFrameMs": 38.700000000186265,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "cold-component",
"repeat": 1,
"clickToThirdFrameMs": 40.90000000037253,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "cold-component",
"repeat": 2,
"clickToThirdFrameMs": 37.59999999962747,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 0,
"clickToThirdFrameMs": 28.200000000186265,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 1,
"clickToThirdFrameMs": 27.5,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 2,
"clickToThirdFrameMs": 25.799999999813735,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 3,
"clickToThirdFrameMs": 27.899999999441206,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 4,
"clickToThirdFrameMs": 27.700000000186265,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 5,
"clickToThirdFrameMs": 27,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 6,
"clickToThirdFrameMs": 28.5,
"selected": "Thread B",
"realizedRows": 21,
"longFrameBlockingMs": 0
},
{
"rows": 5000,
"condition": "warm-revisit",
"repeat": 7,
"clickToThirdFrameMs": 28.40000000037253,
"selected": "Thread A",
"realizedRows": 21,
"longFrameBlockingMs": 0
}
]
}

This image shows the isolated component with 5,000 supplied row keys. It is not the full application and does not by itself demonstrate latency or a blanking fix.
Root cause status and related trusted code
The root cause of the original full-app delay is not established by this experiment. Current main already contains merged PR #4537; its author also explicitly limits its conclusions. We did not execute its branch, linked instances, attached trace or reproduction commands, and did not reuse its measurements as our own.
- Current viewport initialization seeds a viewport height and keeps windowing enabled while the scroll root is pending.
- Current render window selection renders virtual items while configured windowing remains enabled.
- Current windowing threshold and measurements defines the threshold and measurement-map contract used by the fixture.
No production fix is proposed from a non-reproducing reduced fixture. The useful next test is a matched optimized full-app fixture with rich messages and markdown/secondary panes, recording click-to-visible-content, long frames and separate layout instrumentation. Compare pane-open/pane-closed conditions and cold/warm thread visits at fixed event counts. Do not infer that the merged change resolves the entire issue.
Trust and publication
All issue/comment prose, links, code and commands were treated as untrusted claims. No issue-provided command, branch, external URL, attachment or real user runtime was executed or accessed. Only trusted fetched main and locally authored synthetic fixtures were used. All two current comments were read; no equivalent report was found. PR #4537 is merged metadata, not an open competing reproduction. Public visibility, report references, screenshots and exact source permalinks were checked before publication. Raw fixture files and logs remain local; the report embeds all reproducible inputs and results.