GuidesAPI Reference
Submit Documentation FeedbackJoin Developer CommunityOptimizely GitHubOptimizely NuGetLog In

Documentation Changelog

Welcome to the changelog for the Optimizely X Full Stack 3.x documentation!

Latest Full Stack documentation changes

April 1, 2020

  • Release of Optimizely Agent, which enables users to run Optimizely as a service in a container. Agent provides equivalent functionality as the Full Stack SDKs via an HTTP API.

Full Stack SDK changelogs

This table lists the GitHub changelog URLs for the Full Stack SDKs.

January 2020

January 31, 2020

  • Added docs pages to each SDK Reference Guide for OptimizelyConfig. OptimizelyConfig enables developer access to project configuration data within the "datafile". It extends public APIs that define data models and access methods, which clients can use to access project configuration data. See OptimizelyConfig for Javascript as an example.

December 2019

December 12, 2019

November 2019

November 25, 2019:

  • Added quickstart guides in C#, Go, Java, JavaScript (Browser), JavaScript (Node), JavaScript (React), PHP, Python, Ruby, and Swift. View them here.

October 2019

October 30, 2019:

October 29, 2019:

September 2019

September 27, 2019:

September 17, 2019:

  • Separate reference guides for each SDK. This allows us to document each SDK idiomatically to provide more detailed, helpful guides.
  • General user guides: "Setup," "Roll out features," "Run experiments," and "Best practices" describe concepts and user documentation for Optimizely Full Stack.
  • API methods: Get Enabled Features and Is Feature Enabled are now documented in each SDK reference guide, alongside the relevant SDK.

May 2019



Customers who currently use raw data from Optimizely's Data Export and want to upgrade to Full Stack v3.0 must also upgrade to the new Results Export functionality. Contact Optimizely Support to get access to Results Export.

The Easy Event Tracking functionality included in the Full Stack v3.0 release changes the results of the Optimizely Data Export. Conversion events no longer contain experiment assignment information, and this affects the ease of querying attribution data in the raw data export.

See Breaking Changes in an SDK's changelog for more information.

May 30:

  • Release of the Optimizely X iOS Swift SDK 3.1.0-beta for iOS mobile applications. The iOS Swift SDK 3.1.0-beta is written completely in Swift and uses all of its native types and patterns. By taking full advantage of the Swift language, it is safer, faster, and more compact compared to the 3.0.x and earlier Optimizely iOS SDKs, which are written in Objective-C.
  • Release of the Optimizely X JavaScript 3.2.0 SDK with automatic datafile management (ADM) functionality that dynamically manages datafiles for you. With ADM, you only need to pass the SDK key value to instantiate a client. Whenever the experiment configuration changes, the SDK automatically handles datafile updates for you.

May 16: Added a new topic to describe how you can update datafiles automatically. Note: This beta functionality is available only for JavaScript SDK 3.2.0.

May 6: Added information for the new 3.1.x DECISION notification listener to Register notification listeners that replaces the ACTIVATE listener. The DECISION listener triggers a callback with the decision type, associated decision information, user ID, and attributes and integrates with the Activate, Get Enabled Features, Get Feature Variable, or Is Feature Enabled APIs.

The DECISION notification listener is supported in all 3.1.x SDKs: Android, C#, Java, JavaScript, Node, Objective-C, PHP, Python, Ruby, and Swift.



The ACTIVATE notification listener is deprecated in Full Stack SDKs 3.1.x and later. You must use the DECISION listener.

April 2019

April 19: Removed support for the cURL-based event dispatcher for PHP SDK v3.x due to a security vulnerability. For more information, see our Security Bulletin ID: opt-2019-0001 and the 3.0.1 entry in the PHP changelog above.

April 1: Added 3.1.0 JavaScript and Node examples that demonstrate how to use two new methods, setLogger() and setLogLevel(). See Configure the logger in JavaScript SDK 3.1.x and above. For more information, see the 3.1.0 entry in the JavaScript SDK changelog above.

March 2019

