web-uplift audit: paul.kinlan.me
Report mode on paul.kinlan.me, my other blog. The model found one architectural problem worth more than all the rest combined.
The headline issue: styling the entire site with the Tailwind Play CDN runtime, a render-blocking, not-for-prod script that generates the full Tailwind CSS in the browser on every visit. Lab LCP was 9.9s. One fix (a build-time purged build) cleared the perf, resilience, and sustainability findings at once.
findings (grouped by the fix)
pk-tailwind-cdn · be-fast-and-stableTailwind Play CDN runtime is large and render-blocking.
Fix: build-time purged Tailwind build (byte-identical CSS, shipped not PR'd).
high
pk-slow-lcp · be-fast-and-stableLab FCP 9.2s, LCP 9.9s on mobile profile.
Resolves with the CDN removal above.
high
pk-tailwind-cdn-resilience · be-resilientAll styling generated at runtime by a third-party CDN — unstyled if it fails.
Resolves with the build.
medium
pk-tailwind-cdn-weight · be-sustainableFull Tailwind CSS generated client-side on every visit, including unused utilities.
Resolves with the build.
low
pk-no-h1 · be-inclusiveNo level-one heading; document outline has no primary landmark.
Fix: a single h1.
medium
pk-duplicate-banner · be-inclusiveMultiple banner landmarks, none uniquely labelled.
Fix: aria-label each landmark.
medium
pk-region-landmarks · be-inclusiveSome content sits outside any landmark region.
Fix: wrap in main / region.
low
pk-no-dark-theme · respect-user-preferencesSame light palette regardless of prefers-color-scheme.
Fix: color-scheme + light-dark().
medium
pk-color-scheme-meta · respect-user-preferencesNo color-scheme meta; root resolves to light only.
Fix: <meta name="color-scheme">.
low
pk-empty-meta-description · be-discoverableMeta description present but empty.
Fix: authored description fallback.
medium
pk-link-text · be-discoverableNon-descriptive link text ("here", "More").
Fix: descriptive links.
low
pk-missing-security-headers · be-private-and-secureHTTPS + HSTS present, but no CSP, X-Content-Type-Options, or Referrer-Policy.
Fix: security headers in vercel.json.
low
credited strengths
a11y 100
best practices 100
0 CLS
view transitions
speculation rules
RSS
The same audit found the problems and credited the wins in the same pass. web-uplift.