Writing

Performance: what we have had to fix

81 write-ups from production, newest first. Each one is a problem hit on a real project and how it was diagnosed and fixed.

81 articles
Embedding Dentally on a Hygiene Clinic Website
5 min read

Embedding Dentally on a Hygiene Clinic Website

Where to put Dentally's online booking on a hygiene clinic website, how to link to it per appointment type, what to configure first, and how to keep pages fast.

GuidesDentists
Embedding TutorBird Without Slowing the Site
5 min read

Embedding TutorBird Without Slowing the Site

How to put TutorBird booking and registration on a children's tutoring website without third-party scripts loading everywhere and wrecking Core Web Vitals.

GuidesChildcare
Embedding Acuity on a Babysitting Website
6 min read

Embedding Acuity on a Babysitting Website

Where to put Acuity Scheduling on a babysitting website, how to deep-link it per sitter, what to configure first, and how to keep the pages fast.

GuidesChildcare
Embedding MoeGo on a Mobile Grooming Website
5 min read

Embedding MoeGo on a Mobile Grooming Website

How to put MoeGo online booking on a mobile grooming website without wrecking the load time: one booking page, deep links, nothing loading until Book is tapped.

GuidesPets
INP: Finding the Slow Interaction in Field Data
5 min read

INP: Finding the Slow Interaction in Field Data

INP fails in Search Console and the lab shows nothing. How to instrument real users to find which element, event and script is slow, and report it usefully.

Core Web VitalsINP
Cookie Consent Banners Without CLS or INP Cost
6 min read

Cookie Consent Banners Without CLS or INP Cost

The consent banner is often the worst thing on a page for Core Web Vitals: it shifts layout, blocks the thread and fires every tag on Accept. Making one fast.

Core Web VitalsPrivacy
Bfcache: The Free Speed You Lose With One Header
5 min read

Bfcache: The Free Speed You Lose With One Header

The back/forward cache makes back navigation instant and lifts field metrics for free, unless something blocks it. Blockers from no-store to unload handlers.

Core Web VitalsCaching
React Compiler INP Regression in Production: Fix
5 min read

React Compiler INP Regression in Production: Fix

React Compiler enabled on Next.js 16 and field INP regressed past 200ms? Here is why auto-memoisation pushes work post-commit and the scoped fix that lands.

PerformanceCore Web Vitals
next/script afterInteractive Blocking INP on Mobile
6 min read

next/script afterInteractive Blocking INP on Mobile

next/script strategy='afterInteractive' still pushing INP past 500ms on mobile? Here is the lazyOnload, worker, and onLoad fix that drops it back under 200ms.

PerformanceCore Web Vitals
CLS From Skeleton Loaders in Suspense Fallback Fix
5 min read

CLS From Skeleton Loaders in Suspense Fallback Fix

Cumulative Layout Shift spiking from Suspense skeleton loaders in Next.js 16? Match the skeleton dimensions to real content with a working CSS pattern.

PerformanceCore Web Vitals
PageSpeed LCP Different From Field Data Fix Guide
5 min read

PageSpeed LCP Different From Field Data Fix Guide

PageSpeed Insights LCP score different from CrUX field data? Fix the lab vs real-user gap with throttling, viewport, and resource priority hints.

Core Web VitalsPerformance
next/image priority Not Preloading Hero: LCP Fix
5 min read

next/image priority Not Preloading Hero: LCP Fix

next/image with priority not generating a preload link and tanking your hero LCP score? Fix the missing preload hint and PPR boundary issue with code.

PerformanceCore Web Vitals
Vercel Speed Insights No Data After Next.js 16: Fix
5 min read

Vercel Speed Insights No Data After Next.js 16: Fix

Vercel Speed Insights showing no data after Next.js 16 upgrade? Fix the missing beacon, CSP block, and the SpeedInsights component placement with code.

PerformanceCore Web Vitals
Cookie Consent Banner CLS Fix: Stop the Layout Shift
6 min read

Cookie Consent Banner CLS Fix: Stop the Layout Shift

Cookie consent banner tanking your CLS score and Core Web Vitals on first paint? Fix the late-injected banner, reserved space, and animation timing in code.

PerformanceCore Web Vitals
Next.js 16 Image priority Deprecated: Real LCP Fix
6 min read

Next.js 16 Image priority Deprecated: Real LCP Fix

Next.js 16 deprecated the priority prop on next/image. Migrate to preload, fix the LCP regression, and stop accidentally preloading every product hero image.

PerformanceCore Web Vitals
LCP Preload Hint Picking the Wrong Image: Real Fix
5 min read

LCP Preload Hint Picking the Wrong Image: Real Fix

LCP regressed because the browser preloads the wrong image with next/image priority? Fix fetchpriority, srcset, and preload candidate selection with code.

PerformanceCore Web Vitals
next/font CLS Layout Shift in Next.js 16: Real Fix
5 min read

next/font CLS Layout Shift in Next.js 16: Real Fix

next/font causing CLS layout shift in Next.js 16 after the upgrade? Fix font fallback metrics, size-adjust, and display swap settings with working code.

PerformanceCore Web Vitals
Next.js App Router Render-Blocking CSS Fix
5 min read

Next.js App Router Render-Blocking CSS Fix

Next.js App Router render-blocking CSS can crush LCP when globals and library styles leak into initial chunks. Here is the fix I use on production builds.

Next.jsPerformance
Technical SEO Audit Checklist for 2026
6 min read

Technical SEO Audit Checklist for 2026

A practical technical SEO audit checklist for 2026 covering crawlability, indexation, rendering, internal links, structured data, and Core Web Vitals.

SEOTechnical SEO
INP Regression from GTM Third-Party Tags in 2026
6 min read

INP Regression from GTM Third-Party Tags in 2026

INP score regressing above 200ms after adding Google Tag Manager tags? Here is how to diagnose the blocking tag and fix it with working code.

PerformanceCore Web Vitals
WordPress Performance: How I Cut Load Times by 60%
3 min read

WordPress Performance: How I Cut Load Times by 60%

A step-by-step guide to optimizing WordPress performance. Caching, image optimization, CDN setup, and database cleanup that delivered 60% faster load times.

WordPressPerformance
Need this done, not read about?

We take Performance work on subcontract and direct.

Fixed price for a defined scope, on live sites, with a rollback path. Agencies and in-house teams welcome.

Hire me for Performance