How this site is built

Every figure here says when and how it was measured. Our own figures are measured twice before any change goes live.

Re-measured whenever the site changes

Evidence note 3

Largest Contentful Paint, home page, mobile

1.8 s

How long the largest image or block of text in view takes to appear.

Good is 2.5 s or less; poor is over 4 s.

Lab test, Lighthouse 13.5.0, median of 3 runs, 12 Oct 2026.

Evidence note 1

Cumulative Layout Shift, home page, mobile

0

How much the layout jumps while the page loads; 0 means it didn’t.

Good is 0.1 or less; poor is over 0.25.

Lab test, Lighthouse 13.5.0, median of 3 runs, 12 Oct 2026.

Evidence note 1

Our old site, for comparison

2.7 s

Largest Contentful Paint at its live address, same Lighthouse settings, median of 5 runs, 8 Oct 2026.

Good is 2.5 s or less; poor is over 4 s.

Measured once, before the rebuild, and kept as a fixed record.

Evidence note 4

Size of each page

/
23.2 KB of HTML · 54.5 KB of script
/404
13.6 KB of HTML · 7.3 KB of script
/contact/
18.7 KB of HTML · 9.3 KB of script
/how-we-work/
17.4 KB of HTML · 7.3 KB of script
/podcasts/
18.9 KB of HTML · 7.3 KB of script
/privacy/
15.0 KB of HTML · 7.3 KB of script
/studio/
18.4 KB of HTML · 7.3 KB of script
/work/
22.2 KB of HTML · 7.3 KB of script
/work/bonafide/
19.5 KB of HTML · 7.6 KB of script
/work/digital-optima/
18.5 KB of HTML · 7.3 KB of script
/work/duke-street-studio/
19.3 KB of HTML · 7.3 KB of script
/work/sydneyside/
19.7 KB of HTML · 7.6 KB of script

Compressed size, measured on the build before it went live, 12 Oct 2026.

Evidence note 2

Our method

We write this site’s custom code with Claude, Anthropic’s AI model. The decisions behind it are on record with their reasons. Its figures are re-measured before each release, and a mismatch stops it.

How it’s made

Built with Astro 7.3.5 on Node 24, and hosted on Cloudflare Workers. Set in Schibsted Grotesk and Atkinson Hyperlegible Mono.

Each page is plain HTML, with structured data that tells search engines who we are. Every page is sent with these security headers: Strict-Transport-Security, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, Cross-Origin-Opener-Policy and Content-Security-Policy. The build also stops a client’s name or images going live until permission is on record.

Where your browser supports it, pages fade into each other, and the page you’ll likely open next starts loading before you click. With Reduce Motion on, they change without animation.

Notes

Every evidence mark on this page links here: what was measured, how and when.

  1. 1

    Lighthouse 13.5.0 tests the built home page on our build machine, a Mac, served compressed. It simulates a mid-range phone on a slow 4G connection and runs 3 times after one warm-up run that isn’t counted, and each figure is the median. On 12 Oct 2026 Lighthouse rated the machine’s speed 4,125; below 2,800 the build stops, so a slow run can’t set the figure. Measured on commit e2ced33.

    Back to the claim
  2. 2

    Each page’s HTML and scripts are compressed with gzip at its highest setting and counted in kilobytes of 1,024 bytes. Script counts every script file from this site that the page could load, so it’s the most the page can use. Cloudflare’s analytics beacon and, on the contact page, Turnstile’s script come from Cloudflare and aren’t counted.

    Back to the claim
  3. 3

    The build measures every page, writes the figures in, then builds and measures again. Weights must match once rounded. Lab results vary from run to run, so the lab figures have a margin. LCP must come back within 0.3 s or 15 per cent, whichever is larger, and CLS within 0.02. If a check still fails on its second try, nothing goes live.

    Back to the claim
  4. 4

    Our old site was tested once, at its live address, with the same Lighthouse settings. This site is tested on its build before release, so the two figures aren’t a like-for-like comparison.

    Back to the claim