All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fix initial config JSON load when auto poll enabled with results from cache.
- Rename
SettingsValue
to correctSettingValue
- Add
getKeyAndValue
missing exception - Improve prerequisite flag evaluation type checks
- Typo fixes
WEB
platform support.
- In case of
WEB
platform the SDK now sends the Etag and SDK info in query parameters.
- Add support for the new Config JSON v6 format: update the config model and implement new features in setting evaluation logic.
- Overhaul setting evaluation-related logging and make it consistent across SDKs.
- SDK key format validation (when client is not set up to use local-only flag overrides).
- Go to the cache in all polling modes instead of using the in memory variable.
- Change the
ConfigCatUser
constructorcustom
parameter type to Map<String, Object> to allow other values than string. - Rename the
matchedEvaluationRule
property tomatchedTargetingRule
and thematchedEvaluationPercentageRule
property tomatchedPercentageOption
inEvaluationDetails
. - Change
Config
model
- Standardized config cache key generation algorithm and cache payload format to allow shared caches to be used by SDKs of different platforms.
getVariationId()
/getAllVariationIds()
methods. Alternative:getValueDetails()
/getAllValueDetails()
logger
package dependency. Switched to simpleprint()
as default.
- Bump to
dio v5.2.0
in order to useDioException
instead of the deprecatedDioError
.
- Bumped dependency versions.
- Set min Dart SDK version to
>=2.19.0
.
- New
getAllValueDetails()
method.
- Deprecated
getVariationId()
andgetAllVariationIds()
methods in favor ofgetValueDetails()
andgetAllValueDetails()
.
- Renamed
mode
configuration option topollingMode
.
- Prevent auto-poll from starting when the SDK is initialized in offline mode.
- Allow offline SDK initialization with an
offline
configuration option.
RolloutPercentageItem
->PercentageRule
- Set the
user
field ofEvaluationDetails
in case of error.
- Hanging due to non-cancelled
Future.delayed
.
- Static analyzer warnings.
setDefaultUser(user)
/clearDefaultUser()
methods to set / remove a default user object used when there's no user passed togetValue()
/getValueDetails()
/getAllValues()
/getAllVariationIds()
methods.setOffline()
/setOnline()
methods to indicate whether the SDK is allowed to make HTTP calls or not. In 'offline' mode the SDK works from the cache only.onClientReady()
/onConfigChanged(Map<string, Setting>)
/onFlagEvaluated(EvaluationDetails)
/onError(String)
hooks. Subscription is possible on client initialization options and on thehooks
property ofConfigCatClient
.getValueDetails()
method to retrieve evaluation details along with the feature flag / setting value. It returns the same details that is passed toonFlagEvaluated(EvaluationDetails)
on each evaluation.
- The static
close()
method was split to an instance levelclose()
method which closes the givenConfigCatClient
and to a staticcloseAll()
method which closes all instantiated client instances. - The
forceRefresh()
method now returns with a result object that indicates whether the refresh succeeded or not. - The TTL of
lazyLoad
and interval ofautoPoll
is compared against a cachedfetchTime
, which allows the SDK not necessarily download a newconfig.json
at each application restart.
- The
onConfigChanged()
hook parameter ofPollingModes.autoPoll
. It was replaced by the newly introducedonConfigChanged(Map<string, Setting>)
hook function which is invoked with each polling mode.
- Replaced the refresh policies construction with a single config service that takes care of the different polling mechanisms, caching, and the synchronization of HTTP requests.
- Send the correct SDK version in HTTP header.
- When the
dataGovernance
parameter wasn't in match with the remote setting, it could have happened that the fetcher downloaded the correctconfig.json
multiple times.
- First official release.
- WIP release.
- WIP release.
- WIP release.
- WIP release.