v10.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.