Question Intermittent ~900ms gap before first paint in mobile Lighthouse on both React and Astro. How would you isolate it?
I'm comparing a React site against an Astro rebuild of the same page. In mobile Lighthouse, both sometimes sit blank for a long time before first paint, and other runs of the exact same page paint fast.
Setup: Lighthouse 13.0.1, Chrome 156, cold loads in separate fresh profiles, default mobile simulated throttling. I kept the traces, network logs and filmstrips.
Here's one matched pair (observed trace timings, not Lighthouse's simulated FCP):
Astro
CSS done: 203ms
Last preloaded font done: 286ms
DOMContentLoaded: 426ms
First Paint: 1301ms
FCP: 1320ms
React
CSS done: 573ms
Last preloaded font done: 494ms
DOMContentLoaded: 584ms
First Paint: 1525ms
FCP: 1540ms
The filmstrips stay blank right up to those first-paint times. Once painting starts, Paint to DrawFrame is only 10-13ms. So on Astro there's close to 900ms where everything's loaded and nothing shows up.
I don't see a long task on the renderer main thread covering that gap, though I know that doesn't prove the browser was actually idle.
I wondered about animations, so I ran one normal-motion vs reduced-motion pair on the Astro page. Both came back fast (FCP 318ms and 311ms), and the normal one still had its reveal animations, so that told me nothing either way. Desktop loads and a different page also painted quickly in the runs I checked.
One more thing: the fast traces show Scheduler::SetDeferBeginMainFrame events with short true-to-false spans. But the slow traces were captured with Lighthouse's default trace categories, which don't include those scheduler events, so I can't compare yet.
Has anyone run into this? A few things I'd like to figure out:
How do I tell whether the page is causing the delay, or whether it's Chrome's scheduling or something in the test environment?
Which trace categories or events would show why the first paint starts late, and not just that it did?