Skip to content
← Antoine Debes.

Performance, in public

This site claims performance as a specialty, so its own numbers are public: the measured weight of the home page as served, the budget that CI enforces on every push, and a changelog of what changed — including the embarrassing parts. Methodology and a guided tour live in How This Site Loads in Under One Second.

Scoreboard

measured 2026-08-16 · gzip, as served · home route

MetricMeasuredBudgetStatus
First-load JavaScript106.1 kB≤ 120 kBPASS
HTML document16.3 kB≤ 40 kBPASS
Stylesheet10.5 kB≤ 20 kBPASS
Images on the home page177.1 kB≤ 300 kBPASS
Render-blocking requests1 (the stylesheet)≤ 1PASS
Third-party requests00PASS

An honest caveat: ~102 kB of the JavaScript is the Next.js 15 App Router framework baseline (React, router, hydration). The parts I control add 4 kB on top. A zero-hydration rewrite would drop the floor to ~10 kB — it's on the roadmap as an experiment.

How it's enforced

Performance changelog

Wins and regressions both — publishing only the wins is marketing, not engineering.

  1. 2026-08-16

    Removed the animation library entirely (scroll effects now CSS-driven), rebuilt the shell as server components.

    first-load JS down again; runtime animation JS: 0

  2. 2026-08-16

    Killed the effect stack: full-viewport canvas glitch hero, tsparticles titles, animated SVG card borders, 96-image marquee, a universal `* { transition }` rule, and 8 infinite-loop animations in the theme toggle.

    first-load JS 173 → 157 kB; continuous rAF/canvas cost → 0

  3. 2026-08-16

    Re-encoded six project screenshots from raw PNG to display-sized WebP at build time.

    16.2 MB → 167 kB (−99%)