# Changelog

### \[iOS] 5.15.0 - 2026-03-31

**ContextPush:**

* Add influenced open tracking to measure when users open the app after receiving a push notification
* Add richer context signals to push payloads for improved delivery optimization
* Add Swift Package Manager support for the notification service extension as a separate target

### \[iOS] 5.14.1 - 2026-02-12

* Fixes the `ABTestInformation` not having an initializer

### \[iOS] 5.14.0 - 2026-01-29

**ContextPush:**

* Add notification service extension support for confirmed delivery tracking
* Add API to customize notification content before delivery
* Bug fixes and performance improvements

**ContextDecision & ContextPush:**

* Introduce adaptive thresholds that automatically adjust based on your app's outcomes and user behavior for improved performance over time

### \[iOS] 5.13.0 - 2025-11-06

**ContextPush**:

* This includes the new Hybrid Mode, increasing the number of opportunities we get to deliver push notifications

**AdTech**:

* New AdTech capabilities

### \[iOS] 5.12.0 - 2025-10-30

* New AdTech capabilities

### \[iOS] 5.11.0 - 2025-10-02

* Adds new `Context.wasForcedUpsell` flag to indicate if the current upsell was triggered in a bad moment.

### \[iOS] 5.10.1 - 2025-09-03

* Add 34 new motion signals that require only 0.01s of data
* Add new APIs to better support customers' AB testing systems

### \[iOS] 5.9.0 - 2025-08-07

* Add support for revenue tracking for StoreKit 1
* Improve ContextPush background time handling
* Update Unity binding

### \[iOS] 5.8.0 - 2025-07-24

* Added 43 new motion signals for more precise context detection

### \[iOS] 5.7.0 - 2025-07-18

* Introducing Cooldowns, allowing you to control a minimum and maximum number of prompts shown in a given time period
* Improvements on handling disabled push permissions

### \[iOS] 5.6.1 - 2025-06-16

* Add support for logging revenue data from Unity
* Add support for manually putting ContextSDK into control mode in Unity

### \[iOS] 5.6.0 - 2025-05-30

* Improve ContextPush performance
* Verify maximum length of `flowName` (500 chars)
* Add additional internet geolocation signals

### \[iOS] 5.5.0 - 2025-04-29

