What is Performance Edge?

Optimizely Performance Edge is an add-on for the Optimizely Web experimentation platform and intended as a more performant way to deliver client-side web experiments by taking advantage of a distributed content delivery network called "the edge." Performance Edge is designed to improve page performance by executing targeting and variation assignment tasks on “the edge” instead of in the browser.


How does it work?

When you purchase a Performance Edge license, Optimizely will create a unique endpoint, located on “the edge,” called the Edge Decider. The Edge Decider not only buckets your users into experiments and variations, but also returns a “microsnippet” containing only the changes needed to power those experiments and variations on the current page.

What this means is instead of containing all of the content needed for a full Optimizely project like the standard Web snippet, the Edge microsnippet contains only the JavaScript needed to execute changes on the current webpage for the specific variation that an individual visitor is bucketed into. The contents of the microsnippet are unique to the visitor and webpage. Asynchronously, it also loads an Optimizely tracking snippet to log visit and conversion events on the page.


Is Performance Edge appropriate for me?

If you answer “Yes” to any of the below, Performance Edge may not be a fit for your needs.

  1. Are any of the sites where you intend to use Performance Edge, or parts of them, Single Page Applications?

  2. Do you require Optimizely to be PCI Compliant?

  3. Do you have any integrations between Optimizely and 3rd parties? (e.g., but not limited to, Adobe, Analytics, Contentsquare, Google Ads, Google Analytics, Mixpanel, Segment, Tealium AudienceStream)

  4. Do you anticipate using any of these Optimizely features?: Mutually Exclusive Experiments (Mutual Exclusions), Multivariate Testing (MVT), Stats Accelerator, Multi-Armed Bandits, Exit Rate metrics, Bounce Rate metrics, Custom Attributes

  5. Do you anticipate using any of these Optimizely audience targeting features?: Referrer URL, Custom JavaScript (think custom complex targeting that's not out-of-the-box), Traffic Source, Language, Ad Campaign, New vs Returning Visitors, Time of Day, Custom Attributes

  6. Do you anticipate using any of these Optimizely personalization features?: Adaptive Audiences Add-on, Adaptive Recommendations, Dynamic Customer Profile, External Attributes, Personalization Campaigns, Uploaded Audiences, Behavioral Targeting, Third Party Data Audience, Campaign Results Page

Performance Edge with Dynamic Websites/SPAs

Many sites are built as Single-Page Applications (SPAs) in order to optimize the speed of content delivery and improve overall site performance. Popular frameworks/libraries for creating SPAs include React (Next.js, Gatsby), Vue.js (Nuxt.js), Angular, etc. Because SPAs load content differently from traditional (multi-page) sites, experimenting on SPA websites requires additional page targeting and activation techniques than what is necessary with traditional sites.

Ordinarily, Optimizely applies your experiment changes to the website along with the initial loading of the page. However, since Single-Page Applications don’t reload the browser tab when they transition to new page content, Optimizely needs some additional mechanisms in place to watch for these “SPA Transitions” in order to know when to apply it’s changes.

Optimizely sometimes refers to Single-Page Applications as “Dynamic Websites”.

Optimizely offers what it calls it’s “Support for Dynamic Websites” features to solve these issues. It can be enabled in the project settings and is available for both Performance Edge and Web projects.

Implications of enabling Support for Dynamic Websites

Enabling the Support for Dynamic Websites option on Performance Edge fundamentally alters the way Performance Edge delivers experiments.

When Support for Dynamic Websites is enabled on Performance Edge, the Edge Decider continues to respond with the same small microsnippet, however where Performance Edge previously only included a tracking snippet asynchronously, it now also delivers an additional SPA snippet.

It is essential to note that the SPA snippet is much larger than the microsnippet and includes:

  • Definitions for all pages on the site

    • This is necessary to support activation and deactivation of Optimizely Pages on a SPA

  • All experiment and variation code running on the entire site

    • This includes experiments that the user will never be eligible to view due to not meeting audience requirements or never visiting the experiments' target page.

In other words, enabling Support for Dynamic Websites means the Edge Decider, the core feature of Performance Edge, is unable to make any decisions so the SPA snippet adds back in all the data that the Performance Edge microsnippet previously excluded. This results in Performance Edge being reverted into something closer to the full Optimizely Web product than the smart, performant experiment delivery platform clients thought they were purchasing.

Furthermore, while enabling Support for Dynamic Websites eliminates the main benefit of Performance Edge, you also retain Performance Edge’s other limitations and more constrained feature set. While the SPA snippet is downloaded asynchronously and the perceived performance of your site by your visitors will not be impacted, this does have a drastic effect on experiment performance and guarantees visitors will experience flicker on your site when experiments are loaded.

Flicker is when the site’s original content appears briefly before it is removed and the experiment’s variation content is then displayed.


Performance Edge Feature Limitations

At its core, Performance Edge is a stripped down version of the Optimizely Web product. So while Performance Edge has the potential improve the performance and delivery of experiments, it does so at the cost of some features your experimentation program may currently rely on.

If you are unsure if your experimentation program currently utilizes any features below that are not supported by Performance Edge, please reach out to your Cro Metrics' account team.

PCI Compliance

Performance Edge is not PCI compliant and per Optimizely’s documentation should not be run on any checkout/subscription pages.

REST API

Performance Edge does not have a fully functional REST API. This means Cro Metrics' internal tooling that supports experiment creation, experiment code uploading/updating, etc. cannot be leveraged to its fullest extent. This drastically increases experiment setup and development time as our engineers need to handle all steps of the process manually. With more engineering time spent setting up experiments in Optimizely, given an identical experimentation budget, the number of experiments you can run on Performance Edge is lower when compared to Optimizely Web

Integrations/Extensions

Performance Edge does not support any integrations/extensions. Examples of common integrations/extensions are:

  • Adobe, Analytics

  • Contentsquare

  • Google Ads

  • Google Analytics

  • Mixpanel

  • Segment

  • Tealium AudienceStream

If your current Optimizely Web project makes use of these integrations or extensions, you will not be able to use them on Performance Edge and solutions will need to be devised, typically custom-written integrations, and implemented.

Custom Snippets

Performance Edge does not support custom Optimizely Snippets and needs to be deployed in the manner detailed in the Optimizely Performance Edge documentation.

Experiment Types

Performance Edge supports only two of the six types of experiments that Optimizely Web currently offers:

  1. Multi-Page (Funnel) Tests

  2. Multiple Variation (A/B/n) Tests

Performance Edge does not support any of the following types of experiments:

  1. Mutually Exclusive Experiments (Mutual Exclusions)

  2. Multivariate Testing (MVT)

  3. Stats Accelerator

  4. Multi-Armed Bandits

Experiment Results and Segmentation

Performance Edge does not support:

  • Exit Rate metrics

  • Bounce Rate metrics

  • Custom Attributes

Page Triggers

Page Triggers determine when a page is activated by Optimizely. Page triggers are particularly important on SPAs, or dynamic websites, to prevent experiments from activating at the incorrect time or to get experiments to activate at all.

Performance Edge offers a limited set of page triggers:

Fully Supported:

  • Immediately

    • Optimizely will evaluate the experiment as soon as the page loads.

Requires “Support for Dynamic Web Pages” to be enabled:

  • When the URL changes

    • Optimizely triggers activation when a page URL changes, even when the page has not reloaded

  • When the DOM changes

    • Optimizely triggers activation when anything changes in the page DOM changes, even when the page has not reloaded.

  • Manually

    • Tells Optimizely that the activation event will be controlled by code that you place directly onto your site or (more commonly) in your Project JavaScript.

Unsupported:

  • Polling

    • Every 50 milliseconds Optimizely will check for conditions that evaluate as true. Polling will continue for 2 seconds after DOM is ready or 2 seconds after the polling start time, whichever comes last. If no conditions are true after 2 seconds, the experiment will not activate even if the conditions eventually evaluates true.

  • When a callback is called

    • This mode tells Optimizely to listen for a specified event before launching your experiment. This is useful if your experiment is designed to begin when an event occurs, such as a route change in a SPA or the click of a specific button somewhere on your page.

Page Conditions

Page Conditions determine how a page on your site can be targeted for experimentation.

Fully Supported:

  • URL Match

    • Optimizely will compare the current page URL to the target page URL using various URL targeting options such as Simple, Exact, Substring, or Regex matching.

Requires “Support for Dynamic Web Pages” to be enabled:

  • When an element is present

    • Optimizely will use document.querySelectorAll to see if a specified CSS selector exists on the page.

  • When a JavaScript condition is true

    • Allows you to create a custom JavaScript function that is evaluated when a trigger (listed above) for fires. If the JavaScript function returns “true,” then the page condition is satisfied and the page will be activated.

Unsupported:

  • When a callback is called

    • This mode tells Optimizely to listen for a specified event before launching your experiment. This is useful if your experiment is designed to begin with an event occurs, such as a route change in a SPA or the click of a specific button somewhere on your page.

Audience Targeting:

Audience targeting is how you decide who gets to see the experiment.

Fully Supported:

  • Query Parameter

  • Cookies

  • IP Address

  • Device type

  • Browser

  • Geotargeting (Location)

Unsupported:

  • Referrer URL

  • Custom JavaScript

  • Traffic Source

  • Language

  • Ad Campaign

  • New vs Returning Visitors

  • Time of Day

  • Custom Attributes

Advanced Personalization

Performance Edge does not support any of Optimizely’s personalization features including:

  • Adaptive Audiences Add-on

  • Adaptive Recommendations

  • Dynamic Customer Profile

  • External Attributes

  • Personalization Campaigns

  • Uploaded Audiences

  • Behavioral Targeting

  • Third Party Data Audience

  • Campaign Results Page


What Optimizely Recommends

Optimizely doesn’t see Performance Edge as a “one-size-fits-all” tool for replacing Optimizely Web on your site. In Optimizely’s recommended setup, your site should contain at least two different projects:

  1. A Web project targeting

    1. Product/article pages

    2. Checkout/subscription pages

  2. A Performance Edge project targeting

    1. All other pages

However, multiple projects on the same domain results in additional limitations (some of which can be overcome by purchasing additional features from Optimizely such as “Cross-project metric/event tracking”) and further increases program complexity beyond what Performance Edge alone already results in. This can result in addition cost to run your experimentation program or a decrease learnings and/or overall experimentation velocity.


Our Recommendation

If you have a traditional (multi-page) website

Performance Edge can deliver what it promises but not without caveats.

As every client and experimentation program has different needs and goals, it is impossible to offer a “one-size-fits-all” recommendation on Performance Edge. If you are considering purchasing Performance Edge, we recommend consulting with your Cro Metrics' Growth Strategist who can give you specific recommendations based on your overall goals and how the limitations of Performance Edge may or may not impact your program.

If your website is a SPA or has dynamic elements/pages

Performance Edge with Support for Dynamic Websites ultimately ends up being a more expensive version of Optimizely Web with an asynchronous snippet and less features. For this reason, we cannot recommend purchasing it.

Even if Optimizely were to offer Performance Edge as a free, alternative implementation of Optimizely Web, outside of potentially a few very specific edge cases, we would strongly recommend sticking with Optimizely Web.