Skip to main content
v1.11.3 (Core)
March 2026
  • Header encoding for OkHttp 4.x compatibility (Fix)
v1.11.2 (Core)
March 2026
  • Add 16KB page size support for Android 15+ devices (Fix)
v1.11.1 (Core)
March 2026
  • Fix missing logs() method in Logger interface (Fix)
v1.11.0 (Core)
February 2026
  • Integrate contextual cohorts with classification models (Update)
v1.10.0 (Core)
September 2025
  • Integrate content-based contextual cohorts (New)
  • Introduce Dagger as dependency injection framework (v2.53.1) (New)
v2.2.0 (Google Ads)
September 2025
  • Automatic contextual cohort targeting integration for Google Ad Manager requests (New)
v1.7.0 (AppNexus/Xandr)
September 2025
  • Automatic contextual cohort targeting integration for AppNexus/Xandr ad requests (New)
v1.9.8 (Core)
March 2025
  • Fix issue causing cohort transition event aggregation to stop working in some situations. (Fix)
v1.9.7 (Core)
February 2025
  • Remove aho-corasick string-searching from cohort processing to reduce memory usage. (Fix)
v1.9.6 (Core)
December 2024
  • Integrate with new API for audience matching to improve matching based on external data (New)
  • Fix close button on debug overlay (Fix)
  • Fix logging when setting completion percentage (Fix)
v2.1.0 (Google Ads)
August 2024
  • Update Google Play Services Ads dependency to 24.0.0 (Update)
  • Changed Android minSdk version to 23 (Update)
v1.9.5 (Core)
August 2024
  • Add aggregations of cohort transition events to PageviewComplete event properties to reduce our network load (New)
  • Fix missing class issues by removing dependency on ktor utils library from the query engine (Fix)
  • Fix issue that could occur when synchronising user state (Fix)
  • Update compile SDK version to 34 (Update)
v2.0.0 (Google Ads)
August 2024
  • Update Google Play Services Ads dependency to 23.2.0 (Update)
  • Remove PermutiveAdManagerAdRequestBuilder.addNetworkExtras function (removed from ads SDK) (Breaking change)
  • Remove PermutiveAdManagerAdRequestBuilder.setLocation function (removed from ads SDK) (Breaking change)
  • Deprecate PermutiveAdManagerAdRequestBuilder.addCustomEventsExtrasBundle function (deprecated in ads SDK) (Deprecation)
v1.9.4 (Core)
May 2024
  • Add remotely configurable list of third and second party data providers that are excluded from usage reporting (New)
v1.9.3 (Core)
February 2024
  • Replace RxJava2 with Kotlin Flow in state synchronisation (Update)
v1.9.2 (Core)
February 2024
  • Add new feature flag to enable Classification Model cohorts for this version and above (Update)
v1.9.0 (Core)
November 2023
  • Add video ad tracking functionality through the AdTracker. See here for more information (New)
  • Add new container classes for video properties, MediaTracker.VideoProperties and MediaTracker.PageProperties. (New)
  • Add new trackVideoView function which takes the new property objects and deprecate createVideoTracker. (Update)
  • Release beta version of the debug overlay UI tool. (New)
  • Add new TriggersProvider functions which support boolean results for cohorts. (New)
  • Remove Rhino Javascript engine library. (Update)
  • Remove intermediate objects created during event processing to improve memory usage. (Update)
  • Fix RxJava undeliverable exceptions escaping error handling. (Fix)
v1.7.6 (Core)
October 2023
  • Fix issue resulting from Kotlin reflection library dependency conflicts. (Fix)
v1.8.2 (Core)
September 2023
  • Update the native query runtime to the latest version with more efficient state updates. This will reduce the number of calls to the Permutive API made by the SDK. (New)
v1.8.1 (Core)
June 2023
  • Fix crash occurring on devices running Android 25 and below caused by desugared java.time library not being included in AAR. (Fix)
v1.8.0 (Core)
June 2023
  • Increase minimum Android SDK version from 16 to 21. For more information on why we’re doing it and how we’ll be minimising disruption read here.
  • Added support for Classification Model cohorts. (New)
  • Added new properties for retrieving cohorts and activations. PermutiveSdk.currentCohorts: List<String> & PermutiveSdk.currentActivations: Map<String, List<String>>. (New) To allow us to support more cohorts we have switched from using integers to strings as cohort IDs. The new properties are equivalent to the old PermutiveSdk.currentSegments: List<Int> & PermutiveSdk.currentReactions: Map<String, List<Int>> properties respectively.
  • Deprecate the PermutiveSdk.currentSegments & PermutiveSdk.currentReactions properties. (Deprecation)
  • Fix a query in the native query runtime. (Fix)
  • Change evaluation of some debug log strings to be lazy. (Fix)
