Writing

Notes from building production sites — the problems that came up often enough to be worth writing down.

6 min read

GSAP xPercent vs x: Centring, Responsive Moves and Horizontal Scroll

What GSAP's xPercent and yPercent actually do, how they combine with x and y, and the three places they save you: centring, responsive slides and horizontal scroll sections.

GSAPAnimationCSS
7 min read

ScrollTrigger on Mobile: ignoreMobileResize, normalizeScroll and the Address Bar

Why ScrollTrigger animations jump on phones when the address bar hides, what ignoreMobileResize and normalizeScroll really do, and a setup that works alongside Lenis.

GSAPScrollTriggerMobile
8 min read

Fixing INP in Next.js: Find the Slow Interaction, Then Break It Up

A practical INP guide for Next.js: capture the real slow interaction with web-vitals attribution, then fix it with yielding, transitions and fewer third-party scripts.

Next.jsPerformanceCore Web Vitals
8 min read

How I Build GSAP ScrollTrigger Animations Without Killing Performance

Why scroll animation drops frames, which properties are safe to animate, and how to wire ScrollTrigger into React without leaking triggers on every re-render.

GSAPScrollTriggerPerformanceReact
8 min read

WordPress vs Next.js for Agencies: Choosing the Right Stack in 2026

A build-side comparison for agencies: what each stack costs to build, hand over and maintain — and the questions that actually decide it.

WordPressNext.jsAgencies
7 min read

Core Web Vitals for Next.js in 2026: A Practical Checklist

The Next.js-specific causes of poor LCP, CLS and INP — and the fixes that actually move the numbers, including what changed in Next 16.

Next.jsPerformanceCore Web Vitals