iOS Changelog
Check out release history for stable releases of iOS SDKs. Stable releases have been tested thoroughly and are ready for use in your production apps.
Need to upgrade?
Select your current version to see everything that changed between it and the latest iOS release.
4.x Releases
4.7.2
Bug Fixes
- Geofence: More reliable region monitoring: Fixes cases where enter/exit events could be missed after a background sync (#1190) (0594e20)
- Geofence: Exit events are no longer missed for large geofences the device is already inside (#1191) (dd52c8c)
- Geofence: Prevent duplicate or missing events when the set of monitored geofences changes (#1193) (4f6bd8b)
4.7.1
4.6.1
4.5.1
4.5.0
4.4.3
4.4.1
4.3.1
4.1.2
4.1.1
4.1.0
4.0.0
3.x Releases
3.14.0
3.13.1
3.11.0
3.10.9
3.10.8
3.10.7
3.10.5
3.10.4
3.10.3
3.10.2
3.10.1
Bug Fixes
- Fixed an issue that caused duplicate internal calls for setting device tokens (#922) (0f5d7f0)
- Improved detection of UNUserNotificationCenterDelegate method implementations by explicitly tracking completion handler calls, ensuring more reliable notification handling across different integration scenarios (#922) (0f5d7f0)
3.10.0
3.9.0
Improvements
- Swizzling replacement:
- We've replaced the old "swizzling" method for handling push notifications with a clearer, more reliable system.
- New AppDelegate classes (
CioAppDelegateandCioAppDelegateWrapper) make integration easier, more explicit, and more maintainable.
- Deep Linking:
- Added a new
deepLinkingCallbackto fix issues with some libraries (like Firebase) that don’t properly handleapplication(_:continue:restorationHandler:). - This ensures deep links work more consistently across different setups.
- Added a new
- Sample Applications:
- Updated to show how to implement the new AppDelegate setup and deep linking — making it easier to follow and integrate.
Deprecations
- The old swizzling-based push notification setup is now deprecated. It still works, but we recommend switching to the new method as it will be removed in a future release.
- The previous deep-linking approach is also deprecated, replaced by the new
deepLinkingCallback.
3.8.2
Bug Fixes
- Parse region leniently and fall back to default region if parsing fails instead of blocking initialization (#879)
- Hardcoded the upper limit of FCM version to avoid the issues with compilation of Cocoapods SDK (#880)
3.8.1
Bug Fixes
- Fixed an issue where the “Application Installed” event was incorrectly triggered on every app launch instead of only after the initial installation.
Improvement
- Updated libraries to the latest versions to improve stability.
3.8.0
Features
- Added support for inline in-app messages. Inline in-app messages act like a part of the content on your page. They let you dynamically populate parts of your app and talk to your customers without interrupting their experience. (#864) (35fba9b)
Fixes
- Incorrectly scrolling content for in-app modal messages positioned top/bottom. #858
3.7.2
Bug Fixes
- Fixes in-app messages overlay background color being ignored from in-app message payload (#843)
3.7.1
3.7.0
Features
- Added ability to disable forwarding screen events to destinations/servers. Apps can still send screen events for local processing and use them for page rules in in-app messages by just updating SDK configuration during initialization. (#844) (486e228)
Fixes
- Handle fragments (#) when you open a web page from in-app via "Open the web" action. #842
3.6.0
Features
Fixes
- Resolve an issue that prevented push metrics from being reported for customers who set the region to the EU region. (https://github.com/customerio/customerio-ios/pull/836)
Improvement
- Updated our SDK to use the v2 version of our in-app messages API. This will provide a more reliable experience for in-app messages. (https://github.com/customerio/customerio-ios/pull/834)
3.5.1
3.5.0
3.4.1
3.4.0
Features
- Revamped the in-app messaging module to enhance performance by optimizing local processing, accelerating message loading during page transitions, and implementing a state-driven architecture for better responsiveness and control. [#815] (5cd651b)
- We highly recommend upgrading to the new in-app editor to ensure optimal performance.
Fixes
- We reduced the chance of duplicate in-app messages by keeping a local store of messages already displayed.
3.3.3
3.3.2
Bug Fixes
- This release addresses a compatibility issue for apps that have installed two or more third-party SDKs (besides Customer.io SDK) that handle push notifications. While this issue was primarily reported by our Flutter customers, it could also affect native iOS and React Native applications. (#751) (ca5abb3)
3.3.1
3.3.0
Features
- When using page rules and when an in-app messages need a second to load, the in-app message might appear after a user navigates to another page. We made changes to ensure the page-rules are checked after the message is loaded and immediately before it’s displayed in order to resolve this issue. (#731) (cb1d014)
3.2.3
Bug Fixes
- For users of our Flutter SDK and React Native SDK, this resolves a compatibility issue with 3rd party FCM Flutter and React Native SDKs. In some cases, the issue prevented push notifications from showing while the app was in the foreground when the 3rd party SDK and CIO SDK were both installed. (#736) (ccb0f47)
3.2.2
3.2.1
3.1.3
3.1.2
Bug Fixes
- track bq migration for identify profile events with no attributes (2fb4827)
3.0.0
⚠ BREAKING CHANGES
- iOS as a source for Data Pipelines (#659)
Features
- iOS as a source for Data Pipelines (#659) (0a68373)
- migration module to cater to all migration tasks (#530) (2feb1d4)
Bug Fixes
- add attributes to properties (#649) (4b02e92)
- all sdk modules can only be initialized once (ae46c7f)
- app crash on identify method (#458) (13e9862)
- compilation for test (f14b773)
- compilation issue (420a61e)
- eventbus handler ref (#469) (8c8ef91)
- journey id in migration payload (#653) (3b649c9)
- prevent duplicate automatic screenview events from being tracked (fea9ec5)
- pushEventHandler test (dc80fc2)
- remove occurrence of autoTrackDeviceAttributes from all push modules (#505) (8dc6507)
- removed last_used from properties (#477) (b0b9631)
- sample app issues (#551) (05544b3)
- use git commit instead of git branch for segment dependency (d245015)
2.x Releases
2.14.2
2.14.1
2.14.0
2.13.2
Bug Fixes
- This release addresses a compatibility issue for apps that have installed two or more third-party SDKs (besides Customer.io SDK) that handle push notifications. While this issue was primarily reported by our Flutter customers, it could also affect native iOS and React Native applications. (#743) (c3573fc)
2.13.1
Bug Fixes
- For users of our Flutter SDK and React Native SDK, this resolves a compatibility issue with 3rd party FCM Flutter and React Native SDKs. In some cases, the issue prevented push notifications from showing while the app was in the foreground when the 3rd party SDK and CIO SDK were both installed.(#735) (b0a7772)
2.12.4
Bug Fixes
- call completionHandler if push handler does not implement optional function (9996872)
- forward push received app in foreground events to 3rd party callbacks (bd55e2b)
- forward push response events to 3rd party callback functions, for CIO push (121b157)
- open deep link from main thread as required by UIKit (7d7867f)
2.12.3
2.12.2
2.12.1
2.10.0
2.9.2
2.9.1
2.8.5
2.8.3
2.8.2
2.7.8
2.7.6
2.7.4
2.7.0
2.6.1
2.5.1
2.1.0
Features
Bug Fixes
- access modifier for metric (#263) (e641982)
- added reusable code for wrapper SDKs (#247) (36adf15)
- in-app missing event (#259) (43b3e97)
- modify in-app event listener action parameters to new name (#255) (b46528a)
- region visibility modifier to be used by wrappers (#260) (f0edfbc)
- update the gist version in podspec (#256) (5451488)
2.1.0-beta.1
Features
Bug Fixes
2.0.5
2.0.2
2.0.0
⚠ BREAKING CHANGES
- make delivered push metric more reliable (0478e52)
- remove FCM dependency from cocoapods (#210)
- singleton API only way to use SDK now (#209)
- SDK should not modify custom attributes casing (#234) (8160fdf)
Bug Fixes
- add sdkwrapperconfig to rich push SDK config (#226) (e43b4cf)
- fix compile time errors notification service extensions (#214) (bd5911b)
- sdk not able to compile in ios app (#225) (e4d1b3f)
- make delivered push metric more reliable (0478e52)
- SDK should not modify custom attributes casing (#234) (8160fdf)
Code Refactoring
2.0.0-beta.1
⚠ BREAKING CHANGES
Read our migration guide to safely update from v1 to v2
- make delivered push metric more reliable
- remove FCM dependency from cocoapods (#210)
- singleton API only way to use SDK now (#209)
Bug Fixes
- add sdkwrapperconfig to rich push SDK config (#226) (e43b4cf)
- do not modify custom attributes casing (#234) (8160fdf)
- fix compile time errors notification service extensions (#214) (bd5911b)
- make delivered push metric more reliable (0478e52)
- sdk not able to compile in ios app (#225) (e4d1b3f)
Code Refactoring
2.0.0-alpha.1
1.x Releases
1.2.9
1.2.6
Bug Fixes
- device attributes shows sdk version instead of wrapper version (e2462b9)
1.2.5
1.2.0
Features
- allow option to handle deep link yourself (#177) (b8167ea)
- delete expired queue tasks (dc22280)
- in-app into develop to promote to alpha (2b2712c)
- sdk wrappers modify user-agent (5c127e5)
Bug Fixes
- cocoapods compiling of SDK (a20e583)
- compile sdk without xcode error app extensions (#185) (5fc0fd5)
- consolidate all apple platforms under ios (423f050)
- deprecating creating own instances (#202) (18859e6)
- image not shown in rich push notification (9fb8490)
- improve reliability of screen view tracking (60e9289)
- make sdkwrapperconfig accessible (#188) (f996a68)
- queue attempts to run all tasks on each run (80f90e9)
- restricting create own instance (085735c)
- some classes not found in tracking module (45f178e)
- updating gist dependency version (23c432e)
1.2.0-beta.1
Features
- allow option to handle deep link yourself (#177) (b8167ea)
- delete expired queue tasks (dc22280)
- in-app into develop to promote to alpha (2b2712c)
- sdk wrappers modify user-agent (5c127e5)
Bug Fixes
- cocoapods compiling of SDK (a20e583)
- compile sdk without xcode error app extensions (#185) (5fc0fd5)
- consolidate all apple platforms under ios (423f050)
- image not shown in rich push notification (9fb8490)
- improve reliability of screen view tracking (60e9289)
- make sdkwrapperconfig accessible (#188) (f996a68)
- queue attempts to run all tasks on each run (80f90e9)
- some classes not found in tracking module (45f178e)
1.2.0-alpha.4
1.2.0-alpha.3
1.2.0-alpha.2
1.1.0
Features
- add device_manufacturer device attribute (585aefb)
- adding support for device attributes and custom device attributes (#143) (84ead00)
Bug Fixes
- add siteid to logs help with multi-workspace (#130) (0ad3906)
- change property name from push_subscribed to push_enabled (2f071ec)
- locale uses preferred language (4a5ecf1)
- missing public sdk functions (0ca0618)
- remove platform from os_version attribute (f735197)
- use dashes instead of underscores device locale (f85e858)
1.1.0-beta.1
Features
- add device_manufacturer device attribute (585aefb)
- adding support for device attributes and custom device attributes (#143) (84ead00)
Bug Fixes
- add siteid to logs help with multi-workspace (#130) (0ad3906)
- change property name from push_subscribed to push_enabled (2f071ec)
- locale uses preferred language (4a5ecf1)
- missing public sdk functions (0ca0618)
- remove platform from os_version attribute (f735197)
- use dashes instead of underscores device locale (f85e858)
1.1.0-alpha.3
1.1.0-alpha.2
1.1.0-alpha.1
1.0.2
1.0.0
Bug Fixes
- add createdAt timestamp to added queue tasks (#106) (46aab62)
- automatic screenview tracking correct siteid (#120) (abd3ea9)
- background queue timer scheduling and running (#114) (6be8a74)
- call callback on main thread APN tokens (#40) (982ce9d)
- change hostname for CIO API (#109) (90e9407)
- convert APN device token to string (#39) (1f64a13)
- deep links previously being ignored (#79) (2041767)
- duplicate entries for active workspace (#124) (c903e4a)
- improve user-agent with more detail (#74) (4301034)
- logs now show up in mac console app (#80) (535d0be)
- more safely handle 5xx, 401 status codes (#107) (d56807b)
- mutex locks shared across instances (#119) (cb169bf)
- opened push metrics (#70) (a277378)
- opened push metrics being sent to API again (#111) (93971bf)
- remove apn device token profile request body (#41) (61946c4)
- remove custom jsonencoder public functions (#122) (061a568)
- rename singletons instance to shared (#34) (3bf1384)
- rename stop identify function (#31) (d97e931)
- screen view tracking (#108) (f836b9a)
- track events type in HTTP requests (#117) (745d4ad)
Features
- add [String:Any] support to identify & track (#94) (5a220c4)
- add screen view tracking (#82) (c2034a6)
- automatic push events (#63) (cf81b23)
- create background queue (#99) (80fffb8)
- create mocks for push messaging (#35) (b2c5d62)
- event tracking (#42) (be768bb)
- identify customer (#27) (f79d1c9)
- make US default region (#28) (1d10a8f)
- register device token with FCM (#46) (f6a87e0)
- register/delete device tokens (#26) (d0ddc07)
- rich push deep links (#45) (fe21cc8)
- rich push images (#59) (03fc284)
- save all siteids registered with SDK (#30) (95db6dc)
- subsequent identifies without passing identifier (#96) (47d9166)
- track push events (#47) (a37e60e)
1.0.0-beta.2
Bug Fixes
- add createdAt timestamp to added queue tasks (#106) (46aab62)
- automatic screenview tracking correct siteid (#120) (abd3ea9)
- background queue timer scheduling and running (#114) (6be8a74)
- change hostname for CIO API (#109) (90e9407)
- more safely handle 5xx, 401 status codes (#107) (d56807b)
- mutex locks shared across instances (#119) (cb169bf)
- opened push metrics being sent to API again (#111) (93971bf)
- remove custom jsonencoder public functions (#122) (061a568)
- screen view tracking (#108) (f836b9a)
- track events type in HTTP requests (#117) (745d4ad)
Features
1.0.0-alpha.32
1.0.0-alpha.31
1.0.0-alpha.30
1.0.0-alpha.26
1.0.0-alpha.24
1.0.0-alpha.22
1.0.0-beta.1
Bug Fixes
- call callback on main thread APN tokens (#40) (982ce9d)
- convert APN device token to string (#39) (1f64a13)
- deep links previously being ignored (#79) (2041767)
- improve user-agent with more detail (#74) (4301034)
- logs now show up in mac console app (#80) (535d0be)
- opened push metrics (#70) (a277378)
- remove apn device token profile request body (#41) (61946c4)
- rename singletons instance to shared (#34) (3bf1384)
- rename stop identify function (#31) (d97e931)
Features
- automatic push events (#63) (cf81b23)
- create mocks for push messaging (#35) (b2c5d62)
- event tracking (#42) (be768bb)
- identify customer (#27) (f79d1c9)
- make US default region (#28) (1d10a8f)
- register device token with FCM (#46) (f6a87e0)
- register/delete device tokens (#26) (d0ddc07)
- rich push deep links (#45) (fe21cc8)
- rich push images (#59) (03fc284)
- save all siteids registered with SDK (#30) (95db6dc)
- track push events (#47) (a37e60e)