futr
Revision 03 · issued 2026-08-15

This site, measured.

We ask clients to hold their sites to budgets, so ours is published — and now checked against a real build rather than stated as an intention. Where we are over, it says so.

Performance budget · measured
First-load JS, heaviest routeover target, under ceiling
151.8kBtarget 120kB · ceiling 160kB

Gzipped, every chunk that route pulls in.

First-load JS, median routeover target, under ceiling
148.5kBtarget 120kB · ceiling 160kB

The typical page rather than the worst one.

Shared baseline JSwithin budget
100kBtarget 100kB · ceiling 120kB

Loaded once, then cached across every route.

CSS, whole sitewithin budget
15.4kBtarget 20kB · ceiling 30kB

Gzipped. No framework, so this is all of it.

Self-hosted fontswithin budget
47.1kBtarget 60kB · ceiling 90kB

2 WOFF2 files, no third-party font request.

Measured 2026-08-22 from a production build of 34 routes, by scripts/measure.mjs reading the build output directly. 2 of 5 lines are over target. They are published anyway — a budget you only show when you pass it is marketing, not a budget.

Lighthouse · measured
96PerformanceMobile, throttled
96AccessibilityAutomated portion only
100Best practices
100SEO
1.4 sLargest contentful painttarget < 2.0 s
0.007Cumulative layout shifttarget < 0.1
0 msTotal blocking timetarget < 200 ms

Measured 2026-08-15 against futragency.com, mobile, using our own audit tool — the same one you can point at your site. The previous run, on 2026-08-12, scored SEO 66 — we were deliberately serving noindex while the site sat on a staging hostname whose canonicals pointed here, and we published that with its reason rather than waiting for a number that flattered us. The hostname resolved, so the reason went. Both runs are in the revision history below.

Not yet measured

Frame rate, mid-tier Android

Measured on device, not in a lab. The animation work is CSS scroll-driven, so this is a hardware question rather than a code one.

Target 60 fps

WCAG 2.2 AA, core journeys

Automated tooling catches roughly a third of the criteria, and the easy third. The remainder is a manual pass with a keyboard and a screen reader, and the 96 above should not be read as a conformance claim.

Target Conformant

Field data, real visitors

Everything above is a lab run on one throttled device. It says what the page is capable of, not what your phone on your network actually got. Real-user data needs enough traffic to report, and we do not have it yet — when we do, it goes here whether or not it agrees with the lab.

Target CrUX threshold
Weight on disk
Routes34
Images1054.6 MB total
Fonts247.1 kB
CSS15.4kB gzipped
Heaviest routes
RouteFirst-load JS
/white-label151.8 kB
/contact151.6 kB
/work150.2 kB
/audit149.3 kB
/149.1 kB
Stack
FrameworkNext.js 15 · React 19
HostingVercel
StylingCSS custom properties · no framework
MotionCSS scroll-driven animations
SearchClient-side index over the content model
Display typeCCS Glyke, self-hosted WOFF2
Index
page27
capability11
work20
person6
writing6
Revision history

Rev 03

Re-measured on futragency.com now that the domain resolves and the pages are indexable. SEO 66 → 100, LCP 2.0s → 1.4s, blocking time 30ms → 0ms, layout shift 0 → 0.007. The 66 was published for three days with its reason; it is kept here rather than quietly replaced. Case-study imagery wired across work, about, process and careers, and the legacy feverdigital.co.za domain redirected here.

2026-08-15

Rev 02

Site audit tool, six published technical articles, contact form wired to CRM with attribution, four-gate contact sheet, comparison pages, procurement pack, published legal pack. Domain attached with the legacy WordPress URLs redirected. Performance budget switched from targets to measured figures.

2026-08-11

Rev 01

First issue. Search shell, six vertical destinations, capability pages with computed project mapping.

2026-08-06
How revisions work

Behaviour on this site is measured monthly. Where the evidence suggests a change, it is proposed, approved, and issued as the next revision with a line in this log. The site improves in public.

Four ways in

However you prefer.

Marine and yacht enquiries go straight to a named senior contact, and nothing is published without permission.