v136 · performance

Enabling Web Applications to understand bimodal performance timings

Web applications may suffer from bimodal distribution in page load performance due to factors outside of the application’s control. For example, when a user agent first launches in a "cold start" scenario, it must perform many expensive initialization tasks that compete for system resources. Browser extensions can also affect performance, since some extensio

concepts

  1. Bimodal Timing

    Performance entries expose distribution statistics (p50/p95) for sample streams. Easier RUM aggregation without per-sample buffering.

  2. Cold-vs-warm histogram

    Reload the page repeatedly — every navigation is classified, accumulated in localStorage, and plotted as two histograms with separate p50/p95. The split RUM dashboards were designed for.

  3. LCP Debugger

    Every bimodal signal in one pane: activationStart, synthetic first interaction, userActivation, and a live LCP entry that swaps when you force a paint. Verdict line classifies cold vs. warm with the maths visible.

  4. RUM Dashboard

    Simulate accumulating navigation samples across page views, split into cold-start and warm buckets, and plot per-bucket p50/p95 histograms — showing why bimodal classification is essential for performance budgets and why mixing the two buckets in a single percentile would mask real regressions.

why it shipped

When a user agent first launches (a "cold start" scenario), it must perform many expensive initialization tasks that compete for resources on the system. Consequently, web applications may suffer from bimodal distribution in page load performance. Content they attempt to load will be in competition with other initialization work. This makes it difficult to detect if performance issues exist within web applications themselves, or because of a user-agent-generated condition of high resource contention. This is particularly a pain point for pinned PWAs (Progressive Web Apps) that will often re

references