v1.5.13 (Google Ads)
June 2023
  • Retrieve cohorts using the new PermutiveSdk.currentActivations function. (Update)
v1.6.1 (AppNexus/Xandr)
June 2023
  • Retrieve cohorts using the new PermutiveSdk.currentActivations function. (Update)
v1.7.5 (Core)
March 2023
  • Downgrade Kotlin requirement to v1.6+. (Update)
v1.7.4 (Core)
March 2023
  • Enable the native query runtime by default. (New)
  • Fix native query runtime not interpreting some queries correctly. (Fix)
  • Fix issue with external state decoding. (Fix)
v1.9.1 (Core)
January 2023
  • Fix crash occurring when retrieving Classification Model cohorts (Fix)
  • Fix missing common module classes (Fix)
v1.7.3 (Core)
January 2023
  • Fix issue with debug event recorder caching large amount of events. (Fix)
v1.7.2 (Core)
December 2022
  • Remove the “CTV” prefix from the names of our video events tracked through the MediaTracker API to better reflect their usecase for all video content. (Update)
  • Update to how we capture the client.user_agent event property to allow us to support better device distinction in the insights platform. (Update)
  • Additional fixes to query interpretation when using the native engine. (Fix)
  • Update the new clearPersistentData function to always run on coroutine Dispatchers.IO to prevent possibility of database access from the wrong thread. (Fix)
  • Added some additional proguard consumer rules to prevent native engine deserialization classes from being removed. (Fix) Please ensure you test you application with minification and Permutive debugging enabled (see verification guide)
v1.7.1 (Core)
October 2022
  • Fix issue causing certain queries not to be interpreted correctly. (Fix)
v1.7.0 (Core)
September 2022
  • Add new instance functions for clearing persistent data and deprecate old function. (New) The previous clearPersistentData function was potentially causing issues with the Permutive SDK database instance resulting in crashes. The new functions are safer to use and also inform of success or failure.
  • Add migration path for users moving from event-sync to our new native state-sync. (New)
  • Add handling for undelivered exceptions. (New)
  • Fix exception when migrating from database version 4 to 5. (Fix)
v1.6.0 (AppNexus/Xandr)
September 2022
  • Add new setPermutiveAdListener function which enables automatic impression tracking. For more information see AppNexus/Xandr integration. (New)
v1.6.0 (Core)
June 2022
  • Fix issue which caused the SDK to stop if the user received network errors when making an identity call. (Fix)
  • Add new native engine to replace the Rhino Javascript engine. This feature will be rolled out gradually. (New) Rhino Javascript will be removed in a subsequent release after rollout of the native engine is complete.
  • Update EventProperties API so that it allows nullable values. (New)
  • Fix exception which could occur when doing database migration. (Fix)
v1.5.13 (Core)
May 2022
  • Add support for setting priority and expiry for aliases set through the identity APIs. (New) The identity APIs support new functionality for prioritising aliases and deleting them automatically on expiry. For more information see our documentation on identity management.
  • Add support for tracking Fire and Fire TV as platforms. (New) Fire and Fire TV devices are now tracked as separate platforms types for clients.
  • Fix printing of nested EventProperties which previously showed as ‘null’. (Fix) Nested EventProperties in the developer log were incorrectly showing as null, they now show as the correct nested structure.
  • Fix memory leak caused by some internal resources not closing correctly. (Fix) Parts of the SDK were found to still run even after close() was called on an SDK instance. These have now been fixed.
  • Fix issue that could sometimes cause events to be processed more than once. (Fix) Sometimes events could end up being tracked more than once causing slowdown and memory consumption. This has now been fixed.
v1.5.10 (AppNexus/Xandr)
May 2022
  • Update Xandr/AppNexus dependency to 7.X.
v1.5.12 (All)
December 2021
  • Add support for Google Ads slots clicked events. (New) Additional information is included in the GAM request which allows for server side generation of slot events.
  • Fix in-IDE documentation for core APIs. (New) API documentation is now accessible in the IDE.
  • Adds in page engagement support. (New) Engagement segments can not be evaluated in the current page, rather than only once that page has closed/completed.
  • Add video tracking support. (New) Similar to pages we now support tracking video events and video engagement using the MediaTracker class.
v1.5.11 (Core)
September 2021
  • Fix exception happening when events containing an empty list as a child of EventProperties are tracked. (Fix)
v1.5.10 (Core)
August 2021
This version has a known issue causing some events not to be tracked. Please use version 1.5.11
  • Optimise segmentation engine memory usage. (New) An optimised way of passing events to the segmentation engine has been added which will reduce OutOfMemoryErrors.
  • Fix exception when using EventProperties containing a list of EventProperties. (Fix) Correct property handling has been added for EventProperties which contain a value which itself is a list of EventProperties.
