Skip to main content

Changelog

Positive User Mobile SDK is available for multiple platforms, with each platform-specific SDK maintained independently. This allows us to optimize performance and features for each platform while ensuring regular updates and improvements across all versions.

Below you'll find the latest versions of each SDK followed by detailed changelogs for Android, iOS, and Flutter implementations. Each changelog documents the enhancements, fixes, and changes specific to that platform's SDK.


Current Versions​

PlatformLatest VersionRelease Date
Android1.2.14May 14, 2026
iOS1.3.0October 21, 2026
Flutter1.0.2July 8, 2025

Android​


1.2.14 (May 14, 2026)​

  • Added in-app click handler method
  • Updated dependencies

1.2.13 (October 27, 2025)​

  • Bumped compiler version
  • Refactored debug logs

1.2.12 (September 5, 2025)​

  • Resolve shadowed dependencies issue

1.2.11 (August 7, 2025)​

  • Add sendEvent method as a native way of sending Events
  • Deprecate previous sendEvent method, implementing UserComEvent

1.2.10 (April 28, 2025)​

  • Updated Push Priority to HIGH
  • Updated Push handler to display Push Notification when app in foreground
  • Resolved issues with Rich Push not rendered
  • Updated library dependencies(API 35 required)

1.2.8 (February 26, 2024)​

  • Fixed Font Resolver not being public
  • Updated library dependencies

1.2.7 (October 19, 2024)​

  • Added deprecation annotation on unused code
  • Removed unused methods

1.2.6 (May 19, 2023)​

  • Add track screen method for custom navigation tracking

1.2.5 (March 20, 2023)​

  • Added onSDKInitialized callback method to SDK Builder

1.2.4 (March 19, 2024)​

  • Added support for refactored In-App Messages

iOS​


Upgrading from an earlier version? See the iOS Migration Guide.

1.3.0 (October 21, 2026)​

Changed in 1.3.0

Existing code compiles, but check these behavior changes before upgrading. Details and what to do: MIGRATION.md.

  • Completions always run on the main thread, and never before the call returns.
  • After logout the anonymous contact keeps the push token, so the device keeps receiving pushes. A push sent to the logged-out contact does not reach the device. Remove a setFcmToken(_:) call after logout if you added it only for this.
  • Received notifications and taps are passed separately: handleNotification(_:) handles a received notification and never counts a click, handleNotificationClick(_:) counts the click. The old handleNotification(userInfo:) still counts a click for every call until you switch.
  • The SDK no longer keeps a copy of contact data. updateContact sends the data once and later pings do not repeat it. The phone number is sent as phone_number instead of phone. The backend accepts both.
  • If the SDK is your notification delegate, notifications received in the foreground are shown as banners. Before, they only played their sound.

New

  • handleEmailLink counts clicks on links from Positive User emails that open the app and returns the target of the link. See Opening App Screens
  • updateContact with a Contact updates the contact in one call and replaces setUserData and setCustomUserData. See Contacts
  • Every failure is a UserSDKError. UserSDK.errorHandler receives all of them in one place, also from calls without a completion
  • New names: sendEvent(name:attributes:), trackScreen(name:), sendProductEvent(_:eventType:attributes:), ProductEventType, userKey, inAppMessageClickHandler. The old names keep working and are deprecated until 2.0

Fixed

  • Values JSON cannot hold (for example Date, URL, NaN) in attributes end with an error instead of crashing the app
  • An app woken in the background on a locked phone no longer creates a duplicate contact
  • No duplicate contacts from two pings sent in a row on a fresh install, or from a ping restored after a restart
  • A queue restored after a restart is not sent twice when the SDK is initialized again
  • 429 (rate limit) is retried after the time the server asks for. Before, the request was dropped
  • The SDK version is sent with the device data
  • The SDK no longer collects the advertising identifier or carrier data, and no longer links AdSupport and CoreTelephony
  • A ping answered with {"success": false} (the app does not collect data) reports an error instead of success
  • An empty, too long or HTML event name, a screen name over 128 characters and an empty product id end with an error without a request. See Events

1.2.0 (October 7, 2026)​

  • In-app messages are shown in a window of their own, so your screen hierarchy (splash screens, full screen presentations, sheets, a replaced root view controller) no longer blocks them. Screens you present while a message is visible are no longer blocked: they appear under the message and are available after it closes
  • In-app messages received while the app is in the background are shown the next time the app becomes active, if they arrived less than 6 hours earlier (only the newest one is kept, logout discards it)
  • In-app "displayed" is reported only once the message is actually on screen, so displayed numbers in the panel may drop and become accurate
  • Behavior change: product event params are sent as separate product attributes instead of a single custom_data JSON attribute. Rebuild segments or automations based on custom_data, and use a fixed set of param keys, because every new key creates a new product attribute. See Migration Guide
  • Behavior change: logout records a logout event for the contact who is leaving
  • setFcmToken(_:) always sends a ping, also when the token has not changed
  • Added optional fcmToken parameter to setUserData and setCustomUserData, so identity and token reach the backend in one request
  • Notification handling always moves to the main thread, which fixes in-app messages lost or a crash in CoreAutoLayout when handleNotification is called from a Task, an actor or a background queue
  • Notification payloads with numeric id and type are accepted
  • Events sent after logout completes no longer fail with "No user exists yet"
  • The device iOS version is now stored on the contact
  • The framework reports its real version in Info.plist
  • Replaced a cellular radio API deprecated since iOS 12

