RUM iOS SDK changelog
iOS SDK 2.15.1
Network requests reported from Flutter and React Native now carry the HTTP reason phrase in network_request_context.status_text (for example, "OK" or "Not Found"). Previously it was always empty on iOS while Android populated it.
iOS SDK 2.15.0
- Every user-interaction event now carries
interaction_context.is_masked_element(always present, boolean): the SDK's own observation that the interaction targeted content Session Replay masked.falsealso covers "could not resolve" — a hybrid payload with no coordinates, or no frame geometry to test the point against — so the flag under-reports rather than over-reports. Read it inbeforeSendto implement policies stricter than the default redaction: drop the event, blank the coordinates, or rewrite the target. Learn more setUserInteractionaccepts an optionalis_maskedboolean, an authoritative masking verdict from a hybrid wrapper that owns its own masking (the Flutter plugin sets it). It overrides the SDK's geometry resolution and drives both the flag and inner-text redaction.FlutterViewBitmapgainedmaskRects, the rectangles Dart masked in the delivered bitmap, in Flutter-view-local points. They merge into the captured frame's mask geometry, so tap markers over masked Flutter content are now suppressed on the same terms as native masks. A reused stale bitmap carries the rects of its own frame, never a newer frame's.- Fixed network requests reported from Flutter and React Native being exported with a constant duration of 1 ms. They now carry their real measured duration.
- Interactions reported through the hybrid bridge (
setUserInteraction— React Native, Flutter) are now redacted on the same terms as native taps. Previously the bridge payload'starget_element_inner_textwas copied verbatim, so a masked element's real text shipped in the clear: the redaction only ran on the swizzled native-touch path, which emits no span in hybrid mode. Only the inner text is redacted — identity fields and coordinates are reported as-is, matching the web SDK — and the masking is resolved from the payload's coordinates against the same frame geometry that suppresses the replay's tap marker. - Native tap redaction now also tests the tap point against the frame's mask geometry, closing two gaps: text of UIKit views masked by
maskText/maskAllImages, and text under a SwiftUI.cxMask()overlay (a sibling, not an ancestor, so the view-tree walk could not see it). Both previously shipped their real text while their pixels and tap marker were masked.
iOS SDK 2.14.0
Buffered spans are now automatically flushed when the app enters the background, ensuring telemetry is uploaded before process suspension. The SDK uses UIApplication.beginBackgroundTask to extend the background time window and guarantee completion before the app is terminated.
iOS SDK 2.13.3
setUserContextnow promotes the next exported event to a snapshot event, so the session's user information refreshes immediately instead of waiting for the next error, navigation, or one-minute interval — matching the browser SDK's behavior.- Masking now applies to everything inside a masked view, not just the view it was set on. Masking a container is enough to cover its contents, including individually tappable subviews. Learn more
- Tapping inside a masked area no longer draws a tap marker in Session Replay, so a recording of a masked keypad no longer reveals which keys were pressed. The frame is still recorded, and interaction events still carry their touch coordinates.
- User interaction events now report
***for the text of any view inside a masked area. Previously only the masked view itself was redacted, so a tap on a key inside a masked keypad sent the key's label in clear. - Redacted
target_element_inner_textis now reported as***rather than omitted, matching the Android SDK. This affects views rejected byshouldSendText, password fields, and fields with a sensitivetextContentType, which previously sent notarget_element_inner_textat all.
iOS SDK 2.13.2
Fixed session sampling dropping buffered spans when the session rotates.
iOS SDK 2.13.1
- Exposed
isSessionSampledInto thebeforeSendcallback, so you can filter events with awareness of whether the session is sampled in. - Added the optional
labelsparameter to the hybrid (React Native / Flutter)reportErroroverloads, matching the native API.
iOS SDK 2.12.0
reportError now takes optional data and labels parameters on every overload (exception, error, and message). You can attach structured context and event labels in the same call instead of pairing reportError with a separate log — data lands under error_context.error_custom_data, and labels merge into the error event's labels. Learn more
iOS SDK 2.11.2
Session Replay now masks the navigation-bar title during view transitions, closing a leak where the title could appear unmasked mid-transition.
iOS SDK 2.11.1
Session Replay now holds the last captured Flutter frame instead of black-filling the frame when a bitmap is unavailable.
iOS SDK 2.11.0
Crash-event delivery now survives process death, so a crash that terminates the app is still reported on the next launch.
iOS SDK 2.10.4
The active view is now frozen onto spans at creation time, so view_context matches the view that was active when the event occurred.
iOS SDK 2.10.3
On the hybrid network path, iOS now honors the Dart / React Native wire traceId, so the exported span matches the traceparent sent on the wire.
iOS SDK 2.10.2
Crashes are now attributed to the session that crashed and to the crash-time timestamp, rather than to the session that reports them on the next launch.
iOS SDK 2.10.1
The task span is now reused on resume, so the wire traceparent matches the exported span.
iOS SDK 2.10.0
Added the createNewSession() public API to rotate the session on demand.
iOS SDK 2.9.2
- On the hybrid (React Native / Flutter) path, a
beforeSendedit to an editablecx_rumfield (for example, redactingsession_context.user_emailor rewritinglabels) was reflected intext.cx_rumbut not ininstrumentation_data.otelSpan.attributes: the encoded spans were uploaded verbatim after the callback, so the tracing mirror stayed stale and a redacted value still leaked through tracing. The OTEL attributes are now rebuilt from the editedcx_rumbefore upload — the same rebuild the native single-event path performs — so both destinations carry identical values.
iOS SDK 2.9.1
Fixed Cold Start AVG reporting multi-hour values. Prewarmed launches (iOS spawns the process in the background ahead of user intent, flagged by ActivePrewarm) and other background launches (push/fetch/location) were measured from kernel process birth time and counted as cold starts. Prewarmed launches are now skipped, and any cold-start duration beyond a 60s ceiling is dropped as a background-launch artifact. Learn more
iOS SDK 2.9.0
Session Replay now emits a one-shot init log capturing its configuration when recording starts, so the active Session Replay settings are visible in the backend. Learn more
iOS SDK 2.8.0
- Fixed SwiftUI text and images not being masked in session replay, where the synchronous UIView walk could not see inside SwiftUI hosting views (BUGV2-6045). As an interim fix, the Vision-based
TextScanner(OCR) andImageScannermaskAll(rectangle detection) pipeline stages are restored, scoped to captures whose scene contains a SwiftUI hosting view (URLEntry.containsSwiftUIContent). UIKit and Flutter capture paths are unchanged. OCR masking is probabilistic (for example, rows clipped at the viewport edge mid-scroll may escape recognition). - Fixed a session replay mask-skew bug where, during scroll animations, mask rects drifted 16–80+ px behind the text they covered (BUGV2-6045). Native-window capture now uses
layer.render(in:)(the model layer) and collects mask rects synchronously in the same render pass. - Fixed Flutter content appearing as a transparent hole in session-replay frames. A new
flutterViewBitmapProviderrequests a pre-masked RGBA8888 bitmap from the Flutter plugin's Dart rasteriser, which captures and masks in a single synchronous frame slice. - Fixed the session replay capture timer silently never firing when initialised via Flutter's background MethodChannel task queue (background threads have no run loop). All
SessionReplayentry points now dispatch toDispatchQueue.main. - Fixed session replay click frames not being detected on iOS 26:
getClickPointcast tap coordinates withas? Double, which no longer succeeds for a boxedCGFloaton iOS 26. Coordinates are now coerced from any numeric boxing (Double/CGFloat/Int/NSNumber). - Added
SessionReplayOptions.flutterViewBitmapProvider: FlutterViewBitmapProvider?, a callback for Flutter hosts to supply pre-masked frame bitmaps per capture. Learn more
iOS SDK 2.7.0
Added a customAttributes: [String: Any]? parameter on the reportError(message:, stackTrace:, ...) and reportError(message:, obfuscatedStackTrace:, ...) overloads. Custom attributes now ride alongside the parsed stack frames on the emitted error event instead of being mutually exclusive with the stack trace (CX-44438).
iOS SDK 2.6.4
The hybrid SDK path now honors excludeFromSampling (CX-40203).
iOS SDK 2.6.3
- Added the
ExcludableInstrumentationenum and theexcludeFromSamplingSDK option (CX-40199). - Added per-session sampling reroll with init-flow decoupling (CX-40200).
- Added a per-span sampling filter in
CoralogixExporter(CX-40201). - Added SwiftUI swipe detection (CX-33282).
- Fixed Session Replay scroll lag. Learn more
iOS SDK 2.6.2
Fixed a Flutter scroll freeze by using afterScreenUpdates: false.
iOS SDK 2.6.1
Fixed the tracesExporter instrumentation_data payload and the TracesExporterViewController per-span table UI. Learn more
iOS SDK 2.6.0
Hardened the Custom Spans API and fixed a network span 422 error (CX-39134). Learn more
iOS SDK 2.5.1
- Removed all
assert/precondition/fatalErrorcalls from SDK code, so the SDK can no longer crash the host app (CX-37986). - Added a global span registry (CX-37986).
iOS SDK 2.5.0
- Added the Traces Exporter (OTLP JSON) with a callback. Learn more
- Added global span trace propagation and
ignoredInstrumentsfor automatic spans (CX-35954/CX-35955). - Added the Custom Spans API, OTel context, and RUM/Tracing parity with the Browser SDK (CX-35951). Learn more
- Added the
US3domain to theCoralogixDomainenum. - Fixed preservation of
telemetry.sdk.*attributes in the OTel Resource.
iOS SDK 2.4.1
Fixed traceparent header capture in the React Native / Flutter hybrid network path.
iOS SDK 2.4.0
Added Flutter obfuscated errors plus error metadata (arch, build_id, stack_trace_type).
iOS SDK 2.3.3
Forward request and response headers and payload in the Flutter hybrid network path.
iOS SDK 2.3.2
Made Span conform to Equatable and record events conform to Hashable.
iOS SDK 2.3.1
Made Span conform to Hashable.
iOS SDK 2.3.0
- Added request/response body capture, a hybrid severity fix, and tap x/y rounding (CX-33235).
- Added response body capture with content-type stringification and a 1024-char limit (CX-33234).
- Unified
beforeSendCallBackbehavior across SDKs (CX-32889). - Fixed React Native response body capture plus
URLSessionrace conditions. - Fixed the
beforeSenderror count when severity changes (BUGV2-5379). - Preserve the request in
requestMapfor network header capture, and movedSDKSampler.
iOS SDK 2.2.0
- Added hybrid platform support for
setUserInteraction,setNetworkRequestContext, and session-replay decoupling. - Enriched
instrumentation_data.otelSpanwithcx_rum.*structured attributes. - Added the
NetworkCaptureRulemodel and thenetworkExtraConfigSDK option (CX-33230). - Added capture-rule fields on
NetworkRequestContext(CX-33232). - Added the
resolveConfigForUrl(_:configs:)API (CX-33231). - Added
shouldSendTextandresolveTargetNamedelegates for user-action events (CX-32583). - Added
UISwipeGestureRecognizerswipe detection (CX-32582). - Extended the interaction schema with scroll detection and PII-safe text (CX-32580/CX-32581).
- Process MetricKit hang diagnostics as error events (CX-31668).
- Allow clearing user context by passing
niltosetUserContext. - Decoupled ANR from Mobile Vitals and report it as error events.
- Removed unused mobile-vitals sample-rate configuration (CX-31659).
- Fixed accurate cold-start measurement via
sysctland removed the swizzle dependency (CX-31662). - Report warm start for Flutter and React Native apps (CX-31661).
- Include zero-count windows in frame statistics for accurate percentiles (CX-31666).
- Removed the 100% cap from memory utilization (CX-31664).
- Removed the CPU 100% cap to detect multi-core saturation (CX-31663). Learn more
iOS SDK 2.1.0
Eliminated delegate class scanning and migrated to industry-standard swizzling for multi-SDK compatibility.
iOS SDK 2.0.0
- Added Flutter session-recording masking support.
- Fixed severity syncing from the
beforeSendcallback toCxSpan.
iOS SDK 1.5.3
Fixed a negative-duration bug and now mark the session ID and session creation date correctly (CX-4620).
iOS SDK 1.5.2
Wired ANR detection into the scheme (CX-26496).
iOS SDK 1.5.1
Adopted async/await in internal APIs (CX-25861).
iOS SDK 1.3.0
- Added a screenshot change-detection filter for iOS Session Replay (ALPH-2515). Learn more
- Added mobile-vitals options (ALPH-2754). Learn more
iOS SDK 1.2.6
- Emit Navigation events (ALPH-2546).
- Added a Custom-measurement API. Learn more
- Added custom log labels (ALPH-2257).
- Send an internal-init event (ALPH-2654).
- Refactored mobile vitals (ALPH-2704).
- Session reset now uses a closure instead of
NotificationCenter. - Fixed an idle bug.
iOS SDK 1.2.5
Automated the CocoaPods release pipeline (ALPH-6671).
iOS SDK 1.2.3
Bumped the PLCrashReporter dependency.
iOS SDK 1.2.2
- Fixed the user-agent string.
- React Native integration fixes (ALPH-1234).
iOS SDK 1.2.1
- Fixed broken
spanidandtraceid. - Fixed an app freeze on the main thread.
iOS SDK 1.2.0
- Added persistent anonymous fingerprinting (ALPH-2644).
- Added a unified Mobile Vitals reporting API.
- Added slow / freeze frame detection (ALPH-2588).
- Added a memory detector (ALPH-2550).
- Added native iOS CPU tracking (ALPH-2579).
- Added missing metrics and logic (ALPH-1234). Learn more
iOS SDK 1.1.3
Fixed an app crash in NSMutableURLRequest ObjC bridging (ALPH-2631).
iOS SDK 1.1.2
- Externalized
PLCrashReporterfrom the main RUM module (ALPH-2488). - Fixed iOS schema issues (ALPH-2530).
- Removed duplicate swizzle code that sent multiple clicks.
sessionIdis now lowercase (ALPH-2523).ignoreUrlnow works with regex (ALPH-2519).- Fixed a
URLSessioninstrumentation deadlock. - Fixed a crash in
URLSessionInstrumentation.injectIntoNSURLSessionCreateTaskWithParameterMethod(ALPH-2507).
iOS SDK 1.1.1
Fixed several crashes (ALPH-2498).
iOS SDK 1.1.0
Refactored the idle logic (ALPH-2468).
iOS SDK 1.0.27
- Added an
isManualflag (ALPH-2429). - Added snapshot context on all severity-5 events (ALPH-2424).
- Fixed a crash in the
BatchWorker/NetworkStatusclass (ALPH-2423).
iOS SDK 1.0.26
- Added
traceparentheader injection (native) (ALPH-2296). - When using a proxy URL, the exporter now removes the span correctly (ALPH-2148).
iOS SDK 1.0.25
- Added a
traceparentheader option onCoralogixOptions(ALPH-2295). - Added proxy URL support (native) (ALPH-2292).
- Fixed a crash in
SessionMetaDataManager(ALPH-2914).
iOS SDK 1.0.24
- Changed duration handling, added undefined-text handling, and repaired broken tests (ALPH-2388).
- Fixed images being skipped during session recording (ALPH-2360). Learn more
iOS SDK 1.0.23
- Added Flutter support for cold / warm mobile vitals (ALPH-1234).
- Initialize
segmentIndexwhen the page is incremented (ALPH-2286).
iOS SDK 1.0.22
- Added Session Replay click events (ALPH-1885).
- Added a disable-swizzling option (ALPH-2246). Learn more
iOS SDK 1.0.21
- Added screenshot events in session recording (ALPH-2159).
- Fixed a crash in
URLSessionInstrumentation(ALPH-2218). Learn more
iOS SDK 1.0.20
- Merged Session Replay into the main module (ALPH-2183).
- Fixed a crash in
URLSessioninstrumentation (ALPH-2195). Learn more
iOS SDK 1.0.19
Added beforeSend logic.
iOS SDK 1.0.18
- Rolled back OpenTelemetry to 1.9.0 (ALPH-2154).
- Fixed a DANZ duration bug — durations are now in milliseconds (ALPH-2151).
- Fixed a crash in the "xploretechnologey" path (ALPH-2148).
iOS SDK 1.0.17
Fixed ignoreUrl and ignoreError API behavior.
iOS SDK 1.0.16
- Added missing API functions (ALPH-2128).
- Fixed network requests not being captured in some cases (ALPH-2128).
iOS SDK 1.0.15
Added new public API functions (ALPH-2214).
iOS SDK 1.0.14
Switched the library to static linkage.
iOS SDK 1.0.13
Fixed a crash in the UICollectionView swizzle.
iOS SDK 1.0.12
- Added lifecycle events (ALPH-1623).
- Added daily metrics log reporting (ALPH-1625).
- Added
beforeSendlogic (ALPH-1622). - Added instrumentation config (ALPH-1567).
- Added AP3 environment support.
- Added performance mobile vitals (ALPH-1463).
- Skip collecting IP data (ALPH-1570).
- Fixed a Flutter gap, lifecycle bugs, and a Flutter stuck-trace bug (ALPH-1759).
iOS SDK 1.0.11
Fixed iOS 13 compatibility (Xcode 15.0.1).
iOS SDK 1.0.10
- Added basic tvOS support (ALPH-1506).
- Added a
samplerRateoption onCoralogixOptions. - Added RUM user actions (ALPH-1285).
- Added traces support (ALPH-1375).
- Flatten error context.
- Fixed a wrong Swift tools version — now 5.9.
- Fixed telephony info handling.
iOS SDK 1.0.8
Added native enhancements for Flutter capabilities (ALPH-1137).
iOS SDK 1.0.6
Added the CocoaPods podspec.
iOS SDK 1.0.5
- Added OpenTelemetry API/SDK and
PLCrashReporteras XCFrameworks. - Added session-snapshot logic (ALPH-1187).
- Added OpenTelemetry SDK/API integration (ALPH-1187).
iOS SDK 1.0.4
- Added ViewController extraction for Swift UIKit.
- Added ViewController extraction for SwiftUI (ALPH-1085).
- Added
DeviceStateandDeviceContext(ALPH-1112).
iOS SDK 1.0.0
Initial release of the Coralogix iOS RUM SDK.
