For the complete documentation index, see llms.txt.

Changelog

Last updated View as MarkdownSet up with AI

Opt-in to CSQ Experience Platform

Section titled Opt-in to CSQ Experience Platform

Follow these steps to switch to CSQ Experience Platform and combine Experience Analytics and Product Analytics under a single data source.

CSQ Experience Platform is currently in Early Access. To gain access, contact your Customer Success Manager.

How implementation differs for CSQ Experience Platform

Throughout the documentation, code samples use tabs to show the differences between standalone integrations and CSQ Experience Platform integrations. Your selection persists across pages.

CSQ Experience Platform docs support hint

  1. Update the SDK package to the latest version.

  2. Replace your current CSQ.start() or CSQ.start(environmentID:) call with the dataSourceID provided by your Customer Success Manager. This links your app to the CSQ Experience Platform data source.

    AppDelegate.swift
    CSQ.start(dataSourceID: "YOUR_DATASOURCE_ID")
  3. Review changes introduced in 1.10.0 which notably removes support for several Product Analytics options.

  • Experience Analytics: 4.53.0 → 4.53.1
  • Product Analytics Core: 0.10.0
  • Product Analytics Autocapture: 0.11.0
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.2.4

Experience Analytics

  • Bug fix: fixed an issue related to element identification duplication.

Build

  • Mergeable Library: disabled mergeable libraries for Experience Analytics SDK to avoid forcing CocoaPods 17 upgrade.
  • Experience Analytics: 4.52.4 → 4.53.0
  • Product Analytics Core: 0.9.2 → 0.10.0
  • Product Analytics Autocapture: 0.10.3 → 0.11.0
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.2.1 → 0.2.4

Experience Analytics

  • Improvement: reduced CPU consumption when screen has animated layers
  • Improvement: better management of hidden views for exposure rate

Product Analytics

  • Improvement: Product Analytics touch events now follow Session Replay text masking, covering both API and remote masking.
  • Improvement: Legacy Product Analytics masking APIs now apply to Session Replay. To emulate the previous behavior, use CSQ.setDefaultMasking(false).
  • Improvement: CSQ.trackEvent and CSQ.addEventProperties now accept arrays which can be used as list properties. A list is sent as one value with its elements joined by ||, up to 1024 characters.
  • Improvement: View controller screen names can be customized by overriding csqScreenNameOverride.

Session Replay

  • Controlled Exposure is now available in Early Access. To gain access, contact your Customer Success Manager.
  • Added: CSQ.encrypt(view:), the SwiftUI csqEncrypt() modifier and CSQ.clearEncrypt(view:) for reusable views. sendUserIdentifier also supports Controlled Exposure.
  • Bug fix: fixed a crash (EXC_BAD_ACCESS in ViewPropertiesCache.getNodeType(node:)) caused by unsynchronized access to a shared cache while Session Replay computed view style changes.
  • Bug fix: fixed an issue related to horizontal gestures and animations not being reflected in replays.
  • Bug fix: fixed a semi-transparent overlay in replays: a gradient background is now flattened to a solid color only when it covers the view.

Performance and Stability

  • Bug fix: Fixed a crash related to the telemetry queue.
  • Experience Analytics: 4.52.3 → 4.52.4
  • Product Analytics Core: 0.9.2
  • Product Analytics Autocapture: 0.10.2 → 0.10.3
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.2.0 → 0.2.1

Experience Analytics

  • Improvement: improved performance when layers are animated.
  • Bug fix: fixed view reordering in horizontal scroll views within collection and table view cells.

Product Analytics

  • Bug fix: fixes SwiftUI button text capture for modifier combinations that significantly change the layer structure.
  • Bug fix: autocapture of UITableViewCell and UICollectionViewCell instances without a contentView no longer triggers creation of the contentView.

Session Replay

  • Bug fix: fixed a crash caused by a race condition: SwiftUI text drawn off the main thread could access state shared with Session Replay's text capture without synchronization.