March 20: Added 3.0.1 JavaScript and Node examples to these topics:

For more information, see the 3.0.1 entry in the JavaScript SDK changelog above.

March 11: This Full Stack v3.0 release contains Flexible Targeting and Easy Event Tracking functionality that applies to these SDKs: PHP and Ruby. See an SDK's changelog for information about new features, breaking changes, and bug fixes.

March 5: This Full Stack v3.0 release contains Flexible Targeting and Easy Event Tracking functionality that applies to these SDKs: C# and Python. See an SDK's changelog for information about new features, breaking changes, and bug fixes. Other SDKs will be updated to support these enhancements at a future date.

February 2019

Feb 13: The Full Stack v3.0 release contains Flexible Targeting and Easy Event Tracking functionality that applies to these SDKs: Android, Java, JavaScript, and Objective-C. See an SDK's changelog for information about new features, breaking changes, and bug fixes. Other SDKs will be updated to support these enhancements at a future date.

Flexible Targeting

Full Stack v3.0 expands the Audience Match Types functionality by adding support for eight new match types. In addition to String equals, this version includes:

  • has any value
  • String contains substring
  • Boolean is false
  • Boolean is true
  • Number equals
  • Number is less than
  • Number equals
  • Number is greater than

Full Stack v3.0 also enhances the audience targeting functionality for experiments and rollouts by supporting two new types of audience combination options. In addition to Match any audience, this version includes:

  • Match all audiences
  • Custom combination defined as a JSON object using the Code Mode editor

For more information, see:

Easy Event Tracking

Easy Event Tracking updates the behavior of the Full Stack v3.0 Track API. In previous versions of the SDK, calling Track caused the SDK to evaluate variation assignment for experiments with metrics built using the tracked event. The SDK would send the event only if the user passed audience targeting and traffic allocation for each experiment. In v3.0, calling Track now always causes an event to be sent, assuming the event is defined in your project's datafile. Optimizely's backend functionality will determine whether the user was previously assigned to a variation for experiments tracking the event. This has several consequences:

  • Tracking events is now easier. We no longer require that you pass attributes to the Track API in order for events to fire. This simplifies instrumentation, decreasing the amount of state that must be shared across different parts of your application(s).
  • The v3.0 Track changes may have performance implications for your application(s). If you have existing Track calls that were not dispatching events because users were failing variation assignment, this change will cause those events to fire, which will cause an increase in outbound network traffic. We advise customers in this situation to evaluate the impact of the increase in outbound events.
  • Active experiments: Because Track calls are more likely to succeed in v3.0, adopting the updated Track behavior may cause conversion rate of in-flight experiments to increase. If you upgrade from v2.1 to v3.0 while an experiment is running, be aware that this may cause your metrics to change. We advise customers in this situation to evaluate the appropriate action. For example, if you expect this change will cause you to start recording events that were previously being dropped, you may want to reset results.

See also the Event API documentation.

January 2019

Jan 30: Added React SDK link to Demo apps and SDK wrappers

Jan 16: Added functionality to retain a preferred language display for the multi-language code samples (aka sticky code examples) in this documentation. Click a language (for example, JavaScript) in any code block to set it as the global sticky language for all applicable code blocks. Reset the current global sticky language by choosing another language.

Jan 4: Released the revised Full Stack 2.x developer documentation that includes updated content and a revised structure.

November 2018

Nov 27: Added a new section Implement an asynchronous service in JavaScript SDK 2.3.0 to Implement a User Profile Service.

Nov 16: Published updated documentation for the Full Stack 3.0 Early Access release, which includes the enhanced Audience Match Types functionality. For more information, see Full Stack v3.0: Early Access [link deprecated]. To join the Early Access program, contact your Optimizely Customer Support representative.

October 2018

Oct 31: Added a new topic Use the Full Stack REST API.

September 2018

Sept 21: Updated 101 code samples.

Sept 14: Updated information for the nine Full Stack SDK API in API Reference.

August 2018

Aug 31: Updated 94 code samples.

Aug 16: Initial release of the 2.1 documentation.