Changelog

Analytics

  • Zoning: Fix an issue where some UI elements could be captured twice
  • Fix an issue that could cause an erroneous session duration computation
  • Fix memory leaks

Session Replay

  • Font are supported for NSAttributedString

Error Analysis

  • CSCrashReporter is updated to 1.0.0

Core SDK

  • Delivery: Fix an issue with Xcode 15.3 when SDK is installed through Swift Package Manager

Core SDK

  • Delivery: Fix a privacy manifest issue for required reason API NSPrivacyAccessedAPICategorySystemBootTime

Analytics

  • Specific UI components can now be excluded from the snapshot capture, on specific screens, via the project configuration
  • Improve the capture of long snapshots, for screens with multiple scrolling components
  • Fix an issue on snapshot that could cause some views to be overlapped
  • Fix some memory leaks

Session Replay

  • Add SR link retrieval inside the logs when then API callback is triggered
  • Fix on SR link where it would be updated twice when session is incremented

Error Analysis

  • Add an API to disable errors auto collection

Error Analysis

  • Fix an issue where network requests with status code 2xx are collected as API Errors.

Error Analysis

  • Fix an issue where API Error details are not collected.

Session Replay

  • Add new callback API for updates on replay link
  • Deprecate existing API to get replay link

Error Analysis

  • Fix a rare issue in the Crash Reporter, that could cause a crash

Core SDK

  • Delivery: Fix an internal configuration issue that would cause an App Store rejection because of our dynamic framework

Core SDK

  • Session Replay: Fix a bug where the masking of a view wouldn’t be applied properly

Error Analysis iOS SDK

  • Delivery: Error Analysis package is now delivered inside the main package Core SDK. See Migration Guide section for more details

Core SDK

  • Privacy manifest: SDK now includes a privacy manifest. See App Store Privacy Guidelines Compliance section for more details
  • Signature: SDK is now digitally signed and can be verified automatically in Xcode 15
  • ForgetMe: This API is now deprecated. See the Privacy section for more details.
  • Session Replay: Fix a crash related to threading issues in SRM module
  • Session Replay: Fix an issue when masking containers in SwiftUI
  • CS InApp: Fix a crash when accessing replay link
  • Snapshots: Fix a bug where taking a snapshot could cause the app to freeze on some screens containing multiple UIWindow

Error Analysis iOS SDK

  • Privacy manifest: SDK now includes a privacy manifest
  • Signature: SDK is now digitally signed and can be verified automatically in Xcode 15

Core SDK

  • Zoning analysis: Fix a bug where a long snapshot wouldn’t be scrollable in the Zoning module
  • Zoning analysis: Fix a bug where some elements of a long snapshot wouldn’t appear in the Zoning module

Core SDK

  • Zoning analysis: Improve the support of SwiftUI LazyStacks in the Zoning module
  • Session Replay: Fix a bug that could cause applications using AVPlayer to crash

Core SDK

  • Snapshots: Display more detailed error message in case of failure

Error Analysis iOS SDK

  • WebView errors: Collect JS, API & Custom errors occurring in WebViews. More info on WebView errors
  • Crash Reporter: Added support for compressed dSYMs and fastlane. More info on Upload dSYMs

Core SDK

  • Zoning analysis: Fix an issue with Snapshots that could lead to incorrect data

Error Analysis iOS SDK

  • API Errors: Fix a crash when passing nil data to URLSession.uploadTask(with request: URLRequest, from bodyData: Data) for background sessions.

Core SDK

  • Zoning analysis: Fix an issue with identifying some elements
  • Session Replay: Fix an issue with gesture displayed over WebViews
  • Session Replay: Improve screen duration calculation

Core SDK

  • Session Replay: Fix a memory leak that could happen when Session Replay was stopped
  • Session Replay: Fix an issue with views being wrongly masked/unmasked
  • Misc: Fix a bug where user sessions would span over abnormally long periods of time.

Error Analysis iOS SDK

  • API Errors: Fix a memory leak related to URLSessionDelegate

Core SDK

  • Custom Variables: The Custom Variables feature is now in General Availability
  • Snapshots: Long Snapshots feature is now in General Availability
  • Exposure Metrics: Exposure metrics feature is now in General Availability
  • Zoning analysis: Reliable targets feature is now available for UIKit views
  • Integrations: It’s now possible to use Adobe Analytics with Contentsquare
  • Track WebView: Introducing new WebView tracking relying on Web Tracking Tag.
  • Session Replay: WebView support. See Session Replay WebView documentation doc
  • Session Replay: Fix a masking issue for TextField on SwiftUI
  • Session Replay: Fix a memory leak related to masking
  • Session Replay: Fix an issue that would cause some collected screens to appear grey in the session replay player
  • Session Replay: Add a new API ‘sendUserIdentifier’ to search a replay based on a personal user identifier See the Session Replay Send user identifier section.

