My team ships AB tests constantly. At some point, the codebase started turning into a graveyard of feature flags, dead conditional logic, and TODO comments (or the lack thereof) about cleaning up old experiments. The breaking point: a major component with 4 experiments - hundreds of lines, where changing one thing risked breaking another (which it did). That's when I discovered that custom hooks could be more than reusable logic - they could be containers for isolating experimental code.
Through this talk, I’ll share my experience of using hooks as boundaries for implementing experiments, and how this pattern has improved the way my team can ship features fast while keeping technical debt in check.