Skip to content

Release 3.21.0

Latest

Choose a tag to compare

@barboraplasovska barboraplasovska released this 29 Oct 13:01
36ca2cf

Important

Continuous Profiling for iOS is now generally available and is no longer offered free of charge. Billing applies to Continuous Profiling usage, including on earlier SDK versions.

See the documentation for setup and sampling configuration.

What's Changed

Features

  • Flags: Add retained first-flags client events with per-registration cancellation. See #3269
  • Add experimental client-side APM stats, enabled with Trace.Configuration.featureFlags[.clientSideStats], or with client_side_stats in DDTraceConfiguration.featureFlags from Objective-C. The SDK aggregates request counts, error counts and latency distributions on-device from eligible finished spans, independently of trace upload sampling. Disabled by default. See #3301

Fixes

  • Stop attributing crashes to a RUM session stopped with stopSession(). Before, with background events tracking enabled, a crash in the background after the stop was reported into the stopped session. See #3321
  • Stop reporting slow frames and slow rendering for RUM views on macOS and watchOS, where rendering is not measured yet. See #3319
  • Prevent crashes when recording certain SwiftUI views with Session Replay's compositionTreeRecording feature on iOS 17 and earlier. See #3330
  • Start the DatadogFlags assignments request without waiting for the initial cache read, and report successful assignments before cache persistence. See #3078
  • NSPrivacyAccessedAPICategoryFileTimestamp added to DatadogCore's privacy manifest as required. See #3339
  • Attribute a TTFD vital reported before the TTID is written to the view and connectivity active when reportAppFullyDisplayed() was called, instead of the TTID's view. See #3317. (Thanks @thedavidharris)
  • Fix profile sample timestamps after device sleep and stop attaching app hangs and long tasks that the profile did not sample. See #3342

Improvements

  • Track RUM events and crashes on macOS when no view is active, for example after the last window closes or in a menu bar app. See #3351
  • Add support for unreal source for cross-platform RUM events from Unreal Engine applications. See #3353
  • Overlapping FlagsClient.setEvaluationContext calls no longer let an earlier result replace assignments for a newer context. Earlier calls still complete, and listeners skip state notifications superseded before delivery. Fetch-result completions run on a global utility queue. See #3078
  • Keep capturing HTTP headers that fit after one exceeds the 2 KB limit. See #3332
  • Reduce image resource sizes with WebP encoding and speed up image hashing in Session Replay's experimental composition tree recorder. See #3336

Full Changelog: 3.20.0...3.21.0