GitHub rebuilt the data loading architecture for Issues pages to eliminate redundant network fetches that broke developer flow during issue triage. The team built a client-side caching layer backed by IndexedDB, added a cache preheating strategy, and introduced a service worker to keep cached data usable across hard navigations. Before the overhaul, 57.6% of traffic to the issues#show route was hard navigations, the slowest path, meaning the majority of users were paying full server render and JavaScript boot costs on every visit.
The team's internal metric, HPC (Highest Priority Content), mirrors Web Vitals LCP and tracks when the issue title or body first renders. They bucket results into three tiers: instant (under 200ms), fast (under 1000ms), and slow (1000ms or above). Critically, they shifted measurement focus away from p90 and p99 tail latency and toward distribution quality, specifically what percentage of all navigations land in the fast and instant buckets. That methodological change is worth understanding in detail before skipping to the results.
The full post covers the caching and preheating architecture, how the service worker accelerates previously slow navigation paths, real-world result numbers across the user population, and the concrete tradeoffs this approach introduces. If you are building any data-heavy web app, the patterns are transferable without a full rewrite. The section on why optimizing tail latency alone can leave median users with a sluggish product is reason enough to read the original.
[READ ORIGINAL →]