WebViews

  • Bug fix: fixed a TypeError: undefined is not an object (evaluating 'window.webkit.messageHandlers.…postMessage') JavaScript error raised by window.CSJavascriptBridge when a native message handler was not registered in a webview. The error did not crash the app, but could drop the queued events of the affected webview.
  • Experience Analytics: 4.52.1 → 4.52.3
  • Product Analytics Core: 0.9.2
  • Product Analytics Autocapture: 0.10.2
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.2.0

Session Replay

  • Bug fix: fixed an object lifetime crash (SIGABRT in swift_abortRetainUnowned, raised from HierarchyObserver.track(_:)): on iOS 26, a layer added while scrolling could reach Session Replay after the object it depended on had been released, for example when the session expired.

WebViews

  • Bug fix: eliminate a potential desynchronization issue when capturing webviews.
  • Experience Analytics: 4.52.0 → 4.52.1
  • Product Analytics Core: 0.9.2
  • Product Analytics Autocapture: 0.10.2
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.2.0

Experience Analytics

  • Improved reliability of exposure rate and scroll rate.

Session Replay

  • Bug fix: fixed SwiftUI image foreground color issues.
  • Bug fix: fixed an issue where the keyboard was sometimes not displayed.
  • Bug fix: fixed a crash related to SwiftUI.
  • Experience Analytics: 4.51.2 → 4.52.0
  • Product Analytics Core: 0.9.1 → 0.9.2
  • Product Analytics Autocapture: 0.10.1 → 0.10.2
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.1.4 → 0.2.0

Experience Analytics

  • Bug fixes and performance improvements.
  • Experience Analytics: 4.51.1 → 4.51.2
  • Product Analytics Core: 0.9.1
  • Product Analytics Autocapture: 0.10.1
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.1.4

WebViews

  • Bug fix: fixed a synchronisation issue that could result in a "Webview Not Tracked" in the Session Replay Player
  • Bug fix: fixed an issue where coming back from background into a webview would result in a "Webview Not Tracked" in the Session Replay Player
  • Experience Analytics: 4.51.0 → 4.51.1
  • Product Analytics Core: 0.9.1
  • Product Analytics Autocapture: 0.10.1
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.1.4

Build

  • Re-signed the release artefacts with a new valid certificate to resolve a code-signing validation failure (CSSMERR_TP_CERT_REVOKED). No functional changes.
  • Experience Analytics: 4.50.0 → 4.51.0
  • Product Analytics Core: 0.9.0 → 0.9.1
  • Product Analytics Autocapture: 0.10.1
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.1.3 → 0.1.4

Experience Analytics

  • A more explicit message is displayed when the screenshot size exceeds server-side limit

Product Analytics

  • Pending events are now uploaded when the app enters the background.

Session Replay

  • Improve stability when calling APIs from background threads.
  • Fix harmonized masking behavior for fully SwiftUI-based apps.
  • Experience Analytics: 4.46.4 → 4.50.0
  • Product Analytics Core: 0.8.8 → 0.9.0
  • Product Analytics Autocapture: 0.10.1
  • Product Analytics Notification: 0.8.3
  • CSQ Core: 0.1.3

Experience Analytics

  • The Session timeout definition changes from "30 minutes after being in background" to 30 minutes after last event. See Session definition.

Product Analytics

  • When Product Analytics and Experience Analytics are used together for the first time, a new PA user ID is generated that is derived from the EA visitor ID. If the PA user was previously identified, the user is merged with the previous one based on that identity.
  • User IDs are now rotated every 13 calendar months.

API update: CSQ.configureProductAnalytics() is now deprecated in favor of use CSQ.start() which combines SDK configuration and initialization in a single call:

AppDelegate.swift
CSQ.configureProductAnalytics(
environmentID: "YOUR_ENVIRONMENT_ID",
additionalOptions: [
// ...
]
)
CSQ.start()
CSQ.start(
environmentID: "YOUR_ENVIRONMENT_ID",
options: [
// ...
]
)