Error Analysis iOS SDK

  • API Errors: Update log level to info for API Errors activation log.

Core SDK

  • Exposure Metrics: Exposure metrics feature is now part of the SDK (Beta phase). It will help you measure engagement directly in zoning by showing which zones are attracting clicks, or on the contrary being ignored.
  • Snapshots: Improved support of ‘LazyVStack’, the content is now properly captured
  • Session Replay: Fix a bug where buttons with background images wouldn’t be displayed correctly

Error Analysis iOS SDK

  • Crash Reporter: Create script to upload dSYM files to symbolicate crashes.
  • Crash Reporter: Collect stack trace and details for crashes.
  • Misc: Fix a bug that caused an error when the SDK was imported.

Core SDK

  • Misc: Fix a bug where user sessions would span over abnormally long periods of time.
  • Misc: Add contextual information in the log displayed when an API is used before the SDK can start.

Error Analysis iOS SDK

  • Crash Reporter: Collect basic information for crashes.
  • ⚠️ Added PLCrashReporter dependency:
  • API Errors: Compress API Error details and limit the size of the collected information.
  • API Errors: Limit API errors to 20 per screenview.

Core SDK

  • Custom Variables: The Custom Variables feature is now part of the SDK (Beta phase).
  • Snapshots: Fix a bug where taking a snapshot of a modal view would fail.

Error Analysis iOS SDK

  • API Errors: API Troubleshooting details.
  • API Errors: Print a console log for screen-related events sent before first screen event.

Core SDK

  • Session Replay: Fix a bug where SwiftUI Texts wouldn’t be masked/unmasked properly
  • Misc: Fix user ID renewal bug on simulator

Error Analysis iOS SDK

  • API Errors: Fix a bug where API Errors were sometimes missed.
  • API Errors: Add a new API to mask URL by patterns.

Core SDK

  • Session Replay: Fix a bug where UITextFields wouldn’t be masked properly
  • Session Replay: Fix a bug where UITextFields wouldn’t be rendered properly in the replay
  • Session Replay: Fix a bug where gestures on masked TextFields wouldn’t be handled correctly
  • Misc: Fix a bug where the snapshot button would disappear in landscape mode

