Field notes
Specific bugs from building and running client side experiments on real stacks, each one with the fix and the code that solved it. Less theory, more of what actually breaks a test in production.
-
// spa experimentation Why your Optimizely experiment won't fire on SPA route changes It activates on a hard load, then goes silent the moment a user navigates a single page app. The mechanism, and the route-aware activation pattern that fixes it. -
// react inputs Why your A/B test variation won't stick on a React input You set the value and React wipes it on the next render, or onChange never fires. How to set a React controlled input so the app actually reacts. -
// dom timing Why your A/B test can't find the element (it rendered late) The selector returns null because the target renders after your code. How to wait for it instead of guessing a timeout. -
// performance Stop your A/B test from tanking Core Web Vitals Test code shifts layout and holds back paint, and CLS and LCP slide. How to apply a variation without wrecking the vitals or flashing the control. -
// shopify · strategy Is it worth A/B testing a slow Shopify store? Bad Core Web Vitals bias the result and cap the ceiling. When to fix speed first, when to test anyway, and why server-side beats client-side on a slow store. -
// accessibility Accessible A/B test variants: focus, ARIA, and screen readers Variants often ship modals with no focus trap, controls with no name, and changes a screen reader never hears. How to build a variation that stays usable. -
// flicker · fooc Stop A/B test flicker without tanking Core Web Vitals Hide the element, not the page. Why the default anti-flicker snippet wrecks your LCP, and the element-scoped fix that does not. -
// exit intent Exit intent that works on mobile, not just desktop The mouseout trick fires on desktop and does nothing on a phone. How to detect leave intent across devices, fire it once, and keep it accessible. -
// frequency capping Frequency capping: show your popup once, not on every page A popup with no memory shows on every page and becomes the reason people leave. How to cap it to once per session or per N days, with dismissals that stick. -
// platform comparison Optimizely vs VWO vs Convert for developers A code-level, developer-lens comparison of the three platforms: how test code loads, SPA support, custom-code freedom, QA, and results. -
// platform comparison abtestly vs Convert: an honest comparison How abtestly and Convert actually differ for a developer: pricing, edge delivery, code workflow, statistics, and where each one wins.