Removed: .captureVendorID, .captureAdvertiserID, .clearEventPropertiesOnNewUser, .messageBatchByteLimit, .messageBatchMessageLimit, .resumePreviousSession, .pruningLookBackWindow, .disableScreenviewForwardToDXA, .disableScreenviewForwardToPA, .interactionHierarchyCaptureLimit, .disableInteractionTextCapture, and .disableInteractionAccessibilityLabelCapture are no longer available. Remove them from your CSQ.start() call if present:

CSQ.start(
environmentID: "YOUR_ENVIRONMENT_ID",
options: [
.captureVendorID: true,
.captureAdvertiserID: true,
.clearEventPropertiesOnNewUser: true,
.messageBatchByteLimit: 200_000,
.messageBatchMessageLimit: 100,
.resumePreviousSession: true,
.pruningLookBackWindow: 6,
.disableScreenviewForwardToDXA: true,
.disableScreenviewForwardToPA: true,
.interactionHierarchyCaptureLimit: 5,
.disableInteractionTextCapture: true,
.disableInteractionAccessibilityLabelCapture: true,
]
)

Renamed: .enableUIKitAutocapture is now .enableNativeAutocapture:

CSQ.start(
environmentID: "YOUR_ENVIRONMENT_ID",
options: [
.enableUIKitAutocapture: true,
.enableNativeAutocapture: true,
]
)

Session Replay

Added: .sessionReplayAutoStart — set to false to disable automatic Session Replay start and control it manually. Defaults to true.

CSQ.start(
environmentID: "YOUR_ENVIRONMENT_ID",
options: [
.sessionReplayAutoStart: false
]
)
  • Experience Analytics: 4.46.3 → 4.46.4

Build

  • Re-signed the release artefacts with a new valid certificate to resolve a code-signing validation failure (CSSMERR_TP_CERT_REVOKED). No functional changes.
  • Experience Analytics: 4.46.2 → 4.46.3

Experience Analytics

  • Improved runtime stability

Session Replay

  • Improved performance of view hierarchy processing, reducing CPU usage.
  • Fixed a threading issue that could cause occasional crashes.
  • Fixed an issue where some images could be missing in replays.

Errors

  • Enhanced tracking of initial crashes after application installation.
  • Experience Analytics: 4.46.1 → 4.46.2

Experience Analytics

  • Fixed an issue where a screenshot capture would cause the app to become unresponsive

Session Replay

  • Fixed a crash related to SVG images when harmonized masking is enabled
  • Experience Analytics: 4.46.0 → 4.46.1

Experience Analytics

  • Zoning / Heatmap: Add support for SwiftUI drawingGroup

Session Replay

  • Fix a protobuf serialization crash
  • Fix a crash related to NSAttributedString encoding
  • Experience Analytics: 4.45.6 → 4.46.0
  • Product Analytics Notification: 0.8.1 → 0.8.3

Experience Analytics

  • Improved Zoning metrics accuracy for some custom SwiftUI components
  • Fixed an issue where a screenshot captures would fail for React Native applications

Session Replay

  • Improved session synchronization between Session Replay and Product Analytics
  • Enhance playback reliability when using stopTracking() followed by resumeTracking()
  • Strengthen playback stability when optOut() is triggered
  • Fix nil replay link when callback is subscribed before start()
  • Enhance stability when using csMasking SwiftUI modifier
  • Improve robustness against race conditions involving weak SwiftUI component references
  • Optimize handling of collections with unusually long durations

Errors

  • Improve API error handling by ensuring URLs remain visible when invalid masking patterns are provided via ErrorAnalysis.setURLMaskingPatterns()
  • Experience Analytics: 4.45.5 → 4.45.6

Session Replay

  • Fix a crash due to infinite recursion when a sublayer references the parent view as delegate (issue observed in CorePlot)
  • Experience Analytics: 4.45.4 → 4.45.5
  • Experience Analytics: 4.45.3 → 4.45.4
  • Experience Analytics: 4.45.1 → 4.45.3
  • Product Analytics Core: 0.8.7 → 0.8.8
  • Product Analytics Autocapture: 0.9.1 → 0.10.1
  • Product Analytics Notification: 0.8.1
  • Experience Analytics: 4.45.0 → 4.45.1
  • Experience Analytics: 4.44.3 → 4.45.0

