Skip to content

Releases: getsentry/sentry-cocoa

9.23.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 22 Jul 15:08

Features

  • Record trace_metric_byte client reports (#8490)

Fixes

  • Add a depth limit to view hierarchy serialization to prevent a stack overflow crash on deeply nested view hierarchies (#8292)
  • Persist the configured environment in crash reports so later app launches don't overwrite it (#8511)
  • Only expose experimental.dataCollection APIs in SDK V10 (#8435)

Improvements

  • Reduce slight overhead during SDK start by skipping an unnecessary main thread dispatch when there's no work to do (#8494)

9.22.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 15 Jul 15:38

Features

  • Mark opt in option swiftAsyncStacktraces as stable (#8373)
  • Add dataCollection option under experimental for configuring data scrubbing behavior (#8369)
  • Add scope API to clear feature flags (#8364)

Fixes

  • Session Replay now correctly reads the response Content-Type for HTTP/2 and HTTP/3, so it captures HTTP response bodies as it was supposed to (when body capturing is enabled via options.sessionReplay.networkCaptureBodies) (#8390)
  • Log the actual request error instead of (null) when a Spotlight request fails (#8401)
  • Decoding dictionary to Options sets value of key "dsn" to property dsn instead of nil (#8393)

Improvements

  • Remove enableReplayNetworkDetailsCapturing experimental flag; network detail capture is now enabled automatically when networkDetailAllowUrls is non-empty (#8396)

9.21.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 08 Jul 14:37

Fixes

  • Fix use-after-free race in span, startProfiler, and stopProfiler by snapshotting currentHub under currentHubLock before dereferencing. (#8318)

Features

  • Attach feature flag evaluations to active spans (#8158)
  • Add feature flag scope ObjC API (#8160)

9.20.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 06 Jul 11:39

Important

This release contains an important fix for dropping too much data when the SDK gets rate limited. (#8324) This fix changes how rate limits are handled. Previously, if one data type (for example, user feedback) was rate limited, other data such as spans or sessions could also be dropped. Now, only the rate-limited data is dropped, while all other data continues to be sent. This may also reduce cases where unexpectedly large amounts of data appear to be dropped due to rate limiting.

Fixes

  • Fix rate limiting all data categories when data category rate-limit is active. (#8324)

Features

  • Record log_byte client reports (#8186)
  • Add scope feature flag API (#8147)

8.58.4

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 07 Jul 07:20

Important

This release contains an important fix for dropping too much data when the SDK gets rate limited. (#8340) This fix changes how rate limits are handled. Previously, if one data type (for example, user feedback) was rate limited, other data such as spans or sessions could also be dropped. Now, only the rate-limited data is dropped, while all other data continues to be sent. This may also reduce cases where unexpectedly large amounts of data appear to be dropped due to rate limiting.

Fixes

  • Fix rate limiting all data categories when data category rate-limit is active. (#8340)

9.19.1

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 01 Jul 20:47

Fixes

  • Fix use-after-free crash in SentrySDKInternal.isEnabled (#8310)
  • Fix dropped platform item header in profile-chunk envelopes (#8269)
  • Fix crash report ID generation so reports created at certain timestamps are not ignored (#8216)
  • Fix C++ exception capture on newer OS versions by page-aligning mprotect calls in the __cxa_throw swapper (#8221)
  • Fix client report discarded-event counts for categories reported in quantities greater than one (e.g. spans): each drop now adds the full dropped quantity instead of incrementing by one (#8230)
  • Rename extended app start span operation from app.start.extended_app_start to app.start.extended (#8220)
  • Fix unsynchronized debug-mode access in the binary image cache (#8309)

9.19.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 24 Jun 18:17

Warning

The minimum macOS deployment target will be raised to macOS 12 (Monterey) with the upcoming release that adopts Xcode 27. Xcode 27 no longer supports deployment targets below macOS 12. If your app must support macOS 11 or earlier, please stay on the last SDK version released before this change. See #8113 for full details.

Features

  • Renamed experimental extended app start API (#8161):
    • extendAppLaunch() -> extendAppStart()
    • finishExtendedAppLaunch() -> finishExtendedAppStart()
    • Added getExtendedAppStartSpan() to get the extended app span
  • Add extended app start APIs to ObjC wrapper SDK (#8163)

Improvements

  • Reduce Session Replay capture stutters by scheduling screenshots after run loop UI work instead of from display refresh callbacks (#7851)

Fixes

  • Don't send logs and metrics when the SDK is disabled (#8173)
  • Fixes crash caused by modifying breadcrumbs from multiple threads (#8114)
  • Prevent feedback form on external displays (#8071)
  • Keep the User Feedback screenshot trigger active after form dismissal. (#8048)
  • Prevent lazy TLS-init in the signal crash monitor for non-managed runtime builds (#8148)
  • Include breadcrumbs in recovered buffer-mode session replays (#8153)
  • Fix missing Info.plist entries MinimumOSVersion and CFBundleSupportedPlatforms in SentryObjC.xcframework (#8157)
  • Harden crash-time attachment path creation to avoid secondary crashes while handling crashes (#8170)
  • Session replay video assembly: drop empty video segments, avoid duplicating frames at segment boundaries, and keep video timing stable when captured frames are skipped or unreadable (#8041)

Internal

  • Add SentrySDK.internal structured API for hybrid SDKs, replacing PrivateSentrySDKOnly with namespaced sub-APIs (replay, profiling, appStart, performance, screenshot, viewHierarchy, screen, envelope, swizzle, sdk, debug, breadcrumbs, user) (#8097)

9.18.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 18 Jun 07:52

Features

  • Add SentryObjC User Feedback presentation APIs and a feedback form factory returning UIViewController instances. (#8027)

Fixes

  • Show feedback form from shake or screenshot without widget (#8050)

Deprecations

  • Deprecate the managed User Feedback custom button. It will be removed in v10. Present the feedback form from your own UI with SentrySDK.feedback.show(), SentrySDK.FeedbackForm, or .sentryFeedback(isPresented:) instead. (#8052)

9.17.1

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 11 Jun 15:31

Fixes

  • Ship dSYMs in SentryObjC-Dynamic.xcframework artifacts (#8036)
  • Fix missing _OBJC_CLASS_$_ symbols in x86_64 slice of SentryObjC dynamic framework (#8037)
  • Mark feedback form aliases and conformances unavailable in app extensions (#8040)
  • Silence retroactive conformance warning for SentryLevel: CustomStringConvertible when building with SPM from source (#8032)

9.17.0

Choose a tag to compare

@sentry-release-bot sentry-release-bot released this 10 Jun 15:34

Features

  • Support creating envelope items from attachments via SentryObjC (#8001)

  • Add format-string logging to SentryObjCLogger with automatic message template extraction (#7996)

    [SentryObjCSDK.logger infoWithFormat:@"User %@ processed %d items", userName, count];
  • Add managed user feedback form presentation APIs (#7873)

    Apps using the managed User Feedback integration can now present the form directly:

    • Use SentrySDK.feedback.show() to let the SDK pick the best presenter.
    • In UIKit, present the SentrySDK.FeedbackForm() view controller yourself.
    • In SwiftUI, use .sentryFeedback(isPresented:), or present SentrySDK.FeedbackFormView() from a container such as .sheet.

    These APIs use the global SentryOptions.configureUserFeedback configuration and temporarily hide the managed widget
    while the form is open, when possible.

  • Add per-form feedback configuration (#8018)

    Managed feedback presentation APIs now accept a configuration closure, so apps can customize a single
    form on top of the global SentryOptions.configureUserFeedback settings without mutating them:

    SentrySDK.feedback.show { config in
        config.configureForm = { form in
            form.formTitle = "Report a Bug"
            form.submitButtonLabel = "Send Report"
        }
        config.tags = ["screen": "settings"]
    }
  • Standalone app start sub-spans operations have been renamed for better clarity (#8003):

    • Pre Runtime Init: app.start -> app.start.pre_runtime_init
    • Runtime Init to Pre Main Initializers: app.start -> app.start.runtime_init
    • UIKit Init: app.start -> app.start.uikit_init
    • Application Init: app.start -> app.start.application_init
    • Extended App Start: app.start -> app.start.extended_app_start

Deprecations

  • Deprecate the managed User Feedback widget/FAB. It will be removed in v10. Present the feedback form from your own UI with SentrySDK.feedback.show(), SentrySDK.FeedbackForm, or .sentryFeedback(isPresented:) instead. (#8022)

Fixes

  • App start duration on the Vitals dashboard now reflects the extended app launch time when using extendAppLaunch() (#8028)