v1.5.9 (Core)
July 2021
  • Add more comprehensive logging to the SDK. (New) Improved logging will assist in verifying integrations and debugging any potential issues. See the verification guide for details on what logs are available.
  • Remove internal logging of current segments and current reactions. (New) These can easily be logged externally so have been removed to reduce noise from the internal SDK logs.
  • Fix memory leaks when restarting the SDK (Fix)
v1.5.7 (Google Ads)
April 2021
  • Update library dependencies (New) Updates Google-Play-Services dependency from v18 to v20.
v1.5.7 (Core)
April 2021
  • Update library dependencies (New) Updates third party dependencies - room, rxjava, androidx to the latest versions.
  • Update minimum SDK version to 16 (New) Updates minimum SDK version from 14 to 16.
v1.5.6 (Core)
April 2021
  • Always identify on startup (New) In order to prevent potential identity collapse, the SDK always identifies upon startup, so any such issues can be resolved by the server.
  • Fix ConcurrentModificationException at startup (Fix) The deferred queue has been updated to fix an issue where ConcurrentModificationException can be thrown due to a deferred operation that itself modifies the deferred queue.
  • Fix SQLite issue when migrating to state sync (Fix) Rewrite SQLite query for migration to state sync so that it does not exceed the maximum variable limit for the Android SQLite implementation.
v1.5.5 (Core)
February 2021
  • Fix conflicting cache issue with OkHttp (Fix) Cache issues can occur if both the host application and the Permutive SDK use OkHttp in the same cache directory. Permutive SDK now uses a subdirectory of the cache directory.
  • Update URLs to permutive.app (New) Moving from permutive.com - SDK traffic should use permutive.app name.
  • Fine tune metrics for the state-sync/event-sync variants (Fix) Metrics are now able to be fine tuned so that the variants do not interfere with the reported data.
v1.5.4 (Core)
January 2021
  • Add state synchronisation support (New) We now merge off-device state using states rather than raw events.
v1.5.3 (Core)
October 2020
  • Fix migration issue with 1.5.2 (Fix) Fixes a critical persistence issue when upgrading to 1.5.2 with persisted state from an older version.
  • Constrain event cache upon startup (New) Excess events are dropped upon startup if the events cache is lowered.
  • Handle OOM exception when evaluating script (Fix) We now disable the SDK & report an issue if an OOM condition occured when evaluating the segmentation script.
  • Update Kotlin to 1.4.20 (New) Updated to the latest stable developer release of Kotlin.
v1.5.2 (Core)
October 2020
Upgrading from an older versions of this SDK can result in a migration issue, we strongly recommend using a previous version. If you are using 1.5.2 please contact our support staff for further details.
  • Disable pre lollipop devices by default (Fix) Devices older than 5.0 are unable to communicate with our servers as we use the more secure TLS 1.2 protocol.
  • Handle OOM exceptions more gracefully (Fix) Disable the SDK when an OOM occurs during segmentation, freeing up memory for the host application.
  • Add CheckResult annotation for all public methods that return values (New) Warnings should occur in the IDE when using public functions that returns values.
v1.5.1 (Core)
August 2020
  • Updated to Kotlin 1.4.0 (New)
  • Better developer logs & dynamic log support (New) It is now possible to dynamically turn on logging for a deployed app, which can help for verification of the deployment.
  • Fix halting when there is a connection issue (Fix) Under some circumstances the SDK would halt execution when a connection issue occurred.
  • Do not include rejected events in cache (Fix) Rejected events are not not included in the events cache.
  • Fix watson decode issue (Fix) Watson would not decode correctly if a client was using a later version of the moshi library.
v1.5.0 (Core)
August 2020
  • Add Enterprise workspace support (New) Passing through a Workspace Id rather than a Project Id will use segments and events configured for that particular workspace, rather than for the whole organization. If migrating from an existing ProjectId to a new Workspace Id, local state is still retained during the migration.
  • Stop running the segmentation engine when a memory trim level has been sent by the OS (New) When the device starts running out of memory, the Android SDK will shutdown it’s running systems until a call to the public APIs is made.
  • Only track engagement events if configured to (Fix) We only send PageviewComplete events if the project is configured for this.
  • Handle devices that are configured with a DNS sinkhole (Fix) Fix issue when a device is connected to a DNS sinkhole under certain conditions the SDK can make repeated requests for the same resource.