Error Analysis iOS SDK

  • API Errors: Collect failed network requests
  • Drop support for iOS 11. Minimum support version is now iOS 12.4. See Compatibility section.
  • Session Replay: Add a Log when Session Replay data exceeds the 8 MB limit for a screenview
  • Session Replay: Improve background on unmasking/masking in UIKit and SwiftUI
  • Session Replay: Custom components (or system components not listed) are now masked in the default masking state
  • Session Replay: Masking is applied recursively to all children unless a specific rule has been applied to 1 of them. See Masking and Unmasking behaviors on a parent view
  • Log visualizer Enabled by default when in-app features is activated
  • Session Replay: Fix a bug where the texts built with SwiftUI wouldn’t appear in the replays
  • Session Replay: Fix a bug where the modals and alerts wouldn’t appear in the replays
  • Snapshots: Fix a bug where tab bar icons wouldn’t be displayed properly
  • Misc: Add a CSLIB log when a request from CS SDK fails
  • Dynamic Variables: Key length increased from 50 to 512 chars
  • Misc: Fix a bug where the SDK would send several AppHide events when app goes to background
  • Snapshots: Fix a bug where tab bar icons wouldn’t be displayed properly
  • Misc: Fix a bug where the app would become inactive after calling a review prompt with SKStoreReviewController.requestReview()
  • Session Replay: Add new high-level APIs to ease the masking implementation: maskTexts, maskImages, maskTextInputs See the Session Replay Data Masking section
  • Session Replay: SwiftUI is now fully supported in Session Replay ; all SwiftUI elements are properly collected
  • Session Replay: Fix a bug where Session Replay data collection wouldn’t stop when Contentsquare.stopTracking() is called
  • Snapshots: Fix a bug where WebViews would have incorrect position
  • Misc: Improvements and bug fixes
  • Session Replay: Add a new API ‘setDefaultMasking’ to ease the masking implementation See the Session Replay Data Masking section
  • Session Replay: Add a new event in the replay when the quality of the replay has changed
  • Session Replay: Add new events in the replay when the replay starts and stops
  • Session Replay: Fix a bug where Session Replay data collection wouldn’t start as expected
  • WebViews tracking: Update of the WebViews injection mechanism to support new events sent by the WebView Tracking Tag (Dynamic variable, Transaction, Opt-in, Opt-out) See the WebView Tracking Tag documentation
  • Screenview tracking: Disabled automatic screenview after background/foreground when screen name is empty See Screenview after app in background section
  • Misc: Improvements and bug fixes
  • Contentsquare visual identity: Updated Contentsquare logo and snapshot button to match the new visual identity
  • Snapshots: More accurate message displayed in case of error.
  • Session Replay: Add feature to select different quality levels for Wi-Fi and Cellular See the Session Replay Quality Levels section
  • Session Replay: Fix a bug where the session number would not be correctly incremented.
  • Session Replay: Fix a bug where the session replay link would be erroneous.
  • Session Replay: Misc improvements and bug fixes
  • Session Replay: Data consumption optimisation on scrollable views; Fixed an issue where sessions were wrongly flagged as collected.
  • Included in tracking: When in-app features is enabled, the device is now always included in tracking.
  • Manual Integration: Updated process for dynamic and static linking. See “Manual Integration” in How to include it section
  • Misc: Minor improvements and bug fixes.
  • Static Framework: Fixed an error when uploading app to App Store Connect.
  • Manual Integration: Our SDK can be integrated manually.
  • SDK Version: Fixed a bug caused by a new Xcode option introduced in version 13 called “Manage Version and Build Number”, enabled by default in the App Store distribution process. This option is overriding the SDK version with the application version.
  • Static Framework: Fixed a build error when code coverage is disabled. Manual Install is not supported anymore, use Swift Package Manager or CS_iOS_SDK_STATIC instead. See How to include it section.
  • Framework: Fixed a warning in Xcode 13 and newer.
  • Session Replay: Added a screenview event to assign inactivity period to the right screen.
  • Network connectivity: Now able to identify 5G network.
  • Session Replay: Minor improvements around fidelity and start logic.
  • Misc: Minor improvements and bug fixes.
  • ⚠️ SDK now uses XCFrameworks for Carthage: follow this guide to migrate from framework bundles to XCFrameworks.
  • ⚠️ Added Swift Protobuf dependency: If you are using Carthage or static framework, follow the dedicated documentation to add this dependency to your project. More info on Swift Protobuf.
  • Xcode Compatibility: From this version, the SDK only works with Xcode 12.5 and newer.
  • Disable Session Replay for specific app versions: Introducing capability to disable Session Replay for specific app versions (controlled from back office).
  • Session Replay improvements: Optimisations around data format, storage and sending strategy; Fidelity improvements (dialogs, text, buttons).
  • Fixed Session Replay issue when using Simulator: causing the data to be sent on the wrong endpoint.
  • Fixed Session Replay bug: causing a crash with WebKit in some cases.
  • Misc: Minor improvements and bug fixes.
  • Misc: Minor improvements and bug fixes.
  • Disable auto-start: Option to start the SDK in a manual method instead of starting automatically. Check out the Manual Start section
  • Session Replay: Fidelity improvements; Improved data sending for better performances; supports keyboard display;
  • Stability: Fixed a crash caused by Session Replay code in edge cases.
  • Misc: Minor improvements and bug fixes.
  • Session Replay: Fidelity improvements; displays when app is put in background; when masked, text is now replaced by lalala; ability to send data over cellular network (if feature is enabled); requests are now compressed; replay link button added to in-app features settings.
  • In-app features: Fixed a bug that caused in-app features enabling to fail the first times.
  • Misc: Minor improvements and bug fixes.

React Native related: Fixed a bug on alerts impacting iOS app running with React Native 0.64+. WebViews: Fixed a potential issue related to WebViews management.

  • Session Replay: We now support dialogs and device orientation (landscape mode); fidelity improvements and bug fixes; mask/un-mask types from in-app features settings;
  • Snapshot button: Fixed an issue that made the button disappear on long press
  • Snapshot: Display error message when capturing snapshot before screenview
  • Track screen: when API called but no screen name is pushed, the SDK will use a default value “missing screenName” with the name of the View Controller.
  • Logs: Logs intended for Contentsquare SDK developers (Verbose) are now hidden to make it less confusing, it means you can now simply filter on CSLIB. We also improved logs to debug WebView tracking.
  • Session Replay: Session Replay feature is now part of the SDK and disabled by default. This feature is only accessible to customers participating in the Early Access program. For more information reach out to your Contentsquare contact.
  • Snapshot capture: Fix a bug causing the app to crash when capturing a snapshot in an edge case scenario.
  • Snapshot capture: Screen name is now displayed when capturing a snapshot (on the “snapshot in progress/success/fail” screens)
  • WebView: WebView tracking back-office setting has been removed. WebView tracking is now always enabled.
  • Misc: Minor improvements and bug fixes.

