NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2770 most downloaded on pub.dev
Our SDK gives you the possibility of running experiments and activating feature flags on all platforms targeted by the Flutter application framework.
Last release 1 months ago
02 Sep 2026
Release timing varies
gaps range from 3 weeks to 7 months
Nearly every release is documented
notes for 23 of 23 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
23 releases · first in 2021
One column per quarter.
The `onUpdateConfiguration` method has been deprecated in favor of [setEventHandler][setEventHandler] with the EventType.dataFileUpdate event type.
iOS SDK 4.28.0 / Android SDK 4.27.0 / JS/TS SDK 4.25.0setEventHandler][setEventHandler] method:
EventType.dataFileUpdate notifies when the SDK data file (configuration) is updated with polling or streaming modes.EventType.httpRequest notifies when SDK HTTP requests complete successfully or fail. The handler is called once per each actual HTTP request attempt, including retries.null to setEventHandler clears the handler for the selected event type.onUpdateConfiguration method has been deprecated in favor of [setEventHandler][setEventHandler] with the EventType.dataFileUpdate event type.false instead of true, so visitors are no longer targeted by segments containing web-specific conditions the SDK does not support.The `getFeatureList` method has been deprecated in favor of getDataFile().
iOS SDK 4.27.3 / Android SDK 4.26.3 / JS/TS SDK 4.24.5getDataFile method. It now returns a cached DataFile instance that is refreshed whenever the SDK configuration is updated.dateModified property to the DataFile object returned by the getDataFile method.getFeatureList method has been deprecated in favor of getDataFile().activityTrackingIntervalMilliseconds parameter from 15 000 ms to 60 000 ms. This reduces the number of activity requests sent to the Data API and helps prevent 429 (Too Many Requests) responses. (Only iOS / Android)flush(instant: true).getVariation, getVariations and isFeatureActive. (Only Web)flush(instant: true) now awaits the completion of the tracking request. (Only Web)INFO and DEBUG log messages that were removed from the standard JS SDK bundle in version 4.24.0, so all KameleoonLogger log levels keep working. (Only Web)refreshIntervalMinutes interval in polling mode and was instead refreshed only after the application restarted. (Only iOS / Android)Upgraded Flutter SDK to use `iOS SDK 4.25.0` / `Android SDK 4.24.0` / `JS/TS SDK 4.18.0`
iOS SDK 4.25.0 / Android SDK 4.24.0 / JS/TS SDK 4.18.0major.minor.patch. Full support for Semantic Versioning, including pre-release, will be introduced in future releases.trackingIntervalMilliseconds. The new range is from 1000 ms (default) to 5000 ms, allowing a reduction in the number of tracking requests.track parameter for addData. When set to false, the data is stored locally and used only for targeting evaluation; it is not sent to the Data API, helping to prevent duplicate data from being recorded. The default value is true. This behavior is consistent with the track parameter used in evaluation methods such as getVariation.activityTrackingIntervalMilliseconds parameter, which defines the interval at which activity events are sent. This helps reduce network usage and battery consumption. The minimum and default value is 15 000 ms. Setting this value to 0 disables periodic activity tracking; in this case, only a single activity event is sent at application startup. (Only iOS / Android)isUniqueIdentifier parameter passed to KameleoonClientConfig was not applied when initializing KameleoonClient.Upgraded Flutter SDK to use `iOS SDK 4.22.2` / `Android SDK 4.21.1` / `JS/TS SDK 4.17.0`
iOS SDK 4.22.2 / Android SDK 4.21.1 / JS/TS SDK 4.17.0Resolved an issue where the com.kameleoon.flutter platform channel sent messages from a non-platform thread when emitting SDK log events. All logging-
com.kameleoon.flutter platform channel sent messages from a non-platform thread when emitting SDK log events. All logging-related native-to-Flutter messages are now properly dispatched on the platform thread.Upgraded Flutter SDK to use `iOS SDK 4.21.1` / `Android SDK 4.20.2` / `JS/TS SDK 4.9.0`
iOS SDK 4.21.1 / Android SDK 4.20.2 / JS/TS SDK 4.9.0KameleoonClient now starts initializing immediately upon creation. Previously, initialization only began after calling the runWhenReady method.
initializes only after runWhenReady method.defaultDataFile parameter. If no cached configuration is available, the SDK immediately uses the provided default. For version control, the SDK prioritizes the default configuration if its dateModified timestamp is more recent than the cached version.evaluateAudiences method. This method iterates over all Audiences Explorer segments, evaluates each one, and tracks the segments for which the visitor is targeted using the TARGETINGSEGMENT event.getDataFile method. 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, use getVariations instead. getDataFile is mainly useful for debugging or QA, for example to let internal users manually select a variant for a specific feature flag in production.name to Variation, representing the name of the variation.overwrite flag to CustomData, used as the overwrite parameter during tracking.CustomData can now be created using a name, in addition to the existing method of using an index.Upgraded Flutter SDK to use `iOS SDK 4.13.2` / `Android SDK 4.12.0`
iOS SDK 4.13.2 / Android SDK 4.12.0Upgraded Flutter SDK to use `iOS SDK 4.13.1` / `Android SDK 4.11.1` / `JS/TS SDK 4.9.0`
iOS SDK 4.13.1 / Android SDK 4.11.1 / JS/TS SDK 4.9.0negative and metadata to the trackConversion method.metadata to the Conversion data constructor.getRemoteVisitorData with the cbs=true flag is required for this feature to function correctly.networkDomain to KameleoonClientConfig. This parameter allows specifying a custom domain for all outgoing network requests.setForcedVariation() method. This method allows explicitly setting a forced variation for a visitor, which will be applied during experiment evaluation.Resolved an issue where the SDK could crash during prolonged application initialization on Android devices.
These methods replace the deprecated ones:
iOS SDK 4.7.0 / Android SDK 4.5.0 / JS/TS SDK 4.2.3visitorCode parameter to RemoteVisitorDataFilter. This parameter determines whether to use the visitorCode from the most recent previous visit instead of the current visitorCode. When enabled, this feature allows visitor exposure to be based on the retrieved visitorCode, facilitating cross-device reconciliation. Default value of the parameter is true.isFeatureActive method now includes an optional track parameter, which controls whether the assigned variation is tracked (default: true).noneerrorwarninginfodebugflush with instant parameter. If the parameter's value is true the visitor's data is tracked instantly. Otherwise, the visitor's data will be tracked with the next tracking interval. Default value of the parameter is false.trackingIntervalMilliseconds to KameleoonClientConfig, which is used to set interval for tracking requests. Default value is 1000 milliseconds.getVisitorCode method, which returns the unique visitor code used within KameleoonClient.Addressed an issue preventing the SDK from compiling when building the project with JDK 17.
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 An
Removed all deprecated methods and exceptions related to experiments:
visitorCode parameter from all methods that accepted it. You must now specify the visitor code during initialization. As a result, a KameleoonClient instance only works for a single visitor:
triggerExperimentgetVariationAssociatedData (obtainVariationAssociatedData)getExperimentList (obtainExperimentList)getExperimentListForVisitor (obtainExperimentListForVisitor)ExperimentConfigurationNotFoundNotTargetedNotAllocatedSiteCodeDisabledKameleoonConfiguraton to KameleoonClientConfig.Devices class:
Devices.PHONE renamed to Devices.phoneDevices.TABLET renamed to Devices.tabletDevices.DESKTOP renamed to Devices.desktopBrowsers class:
Browsers.CHROME renamed to Browsers.chromeBrowsers.INTERNET_EXPLORER renamed to Browsers.internetExplorerBrowsers.FIREFOX renamed to Browsers.firefoxBrowsers.SAFARI renamed to Browsers.safariBrowsers.OPERA renamed to Browsers.operaBrowsers.OTHER renamed to Browsers.otherCustomData now accepts a list of strings, instead of a single string, for enhanced flexibility and usability.obtainFeatureVariable.retrieveDataFromRemoteSource.getVisitorCode.getFeatureAllVariables to getFeatureVariationVariables.getActiveFeatureListForVisitorCode to getActiveFeatures.updateConfigurationHandler to onUpdateConfiguration.revenue argument to optional in the trackConversion method. Also, the type of revenue was changed to float.runWhenReady method, the readyCallback and failCallback combined into the single Function(bool) callback.onUpdateConfiguration method, the Function callback changed to Function(int) where parameter represents the value of Unix time (number of seconds that have elapsed since January 1, 1970) when configuration was updatedCredentialsNotFound (the clientId and clientSecret credentials are now optional).VisitorCodeNotValid to VisitorCodeInvalid.VariationNotFound to FeatureVariationNotFound.VariableNotFound to FeatureVariableNotFound.SiteCodeIsEmpty] for the method KameleoonClientFactory.create that indicates the provided siteCode is empty.FeatureEnvironmentDisabled indicating that the feature flag is disabled for certain environments. The following methods can throw the new exception:
iOS SDK 4.4.2 / Android SDK 4.2.1 / JS/TS SDK 3.4.2setLegalConsent method 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.create method accepts visitorCode as a parameter to use for all SDK methods. If you omit the visitorCode, the SDK generates a new visitor code value that it uses until you overwrite it. To overwrite a visitorCode, provide it as a parameter explicitly to the method. The method throws VisitorCodeInvalid if the provided visitorCode is invalid (empty or longer than 255 characters).KameleoonClientConfig and external configuration file:
defaultTimeoutMilliseconds which specifies the time interval, in milliseconds, that it takes for network requests from the SDK to time out. If not provided, the default value is 10_000 ms.dataExpirationIntervalMinutes specifies the time (in minutes) that the SDK retains the visitor's data on the device. By default, the TTL (time to live) is Integer.MAX_VALUE.isUniqueIdentifier that provides additional capabilities with cross-device experimentation for the KameleoonClientConfig.key parameter in the getRemoteData method from required to optional. If you don't provide a key parameter, the SDK uses the visitorCode specified during initialization.getRemoteVisitorData)
getActiveFeatures method, which retrieves information about the active feature flags that are available for a specific visitor code. This method replaces the deprecated getActiveFeatureListForVisitorCode method.getVisitorWarehouseAudience method to retrieve all data associated with a visitor's warehouse audiences and adds it to the visitor.getRemoteVisitorData fetches the remote visitor's data (with an optional capability to add the data for the visitor).Changed the KameleoonClientConfig parameters clientId and clientSecret and the external configuration file parameters, client_id and client_secret fro
KameleoonClientConfig parameters clientId and clientSecret and the external configuration file parameters, client_id and client_secret from required to optional. This means you can now successfully initialize a configuration without providing credentials. Previously, you would receive a credentialsNotFound exception.Page Title & Page Url [Available only for web]Browser [Available only for web]iOS SDK 3.0.6 / Android SDK 3.2.1 / JS/TS SDK 1.7.2Upgraded Flutter SDK library to use `iOS SDK 3.0.3`
iOS SDK 3.0.3The Flutter 2.0.0 release contains the following changes:
The Flutter 2.0.0 release contains the following changes:
iOS SDK 3.0.2 / Android SDK 3.1.0 / JS/TS SDK 1.4.4client_id and client_secret fields 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 internal KameleoonConfiguration instance. This change helps ensure that only authorized parties have access to Kameleoon and its associated resources.Documentation and Product Updates.updateConfigurationHandler to handle events when configuration has updated data in real time.obtainFeatureVariable is now getFeatureVariableactivateFeature is now isFeatureActiveobtainVisitorCode is now getVisitorCoderetrieveDataFromRemoteSource is now getRemoteDataobtainVariationAssociatedData is now getVariationAssociatedDatatriggerExperiment and isFeatureActive.CredentialsNotFound. Related to KameleoonClientFactory.create.NotActivated is now NotAllocated. Related to triggerExperiment.ExperimentConfigurationNotFound is now ExperimentNotFound. Related to triggerExperiment.FeatureConfigurationNotFound is now FeatureNotFound. Related to isFeatureActive.KameleoonData:
CustomData accepts a list of values (previously, it accepted only one value)is among the values operator for CustomDataDevice class. Possible values are: PHONE, TABLET, DESKTOP.Interest class.Added method for retrieving data from remote source: `retrieveDataFromRemoteSource`
retrieveDataFromRemoteSourceactivateFeature, obtainFeatureVariableRefactoring structure of library
Update Flutter SDK library to iOS 2.0.11 / Android 2.0.9
* Release
* Implement null-safety
* Implement iOS bridge
* Implement Android bridge
Your coding agent can read these notes before it upgrades. Set up the MCP server →