* Add new [ContextManager.registerContextObserver](https://context-sdk.github.io/docs-ios/documentation/contextsdk/contextmanager/registercontextobserver\(flowname:callbackonfirstgoodmoment:\)) method to get a callback when it's a good moment to show a prompt
  * Learn more in [Listening for Good Moments](https://docs.contextsdk.com/context-decision/advanced/listening-for-good-moments)
* Remove an Xcode console warning when using the SDK in a background thread
* Improve frequency of event flushing during development so it's easier to test

### \[iOS] 5.4.0 - 2025-03-13

* Add [enableInstantContext](https://context-sdk.github.io/docs-ios/documentation/contextsdk/configuration/enableinstantcontext) configuration for improved battery savings, especially when using only ContextPush
* Improve error output in the Xcode console

### \[iOS] 5.3.1 - 2025-02-21

* Expose properties on the [ContextModelInformation](https://context-sdk.github.io/docs-ios/documentation/contextsdk/contextmodelinformation) struct

### \[iOS] 5.3.0 - 2025-02-06

* Add support for sending images in context-aware push notifications
* Add new context signals
* Add [ContextManager.getCustomModel(for:)](https://context-sdk.github.io/docs-ios/documentation/contextsdk/contextmanager/getcustommodel\(for:\)) to check if a custom model was rolled out for a specific flow

### \[iOS] 5.2.1 - 2025-01-28

* Add initializer for [RevenueEvent](https://context-sdk.github.io/docs-ios/documentation/contextsdk/revenueevent) to support [logRevenueOutcome(from:outcome:)](https://context-sdk.github.io/docs-ios/documentation/contextsdk/context/logrevenueoutcome\(from:outcome:\)-49ixv) with a `RevenueEvent` object

### \[iOS] 5.2.0 - 2025-01-22

* Add [context.logRevenueOutcomeIfNotLoggedYet](https://context-sdk.github.io/docs-ios/documentation/contextsdk/context/logrevenueoutcomeifnotloggedyet\(from:outcome:\)-257dv) to track in-app purchase and subscription revenue

### \[iOS] 5.1.0 - 2025-01-22

* Add [context.logRevenueOutcome(from:outcome:)](https://context-sdk.github.io/docs-ios/documentation/contextsdk/context/logrevenueoutcome\(from:outcome:\)-43krq) to track in-app purchase and subscription revenue
* Improve efficiency of push-related network requests
* Improve internal detection of app launch reason

### \[iOS] 5.0.0 - 2025-01-21

* Launch ContextPush product — see [How ContextPush Works](https://docs.contextsdk.com/basics/how-context-push-works) for details
* Remove deprecated methods:
  * `ContextManager.checkIfGoodMomentForPushNotification` → use ContextPush instead
  * `ContextManager.deliverNotificationIfGoodMoment` → use ContextPush instead
  * `ContextManager.requestATTrackingAuthorizationForCalibration` → discontinued
  * `ContextManager.requestATTrackingAuthorizationIfGoodMoment` → discontinued
  * `ContextManager.requestATTTrackingAuthorization` → discontinued
  * `context.logAttAuthStatus` → discontinued
  * `defaultLogSender` property → discontinued

### \[iOS] 4.8.0 - 2024-12-03

* Add support for logging multiple outcomes on a single `Context` object

### \[iOS] 4.7.1 - 2024-11-13

* Fix crash affecting users on iOS 15
* Improve documentation

### \[iOS] 4.7.0 - 2024-10-15

* Enable custom models to make decisions based on custom signals
* Add new context signals
* Prevent "Duplicate signal IDs found" from being logged when using `ContextManager.recentContext`

### \[Android] 1.0.1 - 2024-10-01

* Fix issue with accelerometer data collection on certain devices

### \[iOS] 4.6.0 - 2024-09-30

* Add new signals
* Add Flutter support

### \[iOS] 4.5.1 - 2024-09-12

* Prepare for future releases

### \[iOS] 4.5.0 - 2024-08-14

* Add new accelerometer signals
* Add signals related to session duration

### \[iOS] 4.4.3 - 2024-08-01

* Bugfix release

### \[iOS] 4.4.2 - 2024-08-01

* Bugfix release

### \[iOS] 4.4.1 - 2024-07-31

* Add additional context signals

### \[iOS] 4.4.0 - 2024-07-29

* Add `cancelContextCallback` method
* Fix crash when creating contexts from multiple threads
* Preserve `recentContext` when app enters background
* Improve documentation

### \[iOS] 4.3.1 - 2024-07-08

* Remove async/await from the codebase to simplify backporting on iOS 13/14
* Fix crash caused by incorrect async backport linking

### \[Android] 1.0.0 - 2024-07-01

* Initial release of ContextSDK for Android

### \[iOS] 4.3.0 - 2024-06-03

* Add support for specifying a `maxDelay` when using `ContextManager.optimize(...)`

### \[iOS] 4.2.2 - 2024-05-21

* Fix issue where custom signals could be lost when using `ContextManager.optimize(...)`

### \[iOS] 4.2.0 - 2024-05-13

* Add support for React Native

### \[iOS] 4.1.2 - 2024-05-08

* Fix crash related to non-thread-safe cache access

### \[iOS] 4.1.1 - 2024-05-02

* Add `PrivacyInfo.xcprivacy` file for upcoming Apple requirements
* Add additional accelerometer signals
* Add basic Objective-C support
* Improve integration robustness

### \[iOS] 4.0.2 - 2024-04-12

* Add `ContextManager.recentContext(customModel: .customModelName)` to retrieve context for a specific custom model
* Add warnings for potential integration issues
* Improve accelerometer sensor handling
* Disable `CallKit` in calibration mode builds to avoid app rejections

### \[iOS] 4.0.0 - 2024-03-07

* Add support for OTA custom model updates (configurable)
* Remove `Context.customModelName` property
* Change `CustomModel` enum to `String`
* Add optional error reporting to backend to improve stability
* Convert `ContextManager.sdkVersion` from property to method
* Replace `context.appendCustomSignals()` with `context.appendOutcomeMetadata()`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.contextsdk.com/other/changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
