Performance
Core Web Vitals, accessibility, and the design choices behind shippable speed.
Site Speed and Core Web Vitals for Professional Services Firms
Speed is not a nice-to-have. It is the first impression, the ranking factor, and the conversion lever, all at once.
Anthropic API Prompt Caching: The Pattern That Saves Thousands on Content Generation
Prompt caching cuts our content-gen costs by an order of magnitude. Here’s how and where it works.
Next.js 16.1 in Production: The Migration Playbook We Run on Every FH Site
Next 16.1 is the lean target. Here’s the exact migration we run, what breaks, and what to delete after.
Cloudflare DNS and CDN: The Base Configuration for Every FH Client Site
Every FH site sits behind Cloudflare. Here’s the exact configuration and why each setting is where it is.
Core Web Vitals 2026: The Metrics That Matter and the Targets That Hold
Three numbers. Hit them and you’re competing on content; miss them and you’re competing one hand tied.
Server Components vs Client Components: The Mental Model That Stops You Reaching for ‘use client’
Most teams add ‘use client’ because they’re scared. The bundle pays for it.
Supabase Storage for Marketing Sites: The Bucket-Per-Tenant Pattern
Most teams store images in their build artifact. That doesn’t scale. Supabase Storage with the right bucket layout does.
Server-Side Tagging: When SMB Sites Should Pay For It (and When They Shouldn’t)
Server-side tagging is hot. For most SMB sites it’s a $300/month answer to a problem you don’t have.
Optimizing INP: The Five Patterns That Fix Interaction Latency
INP is the hardest of the three Core Web Vitals to hit. Five patterns cover most of what we ship to fix it.
Cloudflare Turnstile: The CAPTCHA That Doesn’t Make Your Users Hate You
reCAPTCHA hurts conversion. Turnstile doesn’t. Here’s the wiring that keeps your forms spam-free without the click-the-bicycles ritual.
Next/Image with Supabase Storage: The Pattern That Saves 70% of Hero Image Bandwidth
Most teams either skip next/image (and ship 4MB heroes) or misconfigure it (and break Coolify deploys). Here’s the pattern that works.
View Transitions API and CSS Scroll-Driven Animations: The Browser Wins of 2026
View Transitions and scroll-driven animations replace 80% of what we used framer-motion for. Faster, smaller, simpler.
ISR, SSG, SSR, and Edge: Picking the Right Rendering Mode for Each Page
Static for marketing pages. ISR for blog. SSR for dashboards. Edge for low-latency reads. Most teams pick wrong.
Bundle Size Budgets: How to Stop JS Bloat Before It Ships
Without a budget, JavaScript weight only goes up. Here’s how to enforce one in CI.
Next.js Middleware: The Five Patterns That Earn Their Keep
Middleware runs on every request. Use it for things that have to happen before the page renders. Stop using it for everything else.
Critical CSS and Font Loading: The Last 200ms of LCP
Once you’ve fixed images and JS, font and CSS strategy is the next LCP lever. Here’s the pattern.
Supabase Performance: Indexing, Connection Pooling, and the Postgres Settings That Matter
Supabase is Postgres. Most performance issues are Postgres issues with Postgres solutions.
Cloudflare Images and Image Resizing: When the Built-In Service Wins
Three options, three different cost curves. Picking right matters more than people think.
Reducing Third-Party Script Weight: The Audit Pattern That Saves Half Your JS Budget
Third-party scripts are where bundles really go to die. Here’s the audit and the policy.