Releases: configcat/js-sdk
Releases · configcat/js-sdk
v8.0.1
v8.0.0
Please note that this version comes with several breaking changes, so you may need to adjust your code when upgrading, especially if you're using deprecated APIs or a custom logger and/or cache implementation. You can find the detailed list of breaking changes below.
New features and improvements:
- Complete overhaul of SDK logging:
- Simplify the logger interface (
IConfigCatLogger
) to make it easier to write custom implementations/adapters to logger frameworks. - Enable structured logging.
- Include event IDs in log messages to make identification of log events easier.
- Revise log messages and make them consistent across the ConfigCat SDKs.
- Simplify the logger interface (
- Revise caching of downloaded config data:
- Change the cache interface (
IConfigCatCache
, formerlyICache
) to get and set the cache payload as a plain string to make it easier to write custom implementations by removing the burden of data serialization from implementers. - Use a standardized config cache key generation algorithm and cache payload format to allow shared caches to be used by SDKs of different platforms.
- Change the cache interface (
- Revise JSDoc documentation.
- Improve the performance of the "IS (NOT) ONE OF (sensitive)" operators by hashing the value once (configcat/common-js#80).
Bug fixes:
- Fix checks which ensure that
IAutoPollOptions.pollIntervalSeconds
,IAutoPollOptions.maxInitWaitTimeSeconds
andILazyLoadingOptions.cacheTimeToLiveSeconds
settings are in the valid range. (Also, make infinite init wait possible in the case of Auto Polling.) - Fix
... is not a function
bug which can occur in Auto Polling mode, whenIAutoPollOptions.maxInitWaitTimeSeconds
is set to 0.
Breaking changes (listed in the order of expected impact):
- Remove the
createClient
,createClientWithAutoPoll
,createClientWithManualPoll
andcreateClientWithLazyLoad
factory functions. Alternative:getClient
. - Remove all callback-style evaluation methods (e.g.
getValue
,getValueDetails
, etc.) fromIConfigCatClient
. Alternative:get*Async(...).then(result => ...)
- Remove the callback-style
forceRefresh
method fromIConfigCatClient
. Alternative:forceRefreshAsync(...).then(result => ...)
- Remove the
IAutoPollOptions.configChanged
callback. Alternative:options.setupHooks = hooks => hooks.on("configChanged", ...)
. - Changes the type of the
newConfig
argument fromProjectConfig
toIConfig
in theconfigChanged
hook. - Remove the
debug
,info
,warn
anderror
methods fromIConfigCatLogger
and change the signature of thelog
method, which is now the single method that needs to be implemented for custom logging. - Remove the
ICache
interface. Alternative:IConfigCatCache
. - Remove the
getVariationIdAsync
andgetAllVariationIdsAsync
methods fromIConfigCatClient
/ConfigCatClient
. Alternative:getValueDetailsAsync
andgetAllValueDetailsAsync
. - Slightly change the behavior of flag overrides so default value is returned instead of an unsupported value.
- Slightly change the behavior of
getValuesAsync
andgetValuesDetailsAsync
to fail early with exception when these methods are called with invalid parameters:Error
whenkey
is empty.TypeError
whendefaultValue
is not of an allowed type (string
,boolean
,number
,null
andundefined
).
- Remove the
IOverrideDataSource
interface and theFlagOverrides
andMapOverrideDataSource
classes from the public API. - Remove the
ProjectConfig
,RolloutRule
andRolloutPercentageItem
classes from the public API. - Change the type of the
MatchedEvaluationRule
toITargetingRule
andMatchedEvaluationPercentageRule
toIPercentageOption
inIEvaluationDetails
. - Change the algorithm used to generate the config cache key and the format of the cache payload.
v7.0.1
v7.0.0
v6.0.1
v6.0.0
v5.10.0
Adding polyfill for Object.fromEntries to support older browsers.
Adding tests for multiple browsers with different versions.
v5.9.0
Passing the real SDK version to common-js instead of using common-js version.
v5.8.0
v5.7.4
Updating configcat-common
to latest.