Session: Corrected a bug preventing a session to end because of a dynamic variable triggered before App Start.

  • In-app features activation: A simpler and unified way to enable features living inside the SDK (Snapshot Capture and Logs) along with its tracking capabilities. See Enable in-app features section
  • WebView: Minor improvement to enable WebView zoning analysis
  • Snapshot: Minor improvement for handling clipped views

Upgrading from a previous version: Make sure to remove the snapshot mode flag (Contentsquare.enableSnapshots = true) used to enable snapshot mode and to implement in-app features.

  • Disable logs and clipboard access on iOS 14: The upcoming iOS 14 will embark a banner notifying users when apps are accessing the clipboard. To prevent this to happen, Logs are disabled on iOS 14.
  • Drop support for iOS 9. Minimum support version is now iOS 10. See Compatibility section
  • Dynamic Variables: Key and value are now trimmed when maximum length is exceeded. If key or value are empty, the SDK now sends the literal string “cs-empty” instead. See Dynamic Variables section
  • Transaction currency: Lower and Uppercase are both supported.
  • Snapshots: Improvements for React Native screens and snapshot size
  • Logs: Some improvements for logs.
  • SwiftUI Support: Now providing official support for SwiftUI (Snapshot Mode, gestures tracking, etc.)
  • Minor improvements and bug fixes.
  • Minor bug fix
  • New logs: This version brings completely redesigned logs for better understanding of the SDK behavior. See dedicated section Debugging and logging.
  • Enable Snapshot Mode: New name for the API allowing for Snapshot Mode enablement: enableSnapshot. The previous API isDebug is now marked as deprecated.
  • Snapshot Button: Fix issue related to snapshot button disappearing in some situations: behind a modal, after keyboard displayed, etc.
  • Dynamic Variables: The API is now available in Objective-C. This is also a Prerequisite for React Native support.
  • Track Transactions - Currency: We now provide the ability to pass the currency as an “alphanumeric code” (i.e. “USD”) on top of the “numeric code” (i.e. “840”). See the dedicated section Track transactions.
  • Minor improvements and bug fixes
  • Breaking change: the main class ContentSquare is renamed Contentsquare (lower-case s) and the framework is now called ContentsquareModule.
  • Gesture tracking: now using the native system gesture recognizer
  • Performance improvements: Impact on CPU has been reduced. See Impact on performances section.
  • Xcode/Swift Compatibility: From this version, the SDK will be compatible with all future Swift versions
  • Dynamic Variables: Enforce limitation for the key and value length.
  • Minor improvements and bug fixes
  • Static framework is now available. See Using the static framework (manual install) tab in the “Add Contentsquare to your app” section.
  • Adding support to Swift 5.1.2 and Xcode 11.2

/!\ This version does not support previous Xcode versions.

  • Improvement around events storage management when the device storage is full
  • Dynamic Variables: Send custom data to Contentsquare for session segmentation. Dynamic Variables API
  • Snapshot mode launched at App start: No need to shake the device to trigger Snapshot Mode dialog. Benefits: works on a simulator and avoids conflict with features bases on shake detection.
  • CollectionView and TableView tracking: We improve the gestures tracking accuracy for those elements.
  • Support for Swift 5.1 and Xcode 11
  • Use lower priority QoS for event requests
  • Minor improvements related to snapshots
  • Minor improvement to prepare transaction API support for React Native.
  • Another minor improvement to make our SDK compatible with other SDKs.
  • Minor improvement to make our SDK compatible with other SDKs.
  • Track screens: Implement the new Track Screen API to accurately track screen_view events for all your app screens.
  • User Consent required by default: The default privacy setting for every new app will be set to opted-out by default. This means every new user will be opted-out until the Opt-in API will be called.
  • Swift 5 support
  • Xcode 10.2 support
  • Snapshots improvements
  • Add support for HKD currency when tracking Transactions
  • Other minor improvements and bug fixes
  • Add screen URL customization
  • URL structure change: added the screen title in the query parameter to match a standard format between iOS and Android
  • Snapshot mode
  • WebView tracking
  • Screen snapshot quality improvements
  • Minor improvements and bug fixes
  • Minor improvements and bug fixes
  • Minor improvements and bug fixes
  • Change screen elements identification (target view path collected with gestures).
  • Add Xcode 10.1 support
  • Fixed integration bug related to private modules
  • Minor improvements and bug fixes
  • SDK is now available on CocoaPods and Carthage
  • Minor improvements and bug fixes
  • iOS SDK 1st version