Introducing OLI: Cro Metrics’ Secret to Faster, More Efficient Experiment Creation
Have you ever wondered how Cro Metrics launches new website experiments so quickly and consistently? Meet our internal tool, Optimization Local Interface (OLI)—pronounced “olly.” OLI streamlines how our engineers create, test, and iterate on experiments, helping us deliver top-notch results for our clients as efficiently as possible.
OLI automates many of the tasks involved in building experiments. It compiles our code—including modern TypeScript and SCSS (CSS)—and bundles it for compatibility with a broad range of browsers. Thanks to OLI’s ability to inject locally hosted code directly into a live website, our developers can rapidly test changes and refine each experiment before pushing it to the final testing platform. This approach saves considerable time and effort, ensuring a faster turnaround for our clients.
Moreover, OLI connects with our other internal tools—such as Iris, our custom client dashboard—to prefill experiment details and automate tasks like creating and uploading experiments. This dramatically reduces the chance of human error while ensuring consistent, high-quality results. Although OLI isn’t currently available for direct client use, it remains a crucial behind-the-scenes resource that allows our team to focus on delivering what matters most: growth and success for your business through data-driven experimentation.
We manage Project JavaScript (PJS) through a custom compilation system integrated into OLI. We break down the code into individual “PJS modules,” each serving a distinct purpose—like reusable QA utilities, event/goal tracking, or tools for single-page applications. By bundling these modules, we can:
Reuse common functionality across multiple projects,
Include only the modules that make sense for each client,
Quickly iterate when modifications are needed.
Error Mitigation & Reporting: Each module is wrapped in error-handling code, so any issues are contained and swiftly resolved.
Hash-Based Version Control: We store a hash of the last uploaded PJS code to prevent accidental overwrites and keep clear version histories.
Code Reviews: All new modules go through a review process to ensure quality and minimize technical debt.
Minification & Performance: We minimize file size before uploading, helping your pages run fast while retaining high functionality.
Many testing platforms allow a global “campaign-level” JavaScript block—often called shared code—that runs across all variations, including the control (v0). We place nearly all experiment logic in this shared block, then have each variation simply activate whichever parts it needs.
Benefits of Shared Code:
Reduced Snippet Size
Because the majority of each experiment’s code overlaps between variations, keeping it in one place avoids duplication. If we placed code for each variation separately, we’d repeat large blocks unnecessarily—slowing performance and increasing complexity.
Consistent Tracking in the Control
Often, we need identical event tracking or data collection in both the control and variations. Shared code makes it simpler to run these tasks everywhere, ensuring consistent data and streamlined testing.
OLI helps us optimize experiments by:
Eliminating Redundant Code: We use a modular approach (PJS) and shared code techniques to prevent bloated snippets.
Minifying JavaScript: We reduce file size, speeding up load times.
Maintaining Best Practices by Default: OLI’s boilerplates and automated workflows guide our team toward clean, efficient code.
Crucially, OLI adds no extra runtime overhead—it simply bundles and uploads our optimized code to the testing platform.
OLI currently facilitates writing experiments for:
Optimizely
Convert
VWO
AB Tasty
Dynamic Yield
Adobe Target
Monetate
It also includes API integrations/automations with:
Optimizely
Convert
VWO
By automating much of the setup and deployment process, OLI reduces manual effort and potential errors, allowing us to deliver more reliable, high-performing tests in less time.
In summary, OLI is how Cro Metrics can rapidly develop, iterate, and deploy experiments. From managing modular JavaScript (PJS) safely and efficiently to utilizing shared code for performance gains, OLI helps our team focus on delivering real results—so you can see faster, more reliable improvements on your website.