JavaScript changelog

2020-11-20: V5.0.0

Breaking changes:

  • Configurations were eliminated, please use flags instead:

    • new Configuration("string") ⇒ new RoxString("string")

    • new Configuration(number) ⇒ new RoxNumber(number)

    • new Configuration(false/true) ⇒ new Flag(false/true)

  • Variant changed to RoxString

    • new Variant("defaultStr", ["str1", "str2"]) ⇒ new RoxString("defaultStr", ["str1", "str2"])

  • rox-browser size reduced

    • The rox-browser SDK size was minimized by removing pollyfill and some cleanups To give you more control, axios and eventsource were also removed from the bundle. axios will have to be added as a dependency if you currently don’t have it. eventsource is used for push notification. This SDK feature won’t work if it is missing; to enable it add it as a dependency.

  • Default Freeze level was changed to 'none'

    • In order to maintain the old behavior please add to your setup options object { freeze: 'untilLaunch' }. If there’s no options object currently, add it to your setup call: Rox.setup(<app_key>, { freeze: 'untilLaunch'})

  • Rox.dynamicPropertyRuleHandler moved to options

    • In order to maintain the old behavior please remove Rox.dynamicPropertyRuleHandler and instead, add it to your setup options object { dynamicPropertyRuleHandler: <handler>} If there’s no options object currently, add it to your setup call: Rox.setup(<app_key>, { dynamicPropertyRuleHandler: <handler> })

  • functions input validations

    • dynamicApi and flags constructions were added as well as some trivial parameters validation for wrong types. For example: new RoxString(false) will raise an Error of wrong default type (default value of RoxString should be a string). Rox.dynamicApi.value(0, 'defaultStr', ['str2', 'str3']) will raise an Error of wrong flag name (name should always be a string)

  • Can use register without a namespace:

    • register(container) will register the container under an empty string namespace (duplicate namespaces are still not allowed)

Fixes and Additions:

  • Added a User Space Error handling

    • It is recommended to wrap all handlers used in Rox platform (setCustomProperty, impressionHandler, ConfigurationFetchedHandler, dynamicPropertyRuleHandler) with try-catch in order to be in the right context. In case there will be an uncaught Error, it will reach the Rox.setUserspaceUnhandledErrorHandler handler. You can use this handler for debugging, or for further error handling an Error thrown within this handler will be written to log. If no setUserspaceUnhandledErrorHandler was set, the default behavior, errors will be written to the log.

  • analytics / impressions

    • Starting with SDK 5, flags will always send impressions after setup (not only when targeting is enabled on the dashboard)

  • impression handler parameters change

    • As experiments were removed, impressions handler signature was changed from (reportingValue, experiment, context) to (reportingValue, context). reportingValue now also has a targeting (boolean) property, indicating the flag was evaluated by using the dashboard configurations.

  • dynamicApi uses freeze like staticApi

    • Starting with SDK 5 dynamicApi calls freeze flags even if no dashboard configurations were set (prior to SDK 5, local default value didn’t trigger a freeze, only dashboard configurations did).

2020-07-21: V4.9.16

  • Remove use of eval() to satisfy strict Content Security Policy (CSP)

2020-06-09: V4.9.7

  • rox-ssr: Add compatibility to server-side webpack

2020-03-10: V4.9.0

  • Upgrade to latest axios (0.19.2)

  • rox-react-native: Replace deprecated ReactNative.AsyncStorage with @react-native-community/async-storage

  • Clean-up bundles (less files are included)

2020-02-18: V4.8.10

  • Replace logger to fix issues on React Native (iOS)

2019-12-03: V4.8.6

  • Fixed potential issue when analytic server is unreachable

  • Fixed compatibility with Roxy

  • Fixed undefined error when no options passed to rox-ssr

2019-11-29: V4.8.5

  • Fixed TypeScript signatures in rox-ssr

  • Added support for es5/IE11 to rox-ssr

2019-11-22: V4.8.4

  • Adding rox-ssr SDK

2019-11-22: V4.8.3

  • Internal changes to prepare for rox-ssr

