JavaScript SDK
Javascript-SDK - 6.6.1
Use an updated datafile cache key so the SDK no longer reads a stale or malformed datafile persisted by an older SDK version ( #1175 https //github. com/optimizely/javascript-sdk/pull/1175 ) https //github.
Javascript-SDK - 6.6.0
Holdout Targeted Delivery Exclusion Holdouts can now be configured to exclude Targeted Delivery rules, so users held out of experiments still receive their Targeted Delivery experiences. This gives you a cleaner measure of experiment impact without holding users back from ongoing rollouts.
Javascript-SDK - 6.5.0
Local Holdouts Added support for Local Holdouts, enabling holdout experiments to be scoped to specific feature flag rules rather than applied globally. Local Holdouts let you measure the true incremental impact of individual features by holding out a subset of users from specific rollouts while still serving them other experiences.
Javascript-SDK - 6.4.0
Feature Rollout Added support for Feature Rollouts, a new experiment type combining Targeted Delivery simplicity with A/B test measurement capabilities. Feature Rollouts enable progressive rollouts with full impact analytics, metric tracking, and confidence intervals.
Javascript-SDK - 6.3.1
\#631---january-26-2026 \#changed Updated event retry default config Adjusted default retry configuration for event processing ( #1131 https //github. com/optimizely/javascript-sdk/pull/1131 ) \#bug-fixes Fix UNSTABLE conditionEvaluators option pass custom condition evaluators to decision service ( #1133 https //github.
Javascript-SDK - 6.3.0
\#630---november-19-2025 \#new-features Added Holdouts support Holdouts Feature Experimentation feature is now officially supported. Added configurable prediction endpoint Added ability to configure custom prediction endpoint for CMAB ( #1102 https //github.
Javascript-SDK - 6.2.0
\#620---october-23-2025 \#new-features Added support for Contextual Multi-Armed Bandit (CMAB) Added support for CMAB experiments(Contextual Bandits rules) with new configuration options and cache control. To get decision from CMAB rules, decideAsync and related methods must be used.
Javascript-SDK - 6.1.0
\#610---september-8-2025 \#new-features Added multi-region support for logx events ( #1072 https //github. com/optimizely/javascript-sdk/pull/1072 ) \#performance-improvements Improved performance of variations parsing from datafile ( #1080 https //github.
Javascript-SDK - 6.0.0
\#600---may-29-2025 \#breaking-changes Modularized SDK architecture The monolithic createInstance call has been split into multiple factory functions for greater flexibility and control. Core functionalities (project configuration, event processing, ODP, VUID, logging, and error handling) are now configured through dedicated components created via factory functions, giving you greater flexibility and control in enabling/disabling certain components and allowing optimizing the bundle size for frontend projects.
Javascript-SDK - 5.3.5
\#535---jan-29-2025 \#bug-fixes Rollout experiment key exclusion from activate method( #949 https //github. com/optimizely/javascript-sdk/pull/949 ) Using optimizely.
Javascript-SDK - 5.3.4
\#534---jun-28-2024 \#changed crypto and text encoder polyfill addition for React native ( #936 https //github. com/optimizely/javascript-sdk/pull/936 ) https //github.
Javascript-SDK - 5.3.3
\#533---june-06-2024 \#changed queueMicroTask fallback addition for embedded environments / unsupported platforms ( #933 https //github. com/optimizely/javascript-sdk/pull/933 ) https //github.
Javascript-SDK - 5.3.2
\#532---may-20-2024 \#changed Added public facing API for ODP integration information ( #930 https //github. com/optimizely/javascript-sdk/pull/930 ) https //github.
Javascript-SDK - 5.3.0
\#530---april-8-2024 \#changed Refactor ODP corrections #920 https //github. com/optimizely/javascript-sdk/pull/920 including ODPManager should not be running and scheduling timer if ODP is not integrated to the project (which causes memory leak if one sdk instance is created per request) CreateUserContext should work even when called before the datafile is downloaded and should send the identify ODP events after datafile download completes Other automatic odp events (vuid registration, client initialized) should also be sent after datafile is available and should not be dropped if batching is disabled.
Javascript-SDK - 5.2.1
\#521---march-25-2024 \#bug-fixes Fix empty segments collection is valid ( #916 https //github. com/optimizely/javascript-sdk/pull/916 ) Update vulnerable dependencies ( #918 https //github.
Javascript-SDK - 5.2.0
\#520---march-18-2024 \#new-features Add persistentCacheProvider option to createInstance to allow providing custom persistent cache implementation in react native ( #914 https //github. com/optimizely/javascript-sdk/pull/914 ) https //github.
Javascript-SDK - 5.1.0
\#510---march-1-2024 \#new-features Add explicit entry points for node, browser and react native, allowing imports like import optimizelySdk from '@optimizely/optimizely-sdk/node' , import optimizelySdk from '@optimizely/optimizely-sdk/browser' , import optimizelySdk from '@optimizely/optimizely-sdk/react native' ( #905 https //github. com/optimizely/javascript-sdk/pull/905 ) \#changed Log an error in DatafileManager when datafile fetch fails ( #904 https //github.
Javascript-SDK - 5.0.1
Improved conditional ODP instantiation when odpOptions. disabled true is used ( #902 https //github.
Javascript-SDK - 4.10.0
Add support for configurable closing event dispatcher, and dispatching events using sendBeacon in the browser on instance close ( #876 https //github. com/optimizely/javascript-sdk/pull/876 , #874 https //github.
Javascript-SDK - 4.9.4
Improve OptimizelyConfig class instantiation performance from O(n^2) to O(n) where n = number of feature flags ( #829 https //github. com/optimizely/javascript-sdk/pull/829 ) https //github.
Javascript-SDK - 4.9.2
Add package. json script for running Karma tests locally using Chrome ( #651 https //github.
Javascript-SDK - 4.9.1
January 18, 2022 Fixed typescript compilation issue introduced by 4. 9.
Javascript-SDK - 4.9.0
January 14, 2022 Add a set of new APIs for overriding and managing user-level flag, experiment and delivery rule decisions. These methods can be used for QA and automated testing purposes.
Javascript-SDK - 4.8.0
November 29, 2021 Added a Lite bundle which does not include Data file manager and Event Processor packages. This reduces the bundle size up to 20% and is helpful for some platforms (such as edge service providers) that do not need extended functionality offered by these packages.
Javascript-SDK - 4.8.0-beta.2
November 1, 2021 Removed Client engine validation in the SDK to allow tracking events from new clients without modifying SDK code. https //github.
Javascript-SDK - 4.8.0-beta
October 18, 2021 Added a Lite bundle which does not include Data file manager and Event Processor packages. This reduces the bundle size up to 20% and is helpful for some platforms (such as edge service providers) that do not need extended functionality offered by these packages.
Javascript-SDK - 4.7.0
September 15, 2021 Added new public properties to OptimizelyConfig ( #683 https //github. com/optimizely/javascript-sdk/pull/683 , #698 https //github.
Javascript-SDK - 4.6.2
July 15, 2021 Fixed incorrect impression event payload in projects containing multiple flags with duplicate key rules ( #690 https //github. com/optimizely/javascript-sdk/pull/690 ) https //github.
Javascript-SDK - 4.6.1
July 8, 2021 Bumped event-processor packages to version 0. 8.
Javascript-SDK - 4.6.0
May 27, 2021 Added support for multiple concurrent prioritized experiments per flag ( #664 https //github. com/optimizely/javascript-sdk/pull/664 ) Fixed the issue of forced-variation and whitelist not working properly with exclusion group experiments ( #664 https //github.
Javascript-SDK - 4.5.1
March 2, 2021 Refactored TypeScript type definitions to have OptimizelyUserContext and OptimizelyDecision imported from shared types to provide isolation from internal modules ( #655 https //github. com/optimizely/javascript-sdk/pull/655 ) https //github.
Javascript-SDK - 4.5.0
Introducing a new primary interface for retrieving feature flag status, configuration and associated experiment decisions for users ( #632 https //github. com/optimizely/javascript-sdk/pull/632 , #634 https //github.
Javascript-SDK - 4.5.0-beta
Introducing a new primary interface for retrieving feature flag status, configuration and associated experiment decisions for users ( #632 https //github. com/optimizely/javascript-sdk/pull/632 , #634 https //github.
Javascript-SDK - 4.4.3
Refactored TypeScript type definitions to have OptimizelyOptions imported from shared types to provide isolation from internal modules ( #629 https //github. com/optimizely/javascript-sdk/pull/629 ) https //github.
Javascript-SDK - 4.4.2
In Optimizely class, use any type when assigning the return value of setTimeout . This is to allow it to type check regardless of whether it uses the browser or Node version of setTimeout ( PR #623 https //github.
Javascript-SDK - 4.4.0
Added support sending impression events every time a decision is made ( #599 https //github. com/optimizely/javascript-sdk/pull/599 ) https //github.
Javascript-SDK - 4.4.1
Allowed using --isolatedModules flag in TSConfig file by fixing exports in event processor ( #610 https //github. com/optimizely/javascript-sdk/pull/610 ) Fixed strictNullChecks type errors ( #611 https //github.
Javascript-SDK - 4.3.3
Exported OptimizelyVariable , OptimizelyVariation , OptimizelyExperiment , OptimizelyFeature , UserProfileService , and UserProfile types from TypeScript type definitions ( #594 https //github. com/optimizely/javascript-sdk/pull/594 ) https //github.
Javascript-SDK - 4.3.2
Fixed return type of getAllFeatureVariables method and dispatchEvent method signature of EventDispatcher interface in TypeScript type definitions ( #576 https //github. com/optimizely/javascript-sdk/pull/576 ) Don't log an error message when initialized with sdkKey , but no datafile ( #589 https //github.
Javascript-SDK - 4.3.1
Exported OptimizelyConfig and UserAttributes type in TypeScript type definitions ( #587 https //github. com/optimizely/javascript-sdk/pull/587 ) https //github.
Javascript-SDK - 4.3.0
Added support for version audience evaluation ( #517 https //github. com/optimizely/javascript-sdk/pull/571 ) Add datafile accessor ( #564 https //github.
Javascript-SDK - 4.2.1
Remove incorrect warning about invalid variation ID when user not bucketed into experiment or feature rollout ( #549 https //github. com/optimizely/javascript-sdk/pull/549 ) https //github.
Javascript-SDK - 4.2.0
Better offline support in React Native apps Persist downloaded datafiles in local storage for use in subsequent SDK initializations ( #430 https //github. com/optimizely/javascript-sdk/pull/430 ) Persist pending impression & conversion events in local storage ( #517 https //github.
Javascript-SDK - 4.1.0
Added support for JSON feature variables new methods getFeatureVariableJSON and getAllFeatureVariables ( #467 https //github. com/optimizely/javascript-sdk/pull/467 , #470 https //github.
Javascript-SDK - 4.0.0
Removed lodash dependency ES module entry point for the browser - "module" property of package. json points to dist/optimizely.
Javascript-SDK - 4.1.0-beta
Added support for JSON feature variables new methods getFeatureVariableJson and getAllFeatureVariables ( #467 https //github. com/optimizely/javascript-sdk/pull/467 , #470 https //github.
Javascript-SDK - 4.0.0-rc.2
Allow multiple instances to be created from the same datafile object ( #462 https //github. com/optimizely/javascript-sdk/pull/462 ) https //github.
Javascript-SDK - 4.0.0-rc.1
ES module entry point for the browser - "module" property of package. json points to dist/optimizely.
Javascript-SDK - 4.0.0-alpha.1
Removed Promise polyfill from browser entry point ( 417 https //github. com/optimizely/javascript-sdk/pull/417 ) https //github.
Javascript-SDK - 3.6.0-alpha.1
Changed track() to log a warning instead of an error when the event isn't in the datafile ( #418 https //github. com/optimizely/javascript-sdk/pull/418 ) https //github.
Javascript-SDK - 3.5.0
Fixed default event dispatcher not used in React Native entry point ( #383 https //github. com/optimizely/javascript-sdk/pull/383 ) Fixed errors in getOptimizelyConfig TypeScript type definitions ( #406 https //github.
Javascript-SDK - 3.4.1
Added getOptimizelyConfig and related types to TypeScript type definitions( #390 https //github. com/optimizely/javascript-sdk/pull/390 ).
Javascript-SDK - 3.4.0
Fixed incorrect payload for decision notification triggered by calling getVariation on a feature test in a mutex group( #375 https //github. com/optimizely/javascript-sdk/pull/375 ) Added a new API to get project configuration static data.
Javascript-SDK - 3.4.0-beta
Fixed incorrect payload for decision notification triggered by calling getVariation on a feature test in a mutex group( #375 https //github. com/optimizely/javascript-sdk/pull/375 ) Added a new API to get a project configuration static data.
Javascript-SDK - 3.3.2
Fixed error message that was being logged when a user was bucketed into empty space in an experiment or a mutual exclusion group. This is not an error.
Javascript-SDK - 3.3.1
Fixed full screen error dialog appearing in local development for React Native apps when using the default logger. We now provide a default logger for React Native that does not call console.
Javascript-SDK - 3.3.0
Added support for event batching via the event processor. Events generated by methods like activate , track , and isFeatureEnabled will be held in a queue until the configured batch size is reached, or the configured flush interval has elapsed.
Javascript-SDK - 3.3.0-beta
Added support for event batching via the event processor. Events generated by methods like activate , track , and isFeatureEnabled will be held in a queue until the configured batch size is reached, or the configured flush interval has elapsed.
Javascript-SDK - 3.2.2
Dont use pendingEventsDispatcher with user defined eventDispatcher ( #289 https //github. com/optimizely/javascript-sdk/issues/289 ) Note This was supposed to be released in 3.
Javascript-SDK - 3.2.0
Added support for automatic datafile management ( #261 https //github. com/optimizely/javascript-sdk/pull/261 ), ( #266 https //github.
Javascript-SDK - 3.2.0-beta
Clear timeout created in onReady call for timeout promise as soon as project config manager's ready promise fulfills Added 60 second timeout for all datafile requests Updated datafile request polling behavior Start update interval timer immediately after request When update interval timer fires during request, wait until request completes, then immediately start next request Update TypeScript definitions to account for new methods ( onReady , close ) and new properties on object accepted by createInstance ( datafileOptions , sdkKey ) https //github. com/optimizely/javascript-sdk/releases/tag/v3.
Javascript-SDK - 3.2.0-alpha
Added support for automatic datafile management To use automatic datafile management, include sdkKey as a string property in the options object you pass to createInstance . When sdkKey is provided, the SDK instance will download the datafile associated with that sdkKey immediately upon construction.
Javascript-SDK - 3.1.0
Introduced Decision notification listener to be able to record Variation assignments for users activated in an experiment. Feature access for users.
Javascript-SDK - [3.1.0-beta1] - March 6th, 2019
New APIs for setting logger and logLevel on the optimizelySDK singleton ( #232 https //github. com/optimizely/javascript-sdk/pull/232 ) logger and logLevel are now set globally for all instances of Optimizely.
Javascript-SDK - [3.0.1] - February 21, 2019
Expose default loggers , errorHandlers , eventDispatcher and enums on top level require. createLogger and createNoOpLogger are available as methods on optimizelySdk.
Javascript-SDK - 3.0.0
The 3. 0 release improves event tracking and supports additional audience targeting functionality.
Javascript-SDK - 2.3.1
fix(bundling) Publish the unminified UMD bundle along with the minified one. ( #187 https //github.
Javascript-SDK - 2.3.0
Allow sticky bucketing via passing in attributes. $opt experiment bucket map , this more easily allows customers to do some async data fetching and ensure a user gets a specific variation.
Javascript-SDK - 3.0.0-rc
This is the release candidate version of the 3. 0 SDK Support for boolean combinations of audiences on experiments ( #175 https //github.
Javascript-SDK - 3.0.0-alpha
This is the alpha release of the 3. 0 SDK, which includes a number of improvements to audience targeting Support for number-valued and boolean-valued attributes ( #174 https //github.
Javascript-SDK - 2.2.0
Track and activate should not remove null attributes ( #168 https //github. com/optimizely/javascript-sdk/pull/168 ) Track attributes with valid attribute types ( #166 https //github.
Javascript-SDK - 2.1.3
Send all decisions for the same event in one snapshot. ( #155 https //github.
Javascript-SDK - 2.1.2
https //github. com/optimizely/javascript-sdk/releases/tag/v2.
Javascript-SDK - 2.0.5
https //github. com/optimizely/javascript-sdk/releases/tag/v2.
Javascript-SDK - 2.1.1
https //github. com/optimizely/javascript-sdk/releases/tag/v2.
Javascript-SDK - 2.0.4
https //github. com/optimizely/javascript-sdk/releases/tag/v2.
Javascript-SDK - 2.1.0
Introduces support for bot filtering. ( #99 https //github.
Javascript-SDK - 2.0.1
April 16th, 2018 Improve browser entry point by pointing to the browser index file instead of the webpack-compiled bundle. ( @DullReferenceException https //github.
Javascript-SDK - 2.0.0
April 11th, 2018 This major release of the Optimizely SDK introduces APIs for Feature Management. It also introduces some breaking changes listed below.
Javascript-SDK - 2.0.0-beta1
March 29th, 2018 This major release of the Optimizely SDK introduces APIs for Feature Management. It also introduces some breaking changes listed below.
Javascript-SDK - 1.4.3
Default skipJSONValidation to true Bump optimizely-server-sdk to version 1. 3.
Javascript-SDK - 1.4.1
Switched to karma/browserstack for cross-browser testing Removed es6-promise Bump optimizely-server-sdk to version 1. 3.
Javascript-SDK - 1.1.0
Add global variable name export for use in non-CommonJS environments Remove redundant lodash core dependency to reduce bundle bloat https //github. com/optimizely/javascript-sdk/releases/tag/v1.
Javascript-SDK - 1.0.0
Introduce support for Full Stack projects in Optimizely X with no breaking changes from previous version. Introduce more graceful exception handling in instantiation and core methods.
Javascript-SDK - 0.1.3
Add environment detection to event builder so it can distinguish between events sent from node or the browser. https //github.
Javascript-SDK - 0.1.4
Add functionality for New Optimizely endpoint. https //github.
Javascript-SDK - 0.1.2
Added missing param to tell log endpoint we are sending a CORS request https //github. com/optimizely/javascript-sdk/releases/tag/v0.
Javascript-SDK - 0.1.1
Remove percentageIncluded field from JSON schema, which is not needed. https //github.
Javascript-SDK - 0.1.0
Beta release of the Javascript SDK for our Optimizely testing solution https //github. com/optimizely/javascript-sdk/releases/tag/v0.