| File | What's in it |
| bench-results.json | Slow 4G (1.6 Mbps, 150 ms RTT) at 4x CPU. All 31 pages, 7 cold interleaved runs each, with LCP / TTFB / FCP / CLS / transfer bytes as min, median, max, mean and stddev, plus the four-phase LCP split and the per-request network log for every run. |
| bench-results-fast4g.json | The same 217 measurements on Fast 4G (9 Mbps, 40 ms RTT), which is where the crossover figure moves from 35 KB to 62 KB. |
| fixture-manifest.json | The six encoded hero weights with exact byte counts, and the five delivery variants with what each one does. |
| preload-on-hidden-images/preload-results.json | The follow-up experiment: a visible <img>, loading="lazy", a CSS background and a client-inserted image, each with and without a preload hint, 9 cold runs per page in one interleaved run. Includes an effects block giving the per-variant delta and whether the run ranges separate. |
| nextjs-image/nextjs-results.json | Next.js 16.3.1 / React 19.2.0 production build, four routes, 7 cold runs each. |
| nextjs-image/format-probe.json | What Next's optimizer returns for the same URL with and without WebP in the Accept header, at both candidate widths. This is why the article can say the format changed and what it cost, instead of inferring it. |
| nextjs-image/emitted-html.json | The markup Next actually served for each route — preload links, loading, fetchPriority and the full srcSet. This is what the claims about React 19's automatic preload are checked against. |
| File | What it does |
| gen.mjs | Generates the hero at six weights from a seeded source, and the 31 pages. Deterministic: rerunning it reproduces the same bytes. |
| bench.mjs | The measurement loop, interleaved round-robin across all pages. |
| charts.mjs | Renders both article SVGs from bench-results.json. No number in a chart is typed by hand. |
| artifacts.mjs | Captures the DevTools panels and the Lighthouse report. |
| nextjs-image/bench.mjs | The Next.js measurement, including capturing the served HTML per route. |
| preload-on-hidden-images/gen.mjs | Generates the eight preload pages. The comment above page() records why the variant stylesheet must be emitted after style.css — the first version of this fixture lost that cascade and the CSS-background pages never fetched the hero at all. |
| preload-on-hidden-images/bench.mjs | The with/without-preload measurement. |
| nextjs-image/format-probe.mjs | The four fetches behind the WebP-vs-JPEG numbers. |
| nextjs-image/next.config.mjs | The Next config, so you can confirm images.formats is left at its default. |
| audit-tables.mjs | Re-derives all 138 table cells in the article from the results files, including each Next route's byte count and served format. Exits non-zero on any mismatch. |