2019-09-05: V4.8.0

  • ReactNative: Adding ability to replace default storage (see AsyncStorage)

  • Browser: use the minified version in package.json

  • Improved error reporting

  • Upgraded axios version

2019-08-07: V4.7.1

  • Fixed push updates for React Native

2019-07-16: V4.7.0

  • API version 1.8.0

  • Values are base64 - fixing " and () bug

  • Changes to API calls, using Cloudfront

2019-06-06: V4.5.3

  • Remove check for signed date in signature verification

  • [Alpha] Add flag.explainLastResult to rox-browser

  • removed async func

2019-04-10: V4.5.2

  • Prevent duplicate calls to fetch configuration on Rox.setup (was caused by custom properties)

  • Removing various polyfills (including promise)

  • Make Overrides screen case insensitive

2019-01-21: V4.5.1

  • Fixed compatibility with IE (Object.assign, Array.filter)

2019-01-16: V4.5.0

  • Add an option to override the default SDK logger (see JavaScript (Browser) API - setup for documentation)

  • Analytics will use stickiness property for distinctness

2018-12-26: V4.4.0

2018-12-18: V4.3.1

  • Variants in Dynamic API is open for any value from the dashboard

  • Support for old Node version (v4.8.3)

  • Dynamic API updates dashboard on new flags

2018-12-03: V4.3.0

  • Fix for view controller when namespace doesn’t exist

  • Added Dynamic API

2018-11-12: V4.2.2

  • Security enhancement - verify the signature of local/remove feature flags configuration

  • Fixed push endpoint

2018-11-08: V4.2.1

  • fixed node js Rox.setup should resolve the promise only after configuration is fetched

2018-11-06: V4.2.0

  • Added push updates via Server-Sent Events (closed for beta customers)

2018-08-20: V4.1.4

  • Remove TTL on local storage client_data

2018-08-20: V4.1.3

  • Fixed missing dependencies on nodejs package

2018-08-20: V4.1.2

  • Shrink package size by 70%

2018-08-20: V4.1.1

  • Fixed issue with crypto on edge browser

2018-08-20: V4.1.1

  • Scheduled Released

  • Encrypted in operator - you can now use in operator and the data will be passed to the clients encrypted

  • API version 1.7.0

2018-08-09: V4.0.1

  • Adding support for old browsers (without crypto)

2018-08-06: V4.0.0

  • Impression analytics - reporting flag impression to CloudBees Feature Flags servers

  • DisableNetwork - ability to disable automatic fetching of data upon Rox.setup (for SSR)

  • Support for context (for SSR)

2018-08-02: V3.2.5

  • Adding support for SSR release (Isomorphic)

2018-07-31: V3.2.4

  • Fix in react native

2018-07-29: V3.2.0

  • Adding support to get labels in impression handler

  • Adding support for SSR release (Isomorphic)

  • Support for Roxy

2018-07-04: V3.1.3

Support for Fuse-Box

2018-06-28: V3.0.0

flag dependency support

2018-05-01: V2.2.1

  • Added support for Tizen

2018-03-12: V2.1.2

  • Internal changes for better error reporting

  • Embedded Experiments support

2018-01-03: V2.0.2

  • Internal changes to support react native release

  • Flag freeze level - allow specifying the freezing level of a flag, till this version the flag value remained consistent from the time it was evaluated till the application goes into the foreground or a unfreeze was called. Now have three different freeze level:

    • .none - The flag is constantly evaluated every time it is called

      • .untilLaunch (default) - Once the flag is evaluated its value is persistent till the app is terminated You can control the value of a specific flag via its constructor or globally by using options.defaultFreezeLevel

2017-11-19: V1.2.7

  • Security enhancement - verify app key matched configured one

  • Moving from webpack to rollup

  • Redesign to overrides API

2017-10-03: V1.2.2

  • Fix - Add cache url and cache miss url to api request

2017-10-01: V1.2.1

  • Add unfreeze API

  • Remove sync method

2017-09-26: V1.2.0

  • Support for computed custom property without context

  • Fix - long query names cause disconnection with amazon s3 objects

2017-09-07: V1.0.2

  • Split node.js from browser