Releases: getsentry/sentry-cocoa
9.0.0-rc.0
Breaking Changes
- Bumped minimum OS versions to iOS 15.0, macOS 12.0, tvOS 15.0, visionOS 1.0, and watchOS 8.0
- Moves
SentryEventDecoderto SPI (#6365) - Makes
PreviewRedactOptions,SentryProfileOptions,SentryRedactViewHelper,SentryViewScreenshotOptions,SentryReplayOptions,SentryUserFeedbackConfiguration,SentryUserFeedbackFormConfiguration,SentryUserFeedbackThemeConfiguration,SentryUserFeedbackWidgetConfiguration,SentryFeedback, andSentryExperimentalOptionsfinal(#6365) - Removes Decodable conformances from the public API of model classes (#5691)
- Removes unused SentryLogLevel (#5591)
- Removes deprecated
setExtraValuefrom SentrySpan (#5864) - Removes deprecated getStoreEndpoint (#5591)
- Remove legacy profiling, the only supported profiling is now what was known as continuous V2 (#6386)
- Removes deprecated useSpan function (#5591)
- Makes app hang tracking V2 the default and removes the option to enable/disable it (#5615)
- Removes initializers for SentryTraceContext from the public API (#6662)
- Removes
integrationsproperty fromSentryOptions(#5749) - Removes
defaultIntegrationsfunction fromSentryOptions(#6664) - Makes
SentryEventDecodableinternal (#5808) - The
spanproperty onSentryScopeis now readonly (#5866) - Removes
SentryIntegrationProtocolfrom the API. This is not used after the removal of theintegrationsproperty (#6660) - Removes deprecated SentryDebugImageProvider class (#5598)
- Properties on SentryOptions that had no effect on the WithoutUIKit variant are now removed from the API (#6644)
- Removes the SentryOptions.inAppExclude property because it had no effect (#6646)
- Removes segment property on SentryUser, SentryBaggage, and SentryTraceContext (#5638)
- Removes deprecated TraceContext initializers (#6348)
- Removes deprecated user feedback API, this is replaced with the new feedback API (#5591)
- Removes
enablePerformanceV2option and makes this the default. The app start duration will now finish when the first frame is drawn instead of when the OS posts the UIWindowDidBecomeVisibleNotification. (#6008) - Removes enableTracing property from SentryOptions (#5694)
- Structured Logs: Move options out of experimental (#6359)
- Remove unused
SentryFrame.instructionproperty (#6504) - Remove
uuidandnameofSentryDebugMeta(#6512) UsedebugIDinstead ofuuidandcodeFileinstead ofname. - Enable enablePreWarmedAppStartTracing by default (#6508). With this option enabled, the SDK collects prewarmed app starts.
- Set
SentryFrame.functiondefault tonilinstead of<redacted>(#6608) - Change
valueandtypeofSentryExceptionto be nullable (#6563) - Change the default trace context status to "ok" instead of "undefined" (#6611)
- Remove
getHashfrom SentryDsn (#6605) - The precompiled XCFramework is now built with Xcode 16. To submit to the App Store, Apple now requires Xcode 16.
If you need a precompiled XCFramework built with Xcode 15, continue using Sentry SDK 8.x.x. - Set
SentryException.typetonilwhenNSExceptionhas noreason(#6653). The backend then can provide a proper message when there is no reason. - Rename
SentryLog.LevelandSentryLog.Attributefor ObjC (#6666) - Change
SentryFeedbackinitializer to support multiple attachments (#6752) - App hang tracking is now automatically disabled for Widgets, Live Activities, Action Extensions, (Siri) Intent Extensions, and Share Extensions (#6670).
These components run in separate processes or sandboxes with different execution characteristics, which can cause false positive app hang reports. - HTTP Client errors now mark sessions as errored (#6633)
- The Package.swift has swift-tools-version set to 6.0 (#6764)
Features
- Add SentryDistribution as Swift Package Manager target (#6149)
- Moves SentryClient and SentryHub to be written in Swift (#6627)
- Add option
enablePropagateTraceparentto support OTel/W3C trace propagation (#6356) - Move
enableFileManagerSwizzlingfrom experimental options to top-level options (#6592).
This option is still disabled by default and will be enabled in a future major release. - Move
enableDataSwizzlingfrom experimental options to top-level options (#6592). This option remains enabled by default. - Add
sentry.replay_idattribute to logs (#6515) - Structured Logs: Add log APIs to
HubandClient(#6737)
Fixes
- Fixes warnings about minimum OS version being lower than Xcode supported version (#5591)
- Fixes a crash when setting configureUserFeedback to nil (#6642)
- Fix issue where the thread that generated an event could be missing when more than 100 threads are running (#6377)
- Fix wrong Frame Delay when becoming active, which lead to false reported app hangs when the app moves to the foreground after being in the background (#6381)
- Rename
SentryMechanismMetatoSentryMechanismContextto resolve Kotlin Multi-Platform build errors (#6607) - Remove unnecesary dependency on
SentryCppHelperto Sentry (#6754) - Limit log batching to maximum 100 logs per batch (#6768)
Improvements
8.57.3
Warning
Session Replay is disabled by default on iOS 26.0+ with Xcode 26.0+ to prevent PII leaks
Due to potential masking issues introduced by Apple's Liquid Glass rendering changes in iOS 26.0, Session Replay is now automatically disabled on apps running iOS 26.0+ when built with Xcode 26.0 or later. This is a defensive measure to protect user privacy and prevent potential PII leaks until masking is reliably supported.
Session replay will work normally if:
- Your app runs on iOS versions older than 26.0, OR
- Your app is built with Xcode versions older than 26.0, OR
- Your app explicitly sets
UIDesignRequiresCompatibilitytoYESinInfo.plist
Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:
options.experimental.enableSessionReplayInUnreliableEnvironment = trueThis experimental override option will be removed in a future minor version once the masking issues are resolved.
Fixes
9.0.0-alpha.1
Breaking Changes
- Bumped minimum OS versions to iOS 15.0, macOS 12.0, tvOS 15.0, visionOS 1.0, and watchOS 8.0
- Moves
SentryEventDecoderto SPI (#6365) - Makes
PreviewRedactOptions,SentryProfileOptions,SentryRedactViewHelper,SentryViewScreenshotOptions,SentryReplayOptions,SentryUserFeedbackConfiguration,SentryUserFeedbackFormConfiguration,SentryUserFeedbackThemeConfiguration,SentryUserFeedbackWidgetConfiguration,SentryFeedback, andSentryExperimentalOptionsfinal(#6365) - Removes Decodable conformances from the public API of model classes (#5691)
- Removes unused SentryLogLevel (#5591)
- Removes deprecated
setExtraValuefrom SentrySpan (#5864) - Removes deprecated getStoreEndpoint (#5591)
- Remove legacy profiling, the only supported profiling is now what was known as continuous V2 (#6386)
- Removes deprecated useSpan function (#5591)
- Makes app hang tracking V2 the default and removes the option to enable/disable it (#5615)
- Removes initializers for SentryTraceContext from the public API (#6662)
- Removes
integrationsproperty fromSentryOptions(#5749) - Removes
defaultIntegrationsfunction fromSentryOptions(#6664) - Makes
SentryEventDecodableinternal (#5808) - The
spanproperty onSentryScopeis now readonly (#5866) - Removes
SentryIntegrationProtocolfrom the API. This is not used after the removal of theintegrationsproperty (#6660) - Removes deprecated SentryDebugImageProvider class (#5598)
- Properties on SentryOptions that had no effect on the WithoutUIKit variant are now removed from the API (#6644)
- Removes the SentryOptions.inAppExclude property because it had no effect (#6646)
- Removes segment property on SentryUser, SentryBaggage, and SentryTraceContext (#5638)
- Removes deprecated TraceContext initializers (#6348)
- Removes deprecated user feedback API, this is replaced with the new feedback API (#5591)
- Removes
enablePerformanceV2option and makes this the default. The app start duration will now finish when the first frame is drawn instead of when the OS posts the UIWindowDidBecomeVisibleNotification. (#6008) - Removes enableTracing property from SentryOptions (#5694)
- Structured Logs: Move options out of experimental (#6359)
- Remove unused
SentryFrame.instructionproperty (#6504) - Remove
uuidandnameofSentryDebugMeta(#6512) UsedebugIDinstead ofuuidandcodeFileinstead ofname. - Enable enablePreWarmedAppStartTracing by default (#6508). With this option enabled, the SDK collects prewarmed app starts.
- Set
SentryFrame.functiondefault tonilinstead of<redacted>(#6608) - Change
valueandtypeofSentryExceptionto be nullable (#6563) - Change the default trace context status to "ok" instead of "undefined" (#6611)
- Remove
getHashfrom SentryDsn (#6605) - The precompiled XCFramework is now built with Xcode 16. To submit to the App Store, Apple now requires Xcode 16.
If you need a precompiled XCFramework built with Xcode 15, continue using Sentry SDK 8.x.x. - Set
SentryException.typetonilwhenNSExceptionhas noreason(#6653). The backend then can provide a proper message when there is no reason. - Rename
SentryLog.LevelandSentryLog.Attributefor ObjC (#6666) - Change
SentryFeedbackinitializer to support multiple attachments (#6752)
Fixes
- Fixes warnings about minimum OS version being lower than Xcode supported version (#5591)
- Fixes a crash when setting configureUserFeedback to nil (#6642)
- Fix issue where the thread that generated an event could be missing when more than 100 threads are running (#6377)
- Fix wrong Frame Delay when becoming active, which lead to false reported app hangs when the app moves to the foreground after being in the background (#6381)
- Rename
SentryMechanismMetatoSentryMechanismContextto resolve Kotlin Multi-Platform build errors (#6607) - Remove unnecesary dependency on
SentryCppHelperto Sentry (#6754)
Improvements
- Replace deprecated SCNetworkReachability with NWPathMonitor (#6019)
- Expose attachment type on
SentryAttachmentfor downstream SDKs (like sentry-godot) (#6521) - Increase attachment max size to 100MB (#6537)
- Increase maximum attachment size to 200MB (#6726)
Features
- Add SentryDistribution as Swift Package Manager target (#6149)
- Moves SentryClient and SentryHub to be written in Swift (#6627)
- Add option
enablePropagateTraceparentto support OTel/W3C trace propagation (#6356) - Move
enableFileManagerSwizzlingfrom experimental options to top-level options (#6592).
This option is still disabled by default and will be enabled in a future major release. - Move
enableDataSwizzlingfrom experimental options to top-level options (#6592). This option remains enabled by default. - Add
sentry.replay_idattribute to logs (#6515) - Structured Logs: Add log APIs to
HubandClient(#6737)
9.0.0-alpha.0
Breaking Changes
- Moves
SentryEventDecoderto SPI (#6365) - Makes
PreviewRedactOptions,SentryProfileOptions,SentryRedactViewHelper,SentryViewScreenshotOptions,SentryReplayOptions,SentryUserFeedbackConfiguration,SentryUserFeedbackFormConfiguration,SentryUserFeedbackThemeConfiguration,SentryUserFeedbackWidgetConfiguration,SentryFeedback, andSentryExperimentalOptionsfinal(#6365) - Removes Decodable conformances from the public API of model classes (#5691)
- Removes unused SentryLogLevel (#5591)
- Removes deprecated
setExtraValuefrom SentrySpan (#5864) - Removes deprecated getStoreEndpoint (#5591)
- Remove legacy profiling, the only supported profiling is now what was known as continuous V2 (#6386)
- Removes deprecated useSpan function (#5591)
- Makes app hang tracking V2 the default and removes the option to enable/disable it (#5615)
- Removes initializers for SentryTraceContext from the public API (#6662)
- Removes
integrationsproperty fromSentryOptions(#5749) - Removes
defaultIntegrationsfunction fromSentryOptions(#6664) - Makes
SentryEventDecodableinternal (#5808) - The
spanproperty onSentryScopeis now readonly (#5866) - Removes
SentryIntegrationProtocolfrom the API. This is not used after the removal of theintegrationsproperty (#6660) - Removes deprecated SentryDebugImageProvider class (#5598)
- Properties on SentryOptions that had no effect on the WithoutUIKit variant are now removed from the API (#6644)
- Removes the SentryOptions.inAppExclude property because it had no effect (#6646)
- Removes segment property on SentryUser, SentryBaggage, and SentryTraceContext (#5638)
- Removes deprecated TraceContext initializers (#6348)
- Removes deprecated user feedback API, this is replaced with the new feedback API (#5591)
- Removes
enablePerformanceV2option and makes this the default. The app start duration will now finish when the first frame is drawn instead of when the OS posts the UIWindowDidBecomeVisibleNotification. (#6008) - Removes enableTracing property from SentryOptions (#5694)
- Structured Logs: Move options out of experimental (#6359)
- Remove unused
SentryFrame.instructionproperty (#6504) - Remove
uuidandnameofSentryDebugMeta(#6512) UsedebugIDinstead ofuuidandcodeFileinstead ofname. - Enable enablePreWarmedAppStartTracing by default (#6508). With this option enabled, the SDK collects prewarmed app starts.
- Set
SentryFrame.functiondefault tonilinstead of<redacted>(#6608) - Change
valueandtypeofSentryExceptionto be nullable (#6563) - Change the default trace context status to "ok" instead of "undefined" (#6611)
- Remove
getHashfrom SentryDsn (#6605) - The precompiled XCFramework is now built with Xcode 16. To submit to the App Store, Apple now requires Xcode 16.
If you need a precompiled XCFramework built with Xcode 15, continue using Sentry SDK 8.x.x. - Set
SentryException.typetonilwhenNSExceptionhas noreason(#6653). The backend then can provide a proper message when there is no reason. - Rename
SentryLog.LevelandSentryLog.Attributefor ObjC (#6666)
Fixes
- Fixes warnings about minimum OS version being lower than Xcode supported version (#5591)
- Fixes a crash when setting configureUserFeedback to nil (#6642)
- Fix issue where the thread that generated an event could be missing when more than 100 threads are running (#6377)
- Fix wrong Frame Delay when becoming active, which lead to false reported app hangs when the app moves to the foreground after being in the background (#6381)
- Rename
SentryMechanismMetatoSentryMechanismContextto resolve Kotlin Multi-Platform build errors (#6607)
Improvements
- Replace deprecated SCNetworkReachability with NWPathMonitor (#6019)
- Expose attachment type on
SentryAttachmentfor downstream SDKs (like sentry-godot) (#6521) - Increase attachment max size to 100MB (#6537)
Features
- Add SentryDistribution as Swift Package Manager target (#6149)
- Moves SentryClient and SentryHub to be written in Swift (#6627)
- Add option
enablePropagateTraceparentto support OTel/W3C trace propagation (#6356) - Move
enableFileManagerSwizzlingfrom experimental options to top-level options (#6592).
This option is still disabled by default and will be enabled in a future major release. - Move
enableDataSwizzlingfrom experimental options to top-level options (#6592). This option remains enabled by default. - Add
sentry.replay_idattribute to logs (#6515) - Structured Logs: Add
SentrySwiftLogIntegration (#6286)
8.57.2
Warning
Session Replay is disabled by default on iOS 26.0+ with Xcode 26.0+ to prevent PII leaks
Due to potential masking issues introduced by Apple's Liquid Glass rendering changes in iOS 26.0, Session Replay is now automatically disabled on apps running iOS 26.0+ when built with Xcode 26.0 or later. This is a defensive measure to protect user privacy and prevent potential PII leaks until masking is reliably supported.
Session replay will work normally if:
- Your app runs on iOS versions older than 26.0, OR
- Your app is built with Xcode versions older than 26.0, OR
- Your app explicitly sets
UIDesignRequiresCompatibilitytoYESinInfo.plist
Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:
options.experimental.enableSessionReplayInUnreliableEnvironment = trueThis experimental override option will be removed in a future minor version once the masking issues are resolved.
Fixes
- Fix rendering method for fast view rendering (#6360)
- Session Replay masking improvements (#6292)
- Fix SwiftUI.List background decoration view causing incorrect clipping of screen content
- Fix sublayer rendering order by properly sorting by zPosition with insertion order as tie-breaker
- Fix UISwitch internal images being incorrectly redacted
- Fix UITextField placeholder text (UITextFieldLabel) not being detected for redaction
- Use string-based class comparison to avoid triggering Objective-C +initialize on background threads
- Add layer class filtering for views used in multiple contexts (e.g., SwiftUI._UIGraphicsView)
- Improve transform calculations for views with custom anchor points
- Fix axis-aligned transform detection for optimized opaque view clipping
- Fix conversion of frame rate to time interval for session replay (#6623)
- Change Session Replay masking to prevent semi‑transparent full‑screen overlays from clearing redactions by making opaque clipping stricter (#6629)
Views now need to be fully opaque (view and layer backgrounds with alpha == 1) and report opaque to qualify for clip‑out.
This avoids leaks at the cost of fewer clip‑out optimizations.
8.57.1
Warning
Session Replay is disabled by default on iOS 26.0+ with Xcode 26.0+ to prevent PII leaks
Due to potential masking issues introduced by Apple's Liquid Glass rendering changes in iOS 26.0, Session Replay is now automatically disabled on apps running iOS 26.0+ when built with Xcode 26.0 or later. This is a defensive measure to protect user privacy and prevent potential PII leaks until masking is reliably supported.
Session replay will work normally if:
- Your app runs on iOS versions older than 26.0, OR
- Your app is built with Xcode versions older than 26.0, OR
- Your app explicitly sets
UIDesignRequiresCompatibilitytoYESinInfo.plist
Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:
options.experimental.enableSessionReplayInUnreliableEnvironment = trueThis experimental override option will be removed in a future minor version once the masking issues are resolved.
Fixes
8.57.0
Warning
Session Replay is disabled by default on iOS 26.0+ with Xcode 26.0+ to prevent PII leaks
Due to potential masking issues introduced by Apple's Liquid Glass rendering changes in iOS 26.0, Session Replay is now automatically disabled on apps running iOS 26.0+ when built with Xcode 26.0 or later. This is a defensive measure to protect user privacy and prevent potential PII leaks until masking is reliably supported.
Session replay will work normally if:
- Your app runs on iOS versions older than 26.0, OR
- Your app is built with Xcode versions older than 26.0, OR
- Your app explicitly sets
UIDesignRequiresCompatibilitytoYESinInfo.plist
Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:
options.experimental.enableSessionReplayInUnreliableEnvironment = trueThis experimental override option will be removed in a future minor version once the masking issues are resolved.
Fixes
- Fix wrong Frame Delay when becoming active, which lead to false reported app hangs when the app moves to the foreground after being in the background (#6393)
- Session replay is now automatically disabled in environments with unreliable masking to prevent PII leaks (#6389)
- Detects iOS 26.0+ runtime with Xcode 26.0+ builds (DTXcode >= 2600)
- Detects missing or disabled
UIDesignRequiresCompatibility - Uses defensive approach: assumes unsafe unless proven safe
- Add
options.experimental.enableSessionReplayInUnreliableEnvironmentto allow overriding the automatic disabling (#6389)
8.56.2
Warning
Session Replay in this version does not correctly mask views when built with Xcode 26 and running on iOS 26 with Liquid Glass, which may lead to PII leaks. Please upgrade to 8.57.0 or later, which automatically disables session replay in such environments.
Fixes
- Fix crash from null UIApplication in SwiftUI apps (#6264)
8.56.1
Warning
This version can cause runtime crashes because the UIApplication.sharedApplication/NSApplication.sharedApplication is not yet available during SDK initialization, due to the changes in PR #5900, released in 8.56.0.
Warning
Session Replay in this version does not correctly mask views when built with Xcode 26 and running on iOS 26 with Liquid Glass, which may lead to PII leaks. Please upgrade to 8.57.0 or later, which automatically disables session replay in such environments.
Fixes
8.56.0
Warning
This version can cause runtime crashes because the UIApplication.sharedApplication/NSApplication.sharedApplication is not yet available during SDK initialization, due to the changes in PR #5900, released in 8.56.0.
Warning
Session Replay in this version does not correctly mask views when built with Xcode 26 and running on iOS 26 with Liquid Glass, which may lead to PII leaks. Please upgrade to 8.57.0 or later, which automatically disables session replay in such environments.
Features
- Structured Logs: Flush logs on SDK flush/close (#5834)
- Add masking options for screenshots (#5401)
- Add significant time change breadcrumb (#6112)
- Add support for iOS 26, macOS 26, visionOS 26, watchOS 26, and tvOS 26 in device tests (#6063)
Improvements
- Lazily CharacterSet only once in SentryBaggageSerialization (#5871)
- Structured Logging: Log
SentrySDK.loggercalls toSentrySDKLog(#5991) - The build type in the app context now differentiates between
enterpriseandadhoc(#6044) - visionOS no longer needs swift's interoperability mode (#6077)
- Ensure IP address is only inferred by Relay if sendDefaultPii is true (#5877)
- Sentry without UIKit / AppKit is available to install with SPM (#6160)
Fixes
- Don't capture replays for events dropped in
beforeSend(#5916) - Fix linking with SentrySwiftUI on Xcode 26 for visionOS (#5823)
- Structured Logging: Logger called before
SentrySDK.startbecomes unusable (#5984) - Add masking for AVPlayerView (#5910)
- Fix missing view hierachy when enabling
attachScreenshottoo (#5989) - Fix macOS's frameworks not following the versioned framework structure (#6049)
- Add warning to addBreadcrumb when used before SDK init (#6083)
- Add null-handling for parsed DSN in SentryHTTPTransport (#5800)
- Fix crash in Session Replay when opening the camera UI on iOS 26+ by skipping redaction of internal views.
This may result in more of the camera screen being redacted. (#6045) - Fix crash in SentryDependencyContainer init when using the SDK as a static framework (#6125)
- Fixes a React Native legacy build failure by adding the missing self references for explicit capture semantics (#6156)