Releases: getsentry/sentry-cocoa
Release list
9.23.0
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.dataCollectionAPIs 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
Features
- Mark opt in option
swiftAsyncStacktracesas stable (#8373) - Add
dataCollectionoption underexperimentalfor configuring data scrubbing behavior (#8369) - Add scope API to clear feature flags (#8364)
Fixes
- Session Replay now correctly reads the response
Content-Typefor HTTP/2 and HTTP/3, so it captures HTTP response bodies as it was supposed to (when body capturing is enabled viaoptions.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 propertydsninstead ofnil(#8393)
Improvements
- Remove
enableReplayNetworkDetailsCapturingexperimental flag; network detail capture is now enabled automatically whennetworkDetailAllowUrlsis non-empty (#8396)
9.21.0
9.20.0
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
8.58.4
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
Fixes
- Fix use-after-free crash in
SentrySDKInternal.isEnabled(#8310) - Fix dropped
platformitem 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
mprotectcalls in the__cxa_throwswapper (#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_starttoapp.start.extended(#8220) - Fix unsynchronized debug-mode access in the binary image cache (#8309)
9.19.0
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.plistentriesMinimumOSVersionandCFBundleSupportedPlatformsinSentryObjC.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.internalstructured API for hybrid SDKs, replacingPrivateSentrySDKOnlywith namespaced sub-APIs (replay,profiling,appStart,performance,screenshot,viewHierarchy,screen,envelope,swizzle,sdk,debug,breadcrumbs,user) (#8097)
9.18.0
Features
- Add SentryObjC User Feedback presentation APIs and a feedback form factory returning
UIViewControllerinstances. (#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
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: CustomStringConvertiblewhen building with SPM from source (#8032)
9.17.0
Features
-
Support creating envelope items from attachments via SentryObjC (#8001)
-
Add format-string logging to
SentryObjCLoggerwith 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 presentSentrySDK.FeedbackFormView()from a container such as.sheet.
These APIs use the global
SentryOptions.configureUserFeedbackconfiguration and temporarily hide the managed widget
while the form is open, when possible. - Use
-
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 globalSentryOptions.configureUserFeedbacksettings 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)