A dev panel that knows why the experiment isn't running
Generic devtools show you state. The Toolbox dev panel cross-references the trigger contract, the targeting condition and live attributes — and names the exact clause blocking enrolment.
The blog
Twelve years of A/B testing — plus older JavaScript and performance notes going back to 2011 — written down so I don't have to remember it all.
Generic devtools show you state. The Toolbox dev panel cross-references the trigger contract, the targeting condition and live attributes — and names the exact clause blocking enrolment.
The GrowthBook MCP keeps an agent on rails — drafts only, no raw targeting. When you need fully-targeted experiments across several clients, reproducibly, that turns out to be a REST job. Here's what I learned wiring it up.
An A/B test that had to remove the progress bar on the final checkout step only — on a checkout that re-renders itself. Why the JS approach kept losing, and the one reactive CSS rule that won.
A GrowthBook redirect is an auto-experiment the SDK applies client-side — so getFeatureValue returns -1, your render callback ignores it, and the control cohort quietly vanishes from your data. Here's the asymmetry, the SRM trap underneath it, and the paired A-A tracker that fixes both.
A fixed-height label whose all-caps text looked too high — even though getBoundingClientRect() swore it was centred. Why the box lies, how to measure the actual glyph ink, and the text-box-trim property that finally fixed it.
Twenty-three years online, four CMSes, one static-site flip. Why we moved off WordPress to Astro on Cloudflare Pages — and whether that's the right call for your own site too.
A weekly npm audit that uses my existing CLI session to read release notes and decide what's safe to auto-update — zero extra API cost.
Joomla in 2003, SilverStripe briefly, a long WordPress decade with Genesis on top — and why static-site tooling finally won me over for new builds in 2026.
One MCP script + one .env per client + auto-detected auth. The pattern that keeps QLF, Toom, and LAB strictly isolated without ever mixing tenants.
GrowthBook's native URL override bypasses every targeting rule. The QA preview tool I built keeps the rules in place — forcing only fires if the user already qualifies.
An async, error-resilient globals detector: spins up an iframe baseline, categorises the diff by type, and lets you exclude known third-party noise.
How a Vite hub, a Chrome extension that hijacks production scripts, and a WebSocket reload loop turned multi-client A/B testing into hot-reloadable dev work.
Inside MintMinds RequestLite: a Manifest V3 Chrome extension that redirects production script URLs to localhost and live-reloads tabs over WebSocket.
A tiny IIFE that compares window against a fresh iframe to list every user-defined global, grouped by type — handy for auditing third-party noise.
Why HTMLElement.click() silently fails on SVG, and the modern MouseEvent-dispatch one-liner that actually triggers the click on any element.
A tiny config-driven helper that builds, attributes, and inserts DOM nodes in one call — the primitive that powers most of my A/B test variants.
How wrapping querySelector in a MutationObserver kills the FOUC in A/B tests — your variant fires the instant the target element lands in the DOM.
Replacing my old rAF-based viewport tracker with IntersectionObserver — the simpler, lazier, dramatically less complicated way to fire A/B test events.
The original requestAnimationFrame helper that fires A/B test events when an element scrolls into view — predecessor to the Intersection Observer rewrite.
Five jQuery techniques that keep A/B tests under their performance budget — selector speed, caching, chaining, event delegation, and DOM-write batching.
A pocket-sized click introspection helper that JSON-stringifies the source element, its index, text, and every attribute — useful as A/B test custom tracking.
A tiny defensive wrapper that picks console.dir for objects and arrays and console.info for primitives — back when Firebug and Chrome disagreed about logging.