iOS SDK 1.1.0 — 2026-04-21
New features
pauseScreenshots()/resumeScreenshots()— suspend screenshot capture for KYC, payment, and authentication screens without stopping touch or navigation tracking. UseareScreenshotsPaused()to check the current state.- Keyboard tracking —
keyboardVisibleandkeyboardHiddenevents emitted automatically from system keyboard notifications. - Long press & UISwitch —
longClickevents for long presses on interactive views;changeevents forUISwitchtoggles. - SwiftUI UIHostingController auto-tracking — screen names are derived automatically from hosted view type names;
.trackScreen(name:)still takes precedence when applied. - Self-health telemetry — SDK internal errors are reported as
internalErrorLog; uncaughtNSExceptionmetadata is captured locally and replayed on next launch. Enabled by default; opt out viaenableSelfHealthTelemetry: falseinsetup(). - Screenshot screen name — screenshots now include the current screen name in
activityName/fragmentsNamesinstead of sending empty values. - Privacy manifest —
PrivacyInfo.xcprivacyis bundled inside the XCFramework.
Improvements
setup()is now idempotent — repeated calls with the same token will not register duplicate lifecycle or orientation observers.- iOS auto-masking now also heuristically redacts PIN/OTP-style
UILabeltext containing numeric codes alongside sensitive keywords. - UIKit masking now resolves each masked view's current presentation-layer rect, clipping to scrolling ancestors and the active window — reduces mask drift during animations and partial visibility.
- SwiftUI
.maskElement()installs a hidden UIKit tracking view so screenshot masking resolves the live rendered rect at capture time. - UIKit automatic screen tracking now filters generic
UIViewControllerinstances and skips child controllers of custom container VCs to reduce event noise. - Offline queues now flush in bounded batches on reconnect instead of dumping all queued payloads at once.
Bug fixes
- SwiftUI
.trackScreen(name:)no longer renders the tracked content twice. - Token change mid-session now clears buffered events and screenshots before reconnecting, preventing replay under a different project.