Modern JavaScript bundlers commonly implement two optimizations: scope hoisting, and code splitting. In this post, I'll discuss how these are fundamentally at odds with each other.