Skip to content

Releases: getsentry/sentry-cocoa

9.0.0-rc.0

17 Nov 15:06

Choose a tag to compare

9.0.0-rc.0 Pre-release
Pre-release

Breaking Changes

  • Bumped minimum OS versions to iOS 15.0, macOS 12.0, tvOS 15.0, visionOS 1.0, and watchOS 8.0
  • Moves SentryEventDecoder to SPI (#6365)
  • Makes PreviewRedactOptions, SentryProfileOptions, SentryRedactViewHelper, SentryViewScreenshotOptions, SentryReplayOptions, SentryUserFeedbackConfiguration, SentryUserFeedbackFormConfiguration, SentryUserFeedbackThemeConfiguration, SentryUserFeedbackWidgetConfiguration, SentryFeedback, and SentryExperimentalOptions final (#6365)
  • Removes Decodable conformances from the public API of model classes (#5691)
  • Removes unused SentryLogLevel (#5591)
  • Removes deprecated setExtraValue from 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 integrations property from SentryOptions (#5749)
  • Removes defaultIntegrations function from SentryOptions (#6664)
  • Makes SentryEventDecodable internal (#5808)
  • The span property on SentryScope is now readonly (#5866)
  • Removes SentryIntegrationProtocol from the API. This is not used after the removal of the integrations property (#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 enablePerformanceV2 option 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.instruction property (#6504)
  • Remove uuid and name of SentryDebugMeta (#6512) Use debugID instead of uuid and codeFile instead of name.
  • Enable enablePreWarmedAppStartTracing by default (#6508). With this option enabled, the SDK collects prewarmed app starts.
  • Set SentryFrame.function default to nil instead of <redacted> (#6608)
  • Change value and type of SentryException to be nullable (#6563)
  • Change the default trace context status to "ok" instead of "undefined" (#6611)
  • Remove getHash from 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.type to nil when NSException has no reason (#6653). The backend then can provide a proper message when there is no reason.
  • Rename SentryLog.Level and SentryLog.Attribute for ObjC (#6666)
  • Change SentryFeedback initializer 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 enablePropagateTraceparent to support OTel/W3C trace propagation (#6356)
  • Move enableFileManagerSwizzling from experimental options to top-level options (#6592).
    This option is still disabled by default and will be enabled in a future major release.
  • Move enableDataSwizzling from experimental options to top-level options (#6592). This option remains enabled by default.
  • Add sentry.replay_id attribute to logs (#6515)
  • Structured Logs: Add log APIs to Hub and Client (#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 SentryMechanismMeta to SentryMechanismContext to resolve Kotlin Multi-Platform build errors (#6607)
  • Remove unnecesary dependency on SentryCppHelper to Sentry (#6754)
  • Limit log batching to maximum 100 logs per batch (#6768)

Improvements

  • Replace deprecated SCNetworkReachability with NWPathMonitor (#6019)
  • Expose attachment type on SentryAttachment for downstream SDKs (like sentry-godot) (#6521)
  • Increase attachment max size to 100MB (#6537)
  • Increase maximum attachment size to 200MB (#6726)

8.57.3

14 Nov 07:33

Choose a tag to compare

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 UIDesignRequiresCompatibility to YES in Info.plist

Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:

options.experimental.enableSessionReplayInUnreliableEnvironment = true

This experimental override option will be removed in a future minor version once the masking issues are resolved.

Fixes

  • Remove unnecessary dependency on SentryCppHelper to Sentry (#6754) (#6761)
  • Resolve SDK crash caused by UIPrintPanelViewController incorrectly casting to UISplitViewController (#6771)

9.0.0-alpha.1

12 Nov 18:24

Choose a tag to compare

9.0.0-alpha.1 Pre-release
Pre-release

Breaking Changes

  • Bumped minimum OS versions to iOS 15.0, macOS 12.0, tvOS 15.0, visionOS 1.0, and watchOS 8.0
  • Moves SentryEventDecoder to SPI (#6365)
  • Makes PreviewRedactOptions, SentryProfileOptions, SentryRedactViewHelper, SentryViewScreenshotOptions, SentryReplayOptions, SentryUserFeedbackConfiguration, SentryUserFeedbackFormConfiguration, SentryUserFeedbackThemeConfiguration, SentryUserFeedbackWidgetConfiguration, SentryFeedback, and SentryExperimentalOptions final (#6365)
  • Removes Decodable conformances from the public API of model classes (#5691)
  • Removes unused SentryLogLevel (#5591)
  • Removes deprecated setExtraValue from 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 integrations property from SentryOptions (#5749)
  • Removes defaultIntegrations function from SentryOptions (#6664)
  • Makes SentryEventDecodable internal (#5808)
  • The span property on SentryScope is now readonly (#5866)
  • Removes SentryIntegrationProtocol from the API. This is not used after the removal of the integrations property (#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 enablePerformanceV2 option 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.instruction property (#6504)
  • Remove uuid and name of SentryDebugMeta (#6512) Use debugID instead of uuid and codeFile instead of name.
  • Enable enablePreWarmedAppStartTracing by default (#6508). With this option enabled, the SDK collects prewarmed app starts.
  • Set SentryFrame.function default to nil instead of <redacted> (#6608)
  • Change value and type of SentryException to be nullable (#6563)
  • Change the default trace context status to "ok" instead of "undefined" (#6611)
  • Remove getHash from 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.type to nil when NSException has no reason (#6653). The backend then can provide a proper message when there is no reason.
  • Rename SentryLog.Level and SentryLog.Attribute for ObjC (#6666)
  • Change SentryFeedback initializer 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 SentryMechanismMeta to SentryMechanismContext to resolve Kotlin Multi-Platform build errors (#6607)
  • Remove unnecesary dependency on SentryCppHelper to Sentry (#6754)

Improvements

  • Replace deprecated SCNetworkReachability with NWPathMonitor (#6019)
  • Expose attachment type on SentryAttachment for 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 enablePropagateTraceparent to support OTel/W3C trace propagation (#6356)
  • Move enableFileManagerSwizzling from experimental options to top-level options (#6592).
    This option is still disabled by default and will be enabled in a future major release.
  • Move enableDataSwizzling from experimental options to top-level options (#6592). This option remains enabled by default.
  • Add sentry.replay_id attribute to logs (#6515)
  • Structured Logs: Add log APIs to Hub and Client (#6737)

9.0.0-alpha.0

10 Nov 14:01

Choose a tag to compare

9.0.0-alpha.0 Pre-release
Pre-release

Breaking Changes

  • Moves SentryEventDecoder to SPI (#6365)
  • Makes PreviewRedactOptions, SentryProfileOptions, SentryRedactViewHelper, SentryViewScreenshotOptions, SentryReplayOptions, SentryUserFeedbackConfiguration, SentryUserFeedbackFormConfiguration, SentryUserFeedbackThemeConfiguration, SentryUserFeedbackWidgetConfiguration, SentryFeedback, and SentryExperimentalOptions final (#6365)
  • Removes Decodable conformances from the public API of model classes (#5691)
  • Removes unused SentryLogLevel (#5591)
  • Removes deprecated setExtraValue from 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 integrations property from SentryOptions (#5749)
  • Removes defaultIntegrations function from SentryOptions (#6664)
  • Makes SentryEventDecodable internal (#5808)
  • The span property on SentryScope is now readonly (#5866)
  • Removes SentryIntegrationProtocol from the API. This is not used after the removal of the integrations property (#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 enablePerformanceV2 option 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.instruction property (#6504)
  • Remove uuid and name of SentryDebugMeta (#6512) Use debugID instead of uuid and codeFile instead of name.
  • Enable enablePreWarmedAppStartTracing by default (#6508). With this option enabled, the SDK collects prewarmed app starts.
  • Set SentryFrame.function default to nil instead of <redacted> (#6608)
  • Change value and type of SentryException to be nullable (#6563)
  • Change the default trace context status to "ok" instead of "undefined" (#6611)
  • Remove getHash from 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.type to nil when NSException has no reason (#6653). The backend then can provide a proper message when there is no reason.
  • Rename SentryLog.Level and SentryLog.Attribute for 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 SentryMechanismMeta to SentryMechanismContext to resolve Kotlin Multi-Platform build errors (#6607)

Improvements

  • Replace deprecated SCNetworkReachability with NWPathMonitor (#6019)
  • Expose attachment type on SentryAttachment for 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 enablePropagateTraceparent to support OTel/W3C trace propagation (#6356)
  • Move enableFileManagerSwizzling from experimental options to top-level options (#6592).
    This option is still disabled by default and will be enabled in a future major release.
  • Move enableDataSwizzling from experimental options to top-level options (#6592). This option remains enabled by default.
  • Add sentry.replay_id attribute to logs (#6515)
  • Structured Logs: Add SentrySwiftLog Integration (#6286)

8.57.2

06 Nov 11:07

Choose a tag to compare

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 UIDesignRequiresCompatibility to YES in Info.plist

Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:

options.experimental.enableSessionReplayInUnreliableEnvironment = true

This 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

30 Oct 08:13

Choose a tag to compare

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 UIDesignRequiresCompatibility to YES in Info.plist

Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:

options.experimental.enableSessionReplayInUnreliableEnvironment = true

This experimental override option will be removed in a future minor version once the masking issues are resolved.

Fixes

  • Fix crash from accessing UITouch instances from background thread in SentryTouchTracker (#6584)
  • Disable SessionSentryReplayIntegration if the environment is unsafe [#6573]
  • Fix crash when last replay info is missing some keys [#6577]

8.57.0

14 Oct 11:18

Choose a tag to compare

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 UIDesignRequiresCompatibility to YES in Info.plist

Override (use with caution): If you understand the PII risks and want to enable session replay anyway, you can set:

options.experimental.enableSessionReplayInUnreliableEnvironment = true

This 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.enableSessionReplayInUnreliableEnvironment to allow overriding the automatic disabling (#6389)

8.56.2

26 Sep 12:20

Choose a tag to compare

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

23 Sep 13:52

Choose a tag to compare

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

  • Fix potential app launch hang caused by the SentrySDK (#6181)
    Fixed by removing the call to _dyld_get_image_header on the main thread.
  • Fix dynamic selector crash in SentryReplayRecording (#6211)

8.56.0

15 Sep 13:58
3365d74

Choose a tag to compare

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.logger calls to SentrySDKLog (#5991)
  • The build type in the app context now differentiates between enterprise and adhoc (#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.start becomes unusable (#5984)
  • Add masking for AVPlayerView (#5910)
  • Fix missing view hierachy when enabling attachScreenshot too (#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)