Experience Analytics

  • Fixed a crash related to Zoning and Heatmap data collection on iOS 26 devices

Session Replay

  • Fixed a crash related to gesture capture on iOS 26 devices
  • Fixed an issue where the background color of an Image wouldn't be correctly rendered
  • Fixed a protobuf serialization crash on iOS 26 devices
  • Performance improvement on iOS 26 devices
  • Experience Analytics: 4.44.2 → 4.44.3

Session Replay

  • Fixed a rare crash related to gesture.
  • Experience Analytics: 4.44.1 → 4.44.2
  • Product Analytics Autocapture: 0.9.0 → 0.9.1

Product Analytics

  • Fixed a crash when calling AttributedString(localized:) with an interpolated string.
  • Taps inside WKWebView are now ignored by default because they don't contain meaningful data and produce noise when integrating with tag capture. To restore capture on a specific view, use webView.heapIgnoreInteractions = false.

Session Replay

  • Fixed a crash related to AVPlayerViewController.

WebViews

  • The One WebView Tag feature is now available in controlled General Availability. It brings key Product Analytics features — Identity, User Properties, Hierarchy, and Target Text — to WebViews, enabling unified Product Analytics and Experience Analytics. To gain access, contact your Customer Success Manager to be added to the eligibility list.
  • Experience Analytics: 4.44.0 → 4.44.1

Experience Analytics

  • Heatmaps: Fix an issue where some taps would be inaccurate on iOS 26 devices

Session Replay

  • Fix an issue with the SDK internal Codable conformance extension for NSTextAlignment.
  • Experience Analytics: 4.43.3 → 4.44.0
  • Product Analytics Core: 0.8.7

Experience Analytics

  • Improved iOS 26 support for Zoning and Heatmap analysis
  • ⚠️ Starting with iOS 26: Reliable targets are compatible with UIKit accessibilityIdentifier only. Read more at Reliable targets
  • Improved data collection on segmented controls

Product Analytics

  • SDK is now built with Xcode 16.0.

  • Internal improvements for autocapture.

Session Replay

  • Improved iOS 26 support to display correctly text and images on SwiftUI views for apps built with Xcode 26
  • Fix a crash related to bitmap rendering
  • Experience Analytics: 4.43.2 → 4.43.3

Experience Analytics

  • Heatmaps: Fixed a crash related to frame computations

Session Replay

  • Fixed a bug where gradient backgrounds were not properly collected for React Native
  • Experience Analytics: 4.43.0 → 4.43.2
  • Product Analytics Autocapture: 0.9.0

Product Analytics

  • Our Autocapture SDK now includes support for SwiftUI

Session Replay

  • Fixed an issue where SwiftUI images were missing from the replay on iOS 26 devices.

Performance and Stability

  • Improved internal feature flag stability
  • Experience Analytics: 4.42.4 → 4.43.0

Session Replay

  • Image/Text masking configuration in the CSQ Console
  • Support Event Triggered Replay
  • Experience Analytics: 4.42.4

Session Replay

  • Fix an issue related to CSInApp on iPad
  • Support for React Native New Architecture Text
  • Improved Session Replay screen change consistency on Capacitor apps

WebViews

  • Fix an issue related to config

Initial release of the CSQ SDK.

  • Introduces the CSQ API, which combines Product Analytics, Experience Analytics, and Monitoring features into a single, cohesive library.
  • This initial release includes:
    • Experience Analytics SDK version 4.42.1.
    • Product Analytics Core SDK version 0.8.6.
    • Product Analytics Autocapture SDK version 0.8.0.
    • Product Analytics Notification Autocapture SDK version 0.8.0.

This release marks the introduction of the CSQ SDK which brings together Product Analytics, Experience Analytics, and Monitoring features. Starting with this version, the SDK releases follow a new versioning scheme.