v1.4.4 (Core)
July 2020
  • Add Watson enrichment support (New) EventProperties.ALCHEMY_* strings can be used to enrich an event with the watson information provided for the current/page URL.
  • Add PageviewComplete event (New) Adds page engagement support for the Android platform. The PageviewComplete event is automatically generated when calling close on a PageTracker object.
  • Always use application context on initialisation (Fix) Prevents Activity leaks when passing an Activity as the SDK’s context, rather than the Application.
  • Turn off TPD usage reporting as a default (Fix) TPD usage reporting is not used by our customers at this time, so this has defaulted to off.
v1.4.3 (Core)
March 2020
  • Report SDK version as a metric (New) Reporting SDK version will give us better information on current deployments.
  • Add hashed ip as an event enrichment type (New) The string “$ip_address_hash” will now resolve to a hashed version of the client’s ip address.
  • Fix instances of dependencies upon startup (Fix) Fixes a potential race condition that could allow double creations of SDK dependencies.
  • Fix error reporting so that it includes script date/time (Fix) To better diagnose issues we now report the query language creation time in error reports.
v1.4.2 (Core)
March 2020
  • Handle illegal argument exception when unregistering broadcast receiver (Fix) Fixed an issue when unregistering a broadcast receiver that has not yet been registered in some cases.
v1.4.1 (Core)
March 2020
  • Always ask server to resolve resources, regardless of cache-control max-age (Fix) We now do not honor the cache-control max-age header, as if this is very long we will not fetch the updates files from our servers.
  • do not generate segment_exit events for deleted/missing segments (Fix) We now do not generate segment_exit events for missing/deleted segments.
  • update library dependencies (New) We’ve updated our library dependencies to take advantage of the latest bugfixes & enhancements.
v1.4.0 (Core)
February 2020
  • Remove deleted queries from persisted state (New) We now detect & delete queries & segments that have been deleted/disabled from the dashboard.
  • Add date support to EventProperties (New) In older SDKs a developer had to manually format a datetime object to a String (in ISO 9601), we’ve added date support for EventProperties so that this will happen automatically.
  • Add appnexus support to add permutive targeting (New) We’ve added preliminary support for ad targeting using the AppNexus SDK with our new appnexus addon library.
  • Add OS/Script/App info to error reports (New) When we report an error to our endpoints we now include additional information to help us diagnose issues: The operating system version, the segmentation queries version that is being executed as well as information on the Application (version & identifier).
  • Limit deferred functions upon startup (New) While the SDK is initialising, we defer execution of public function calls until this has completed. This was previously unlimited, we have put in a cap so that this does not become unbounded.
  • Add pagetracking API & deprecate context APIs (New) The PageTracker API gives support for Pageview and PageviewEngagementAggregate events. The page’s context (url/title/referrer) are now tied to a Page, rather than a global Permutive setting. Using the PageTracker API will allow for better reporting & better visibility of engagement on the Android SDK. As a result, we would recommend using PageTracker rather than EventTracker for page related events. As a general rule: if an event has a url/title/referrer - it should probably be tracked by the PageTracker object. The global context methods setTitle/setUrl/setReferrer are now deprecated as a result, and we have stopped persisting these values.
  • Fix illegal state in db when reading (Fix) A small percentage (around 0.5%) of users have reported an IllegalStateException under certain circumstances. Previously we would halt segmentation & disable the SDK for these users, for 1.4.0 we have a fix so that this will no longer happen.
  • Fix regex matching when disabling (Fix) We have made our regular expression matching more straightforward in the event that we have to disable a deployment.
  • Fix consumer proguard typo (Fix) Some setups of proguard have stripped away functions that we are using internally. Although we had a @Keep clause on the function, it is still possible that it can be stripped away. We have updated our consumer-proguard so that this is fixed.
v1.3.1 (Core)
December 2019
  • fix issue when migrating from older versions
v1.3.0 (Core)
November 2019
Upgrading from older versions of this SDK can result in a migration issue, we recommend using version 1.3.1 which has a fix for this issue.
  • Add ability to remotely disable by application, os, or sdk version (New)
  • Remove dependency on core library for google ads library (New)
  • Add third party data usage reporting support (New)
v1.2.1 (Core)
October 2019
  • Make engine events session_id & user_id optional (Fix)
v1.2.0 (Core)
October 2019
  • Fix stack size issue for Dalvik VMs (Fix)
v1.1.0 (Core)
October 2019
Segmentation may not occur for OSes using Dalvik VMs, we recommend using version 1.2.0 which has a fix for this issue.
  • Use Rhino as the js engine (New)
v1.0.0 (Core)
September 2019
  • Non-beta release of the Android SDK
  • Correctly handle date time when the format is incorrect (Fix)
  • Reduce memory overhead for db so that it performs well on low end systems (Fix)
  • Only update event server time when posting events (Fix)