Version 7

Using experience metadata returned by Experience API

Major Changes

  • Introduces using the Experience API's returned experience data to select the appropriate experience and variant when using the Shared or JS SDK.

    • This change significantly streamlines architectures other outside of web client-side-rendered React by allowing you to rely on the Experience API's response and declarative methods to select the Experience variants to render, rather than having to determine this yourself by replicating our React SDK code

    • The React, Next.js and Gatsby SDKs default to using the API response to select the correct experience and variant. To ensure compatibility with content sources that do not yet have Ninetailed Experiences IDs served over the Experience API, you should leverage the useSDKEvaluation property on the Ninetailed instance

  • Support for React Native through:

    • Removing incompatible polyfills (also a 33% reduction in package size 📉)

    • Ability to pass a custom storage and request context implementation on React and JavaScript SDKs

  • [BREAKING] profile is no longer a property of Ninetailed class instances or <NinetailedProvider> components.

Minor Changes


  • Adds a second configuration parameter to the Privacy Plugin to indicate what events and behaviours should be permissible even after end-user consent is provided. Previously, the Privacy Plugin enabled all events and behaviours after consent.

  • Adds a new mapCustomExperienceAsync method to the Contentful Utils library that supports asynchronous operations in the variant mapping function.

  • 7.7.2

    • Fixes an issue with the Privacy Plugin that could cause the second configuration parameter to be ignored when reloading a page

  • 7.7.1

    • Resolves an issue related correctly propagating the installed version of the Preview Plugin


  • Adds the useSDKEvaluation to toggle how Experience variant selection is controlled. Variant selection using experience data from Experience API responses has been moved to the JavaScript SDK from the React SDK. Additionally, API-driven experience and variant selection replaces SDK-driven selection as the default.

    • Implementations using content sources that whose Experiences and Audiences are not indexed by the Experience API will need to designate useSDKEvaluation: true in the Ninetailed instance configuration options until their experience data are served over the Experience API. Nearly all Ninetailed users should leave this option unspecified to use the default of useSDKEvaluation: false

  • Adds onSelectVariant to the Ninetailed instance. This is a significant improvement to developer experience for implementing Ninetailed in non-React builds and ESR/SSR runtimes. Additionally, the React SDK has been updated to use this method internally.

  • Adds the onRouteChange configuration option to the Next.js and Gatsby SDKs, allowing for declarative customization of Ninetailed route change events called within these frameworks

  • Adds the batch method to the Ninetailed instance

  • Adds the EventBuilder class and eventBuilder class instance to the Ninetailed instance

  • 7.6.1

    • Upgrades a dependency to mitigate a Regex security issue flagged by a thrid party


  • Adds a new onInitProfileId configuration option for Ninetailed instances.

  • 7.5.3

    • Fixed plugins not sending impression events for empty variants

  • 7.5.2

    • Typing for Ninetailed instance corrected

    • Preview Plugin uses an ExposedAudienceDefinition type for the audiences parameter

  • 7.5.1

    • <MergeTag> components now accept a fallback property


  • Adds a timeout option to all Node.js SDK requests


  • Adds a getProfile method to instances of NinetailedApiClient. This allows SDKs built on top of our shared SDK, like the Node.js SDK, to get profiles without having to send track or identify events


  • Adds the component event option to allowedEvents of the Privacy Plugin

Last updated