kameleoon_client_flutter 3.5.0
kameleoon_client_flutter: ^3.5.0 copied to clipboard
Our SDK gives you the possibility of running experiments and activating feature flags on all platforms targeted by the Flutter application framework.
Changelog #
All notable changes to this project will be documented in this file.
3.5.0 #
Features #
- Upgraded Flutter SDK to use
iOS SDK 4.21.1/Android SDK 4.20.2/JS/TS SDK 4.9.0 -
- In the Web integration, the
KameleoonClientnow starts initializing immediately upon creation. Previously, initialization only began after calling therunWhenReadymethod. initializes only afterrunWhenReadymethod.
- In the Web integration, the
- Added support for a New/Returning visitor breakdown filter in reports.
- Refactored targeting condition logic (remote data requests are now optional) for:
- Time elapsed since first/last visit
- New or returning visitors
- Total number of visits
- Number of visits today
- Added support for 304 (Not Modified) responses from the SDK config service to avoid redundant updates and reduce traffic when the configuration hasn't changed.
- Added support for using a Custom Data value for traffic bucketing instead of the default visitor code. Learn More.
- Introducing a fallback configuration mechanism via the
defaultDataFileparameter. If no cached configuration is available, the SDK immediately uses the provided default. For version control, the SDK prioritizes the default configuration if itsdateModifiedtimestamp is more recent than the cached version. - Added the
evaluateAudiencesmethod. This method iterates over all Audiences Explorer segments, evaluates each one, and tracks the segments for which the visitor is targeted using theTARGETINGSEGMENTevent. - Introduced the new
getDataFilemethod. This method returns the current SDK configuration (also known as the data file) used for evaluation and targeting. It is not intended for production use to fetch variations for every feature flag in the returned list, as it is not optimized for performance. For that purpose, usegetVariationsinstead.getDataFileis mainly useful for debugging or QA, for example to let internal users manually select a variant for a specific feature flag in production. - Added a new property
nametoVariation, representing the name of the variation. - Added an
overwriteflag toCustomData, used as theoverwriteparameter during tracking. CustomDatacan now be created using aname, in addition to the existing method of using anindex.
Bug fixes #
- Changed the order in which conversion and experiment events are sent. This may lead to more accurate visit-level experiment reporting.
3.4.0 #
Features #
- Upgraded Flutter SDK to use
iOS SDK 4.13.2/Android SDK 4.12.0 - Added support for new conditions:
- Exclusive Campaign
- Experiment
- Personalization
3.3.0 #
Features #
- Upgraded Flutter SDK to use
iOS SDK 4.13.1/Android SDK 4.11.1/JS/TS SDK 4.9.0 - Added new optional parameters
negativeandmetadatato thetrackConversionmethod. - Added new optional parameter
metadatato theConversiondata constructor. - Added support for Contextual Bandit evaluations. Calling
getRemoteVisitorDatawith thecbs=trueflag is required for this feature to function correctly. - Added new configuration parameter
networkDomaintoKameleoonClientConfig. This parameter allows specifying a custom domain for all outgoing network requests. - Added SDK support for Mutually Exclusive Groups. When feature flags are grouped into a Mutually Exclusive Group, only one flag in the group will be evaluated at a time. All other flags in the group will automatically return their default variation.
- Added SDK support for holdout experiments. Visitors assigned to a holdout experiment are excluded from all other rollouts and experiments, and consistently receive the default variation. For visitors not in a holdout experiment, the standard evaluation process applies, allowing them to be evaluated for all feature flags as usual.
- Added the
setForcedVariation()method. This method allows explicitly setting a forced variation for a visitor, which will be applied during experiment evaluation. - Added support for simulated variations. The feature is available only on Web.
- Compression has been added to the Conversions list. This enhancement prevents unchecked growth and improves the speed of visitor synchronization with local storage. The feature is available only on iOS and Android.
Bug fixes #
- Resolved an issue where CustomData values were not applied correctly for targeting.
3.2.1 #
Bug fixes #
- Resolved an issue where the SDK could crash during prolonged application initialization on Android devices.
3.2.0 #
Features #
- Upgraded Flutter SDK to use
iOS SDK 4.7.0/Android SDK 4.5.0/JS/TS SDK 4.2.3 - Introduced new evaluation methods for clarity and improved efficiency when working with the SDK:
- These methods replace the deprecated ones:
- Introduced a new
visitorCodeparameter toRemoteVisitorDataFilter. This parameter determines whether to use thevisitorCodefrom the most recent previous visit instead of the currentvisitorCode. When enabled, this feature allows visitor exposure to be based on the retrievedvisitorCode, facilitating cross-device reconciliation. Default value of the parameter istrue. - Mapping identifier is now persistent, enabling the assigned variation for a visitor to be retained when merging sessions between anonymous and registered users.
- A new version of the
isFeatureActivemethod now includes an optionaltrackparameter, which controls whether the assigned variation is tracked (default:true). - Enhanced logging:
- Introduced log levels:
noneerrorwarninginfodebug
- Added support for custom logger implementations.
- Introduced log levels:
- Enhanced tracking to consolidate multiple requests into a single one, combining visitor information and sending it once per interval.
- Added a new variation of the
flushwithinstantparameter. If the parameter's value istruethe visitor's data is tracked instantly. Otherwise, the visitor's data will be tracked with the next tracking interval. Default value of the parameter isfalse. - Added new configuration parameter
trackingIntervalMillisecondstoKameleoonClientConfig, which is used to set interval for tracking requests. Default value is1000milliseconds. - Added the
getVisitorCodemethod, which returns the unique visitor code used withinKameleoonClient.
3.1.1 #
Bug fixes #
- Addressed an issue preventing the SDK from compiling when building the project with JDK 17.
3.1.0 #
Features #
- The minimum supported Android version for the SDK has been designated as API level 21. This implies that the SDK is compatible with devices running Android 5.0 (Lollipop) and above. By setting the minimum supported version to API level 21, the SDK ensures compatibility with a wide range of Android devices, allowing developers to target a significant portion of the Android user base.
3.0.0 #
Breaking changes #
- Removed the
visitorCodeparameter from all methods that accepted it. You must now specify the visitor code during initialization. As a result, aKameleoonClientinstance only works for a single visitor: - Removed all deprecated methods and exceptions related to experiments:
triggerExperimentgetVariationAssociatedData(obtainVariationAssociatedData)getExperimentList(obtainExperimentList)getExperimentListForVisitor(obtainExperimentListForVisitor)ExperimentConfigurationNotFoundNotTargetedNotAllocatedSiteCodeDisabled
- Changed the following classes, methods, fields and exceptions:
- Classes:
- Renamed
KameleoonConfiguratontoKameleoonClientConfig. - Renamed enum values of
Devicesclass:Devices.PHONErenamed toDevices.phoneDevices.TABLETrenamed toDevices.tabletDevices.DESKTOPrenamed toDevices.desktop
- Renamed enum values of
Browsersclass:Browsers.CHROMErenamed toBrowsers.chromeBrowsers.INTERNET_EXPLORERrenamed toBrowsers.internetExplorerBrowsers.FIREFOXrenamed toBrowsers.firefoxBrowsers.SAFARIrenamed toBrowsers.safariBrowsers.OPERArenamed toBrowsers.operaBrowsers.OTHERrenamed toBrowsers.other
CustomDatanow accepts a list of strings, instead of a single string, for enhanced flexibility and usability.
- Renamed
- Methods:
- Removed
obtainFeatureVariable. - Removed
retrieveDataFromRemoteSource. - Removed
getVisitorCode. - Renamed
getFeatureAllVariablestogetFeatureVariationVariables. - Renamed
getActiveFeatureListForVisitorCodetogetActiveFeatures. - Renamed
updateConfigurationHandlertoonUpdateConfiguration. - Changed
revenueargument to optional in thetrackConversionmethod. Also, the type ofrevenuewas changed tofloat. - For the
runWhenReadymethod, thereadyCallbackandfailCallbackcombined into the singleFunction(bool)callback. - For the
onUpdateConfigurationmethod, theFunctioncallback changed toFunction(int)where parameter represents the value of Unix time (number of seconds that have elapsed since January 1, 1970) when configuration was updated
- Removed
- Exceptions:
- Removed
CredentialsNotFound(theclientIdandclientSecretcredentials are now optional). - Renamed
VisitorCodeNotValidtoVisitorCodeInvalid. - Renamed
VariationNotFoundtoFeatureVariationNotFound. - Renamed
VariableNotFoundtoFeatureVariableNotFound.
- Removed
- Added new exception [
SiteCodeIsEmpty] for the methodKameleoonClientFactory.createthat indicates the providedsiteCodeis empty. - Added new exception
FeatureEnvironmentDisabledindicating that the feature flag is disabled for certain environments. The following methods can throw the new exception:
- Classes:
Features #
- Upgraded Flutter SDK library to use
iOS SDK 4.4.2/Android SDK 4.2.1/JS/TS SDK 3.4.2 - Added the
setLegalConsentmethod to determine the types data that Kameleoon includes in tracking requests. This helps you adhere to legal and regulatory requirements while responsibly managing visitor data. You can find more information in the Consent management policy. KameleoonClientFactory.createmethod acceptsvisitorCodeas a parameter to use for all SDK methods. If you omit thevisitorCode, the SDK generates a new visitor code value that it uses until you overwrite it. To overwrite avisitorCode, provide it as a parameter explicitly to the method. The method throwsVisitorCodeInvalidif the providedvisitorCodeis invalid (empty or longer than 255 characters).- Added new configuration fields to
KameleoonClientConfigand external configuration file:defaultTimeoutMillisecondswhich specifies the time interval, in milliseconds, that it takes for network requests from the SDK to time out. If not provided, the default value is10_000ms.dataExpirationIntervalMinutesspecifies the time (in minutes) that the SDK retains the visitor's data on the device. By default, the TTL (time to live) isInteger.MAX_VALUE.isUniqueIdentifierthat provides additional capabilities with cross-device experimentation for theKameleoonClientConfig.
- Changed the
keyparameter in thegetRemoteDatamethod from required to optional. If you don't provide akeyparameter, the SDK uses thevisitorCodespecified during initialization. - Added new targeting conditions (some conditions require you to pre-load data with
getRemoteVisitorData)- Operating System
- IP Geolocation
- Kameleoon Segment
- Target Feature Flag
- Time since First Visit
- Time since Last Visit
- Number of Visits Today
- Total Number of Visits
- New or Returning Visitor
- Likelihood to convert
- Added new Kameleoon Data type:
- Added the
getActiveFeaturesmethod, which retrieves information about the active feature flags that are available for a specific visitor code. This method replaces the deprecatedgetActiveFeatureListForVisitorCodemethod. - Added methods for obtaining remote visitor data:
getVisitorWarehouseAudiencemethod to retrieve all data associated with a visitor's warehouse audiences and adds it to the visitor.getRemoteVisitorDatafetches the remote visitor's data (with an optional capability to add the data for the visitor).
Bug Fixes #
- Stability and performance improvements.
2.0.2 #
Features #
- Changed the
KameleoonClientConfigparametersclientIdandclientSecretand the external configuration file parameters,client_idandclient_secretfrom required to optional. This means you can now successfully initialize a configuration without providing credentials. Previously, you would receive acredentialsNotFoundexception. - Added new conditions for targeting:
- Visitor Code
- SDK Language
- Device
- Conversion
Page Title & Page Url[Available only for web]Browser[Available only for web]
- Upgraded Flutter SDK library to use
iOS SDK 3.0.6/Android SDK 3.2.1/JS/TS SDK 1.7.2
2.0.1 #
- Upgraded Flutter SDK library to use
iOS SDK 3.0.3
2.0.0 - 2023-06-06 #
The Flutter 2.0.0 release contains the following changes:
- Upgraded Flutter SDK library to use
iOS SDK 3.0.2/Android SDK 3.1.0/JS/TS SDK 1.4.4 - To enhance security, we have made it mandatory to include the
client_idandclient_secretfields in the Kameleoon configuration file. Please make sure you have set these fields as soon as possible. Alternatively, you can set these fields using the internalKameleoonConfigurationinstance. This change helps ensure that only authorized parties have access to Kameleoon and its associated resources. - Real-time updates:
- Added the ability to update your campaigns and feature flag configurations instantaneously with the Real-Time Streaming Architecture. For details see the:
DocumentationandProduct Updates. - Added a new method
updateConfigurationHandlerto handle events when configuration has updated data in real time.
- Added the ability to update your campaigns and feature flag configurations instantaneously with the Real-Time Streaming Architecture. For details see the:
- Added new methods for working with feature flags:
- Added new methods for working with data configuration:
- Renamed the following methods:
obtainFeatureVariableis nowgetFeatureVariableactivateFeatureis nowisFeatureActiveobtainVisitorCodeis nowgetVisitorCoderetrieveDataFromRemoteSourceis nowgetRemoteDataobtainVariationAssociatedDatais nowgetVariationAssociatedData
- Added support for Experiment & Exclusive Campaign conditions. Related to
triggerExperimentandisFeatureActive. - Added new exceptions:
CredentialsNotFound. Related toKameleoonClientFactory.create.
- Renamed exceptions:
NotActivatedis nowNotAllocated. Related totriggerExperiment.ExperimentConfigurationNotFoundis nowExperimentNotFound. Related totriggerExperiment.FeatureConfigurationNotFoundis nowFeatureNotFound. Related toisFeatureActive.
- Changes in
KameleoonData:CustomDataaccepts a list of values (previously, it accepted only one value)- Added support for the
is among the valuesoperator for CustomData - Added KameleoonData
Deviceclass. Possible values are: PHONE, TABLET, DESKTOP. - Removed the KameleoonData
Interestclass.
Unsupported versions: #
1.0.3 - 2022-05-31 [Deprecated] #
- Added method for retrieving data from remote source:
retrieveDataFromRemoteSource - Added support of multi-environment for feature flags, Related to
activateFeature,obtainFeatureVariable - Updated Flutter SDK library to iOS 2.0.15 / Android 2.0.13 / JS 1.0.7
1.0.2 - 2021-11-03 [Deprecated] #
- Added scheduling feature
- Refactoring structure of library
- Updated Flutter SDK library to iOS 2.0.12 / Android 2.0.10 / JS 1.0.5
1.0.1 [Deprecated] #
- Add Web platform
- Update Flutter SDK library to iOS 2.0.11 / Android 2.0.9
1.0.0 [Deprecated] #
- Release
0.0.3 [Deprecated] #
- Implement null-safety
0.0.2 [Deprecated] #
- Implement iOS bridge
0.0.1 [Deprecated] #
- Implement Android bridge