This major release of the Datadog iOS SDK focuses on streamlining modules, refining defaults, and improving reliability across product features. Objective-C APIs have been migrated into their respective modules, and the legacy DatadogObjc
module has been removed. Tracing now defaults to deterministic, session-based sampling, while RUM provides more consistent attribute propagation. Logs no longer report fatal errors by default, and several APIs have been simplified or removed to reduce legacy dependencies.
⚠️ Breaking Change: We optimized internals of the SDK that control session definition and tracking of application states, to improve how inactivity and background activity are accounted for on iOS. Depending on your app’s use of background modes, push notifications, or OS prewarming, updating to 3.x may result in fewer sessions being reported.
Refer to the Migration Guide for instructions on upgrading from 2.x.
Improvements
- Update Session Replay batch maximum age to 5hrs. See (#2455)
- Update the default tracing sampling rate to 100%. See (#2253)
- Update the default TraceContextInjection to
.sampled
. See (#2253) - Enforce head-based sampling on Trace by default. See (#2288)
- Sample traces according to
session.id
. See (#2364) - Migrate all Obj-c interfaces to corresponding modules. See (#2286) (#2295)
- Remove
DatadogObjc
module. See (#2298) - Remove Alamofire extension. See (#2309)
- Improve Memory vital collected using
phys_footprint
. See (#2310) - Align attribute propagation mechanism. See (#2291) (#2305)
- Stop reporting App hangs and Watchdog terminations for iOS widgets. See (#2326)
- Align
os
anddevice
attributes across all product features. See (#2322) - Remove fatal errors from Logs. See (#2359)
- Introduce new category for network errors. See (#2341)
- Add opt-out API to disable tracking memory warnings as RUM Errors. See (#2355)
Fixes
- Fix
DDLogEvent.accountInfo
property initialization in case of missing account info. See (#2442)