1.1.1 (August 6, 2026)​

  • Fixed in-app click tracking: clicks reach the backend in the expected format and are counted again

1.1.0 (August 6, 2026)​

  • Behavior change: sendEvent, trackScreen, sendProductEvent, setUserData and setCustomUserData call completion(false, error) when the backend rejects a request (for example 400 or 401). Earlier versions reported success regardless, so review any logic that treats true as proof of delivery. See Migration Guide
  • Failed requests retry with a growing backoff and no longer block other queued events
  • In-app messages are presented through the active foreground scene instead of the deprecated keyWindow
  • In-app button clicks are always reported, including custom scheme links handled by InAppNotificationClickDelegate
  • Deprecated shouldTrackActivities, which never enabled automatic screen tracking. Call trackScreen(with:) or use the Trackable view controllers

1.0.0 (June 2, 2026)​

  • Breaking change: removed all external dependencies. Firebase and Gifu are no longer bundled or required. See Migration Guide
  • Bring your own token: pass the FCM token with setFcmToken(_:), ping(fcmToken:) or the fcmToken parameter of the initializer
  • logout takes the token to remove from the contact: logout(fcmToken:)
  • The SDK no longer calls FirebaseApp.configure() and is no longer the Firebase Messaging delegate. Your app configures Firebase and sets its own MessagingDelegate

0.7.12 (April 2, 2026)​

  • Added SPM support
  • Started phasing out CocoaPods integration method
  • Removed bundled Firebase and Gifu dependencies from the SPM package: add firebase-ios-sdk (11.0.0) and Gifu (3.3.1) manually to your project
  • Added InAppNotificationClickDelegate for custom URL handling on in-app message button taps
  • Added inAppAlertCloseButtonText static property to customize the in-app close button label (has no effect)
  • Added automatic keychain reset on fresh install

0.7.3 (August 4, 2025)​

  • Bump compiler version

0.7.2 (February 19, 2025)​

  • Fixed issue with Gifu dependency

0.7.1 (August 12, 2024)​

  • Added image support to Mobile Push Messages

0.7.0 (April 8, 2024)​

  • Updated compiler compatibility to support latest language features

0.6.9 (February 28, 2024)​

  • Added support for refactored In-App Messages
  • Added fontResolver for custom font support in in-app messages
  • Removed deprecated Preload Content functionality
  • Increased minimum supported iOS version from iOS 11 to iOS 13

0.6.8 (May 31, 2023)​

  • Fixed automatic Firebase Token synchronization

0.6.7 (January 26, 2023)​

  • Refactored Firebase Token refresh handling in register method

0.6.6 (September 12, 2022)​

  • Fixed sound issues for Mobile Push Messages

0.6.5 (June 3, 2022)​

  • Added support for Apple Swift version 5.6.1 compiler

0.6.4 (February 2, 2022)​

  • Fixed multiple Contacts created when using logout method

Flutter​


1.0.2 (July 5, 2025)​

  • Bump package versions
  • Enhance standard attribute handling in Customer
  • Add new Example Project
  • Remove unused Push Displayed endpoint

1.0.1 (November 5, 2024)​

  • Bump package versions
  • Update connection controller to match new API

1.0.0 (April 11, 2024)​

  • Added support for refactored In-App Messages
  • Added callback to buildNotificationOnMessageReceived in order to define own behaviour on interact

0.1.2 (March 14, 2024)​

  • Upgraded all packages versions

0.1.1 (October 17, 2023)​

  • update connectivity_plus dependency, which caused IOS build errors

0.1.0 (September 19, 2023)​

  • Fixed problems with a missing userKey
  • Added new contact session creation after logout

0.0.8 (August 31, 2023)​

  • Fixed serialization for cached requests
  • Added request removal from cache if resending falied

0.0.7 (August 31, 2023)​

  • Upgraded package dependencies
  • Removed flutter custom tabs
  • Added url_launcher pacakge to handle links

0.0.6 (June 22, 2023)​

  • Converted local DateTime to utc in events

0.0.5 (April 12, 2023)​

  • Removed Local Notifications
  • Fixed device info lib version
  • Updated example to show how to use package

0.0.4 (February 6, 2023)​

  • Removed Awesome Notifications
  • Added Flutter Local Notifications

0.0.3-beta.1 (September 14, 2022)​

  • Changed dependency of Awesome Notifcations
  • Added query for FirebaseMessaging permissions

0.0.2 (June 26, 2022)​

  • Added package support flutter >=3.0.0
  • Added missing serialization methods to models
  • Update min version of flushbar package

0.0.1 (May 26, 2022)​

  • Initial release
  • Added support for sending CustomEvents, ProductEvents, ScreenEvents, NotificationEvents
  • Added ping on app launch, registering and unregistering contact
  • Added request caching on Internet exceptions
  • Added resending requests
  • Added receiving notifications from FCM, ability to customize
  • Added launching urls in Custom Tabs.