Breaking Changes
- Add the
animationTotalHitchTime,animationTotalAnimationTime,metalFramesPerSecond,metalFrameCountandmetalActiveDrawingDurationcases to the experimentalSentryMetricKit.MetricReportenum, so exhaustiveswitchstatements over it need to handle them. On iOS and macOS 27 and later,animationScrollHitchTimeRatiois no longer sent because MetricKit only reports the hitch time of all animations (#9476)
Features
- Expose
options.experimental.metrickit.enabledMetricReportsthrough the SentryObjC SDK as theSentryObjCMetricKitMetricReportbitmask and through theenabledMetricReportskey of themetrickitoptions dictionary, which also accepts"all"(#9490) - Receive MetricKit metrics through
MetricManageron iOS and macOS 27 and later with the same names, types and units as on earlier OS versions, and add theanimationTotalHitchTime,animationTotalAnimationTime,metalFramesPerSecond,metalFrameCountandmetalActiveDrawingDurationmetric reports that onlyMetricManagerprovides, also available through theSentryObjCMetricKitMetricReportbitmask (#9476) - Connect traces of web content in a
WKWebViewwith the app's trace. CallSentryWebViewTracing.addTracePropagation(to:options:)with aWKWebView,WKWebViewConfiguration,WKUserContentController, or SwiftUIWebPage.Configurationto inject the current trace assentry-traceandbaggagemeta tags before page scripts run, so@sentry/browserin the page continues the trace on pageload. Only pages on the hosts inSentryWebViewTracingOptions.allowedHostsreceive the trace (#9474) - Expose WebView trace propagation through the SentryObjC SDK as
SentryObjCWebViewTracingandSentryObjCWebViewTracingOptions(#9488)
Fixes
- Report the tvOS OS name as
tvOSin profiles instead of occasionally reportingApple TVOS(#9497) - Fix trace-lifecycle profiling getting stuck after backgrounding when a root transaction remains active or is abandoned. Parented transactions no longer start or keep the profiler running (#9481)
- Prevent sampled backtraces from being dropped when continuous profiling starts a new chunk (#9485)
- Prevent stale profiling callbacks from affecting restarted profilers or routing queued chunks to a replacement SDK client (#9491)
- Prevent stale trace-profiler timers from stopping replacement profiles or shortening their timeout (#9492)
- Fix app start transactions from hybrid SDKs such as React Native being dropped for prewarmed app starts.
SentrySDK.internal.appStart.measurementWithSpansadded the Pre Runtime Init and Runtime init to Pre Main initializers spans only for prewarmed app starts, where Pre Runtime Init ended before it started, and left them out of all other app starts (#9473) - Prevent SentryCrash from deadlocking while handling uncaught C++ exceptions, and keep concurrent throws from overwriting another thread's captured stack trace (#9531)
- Count every batched log and metric in client reports when an envelope is rate limited, dropped from the cache, or fails to send, instead of counting one per envelope item (#9530)
- Preserve profiling metrics across chunk rollover and avoid recording a finished trace's metrics on its replacement profiler (#9500)
- Synchronize profiling energy-counter readings and prevent invalid energy spikes when cumulative counters decrease (#9517)