Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ jobs:
- name: iOS 26 Sentry
runs-on: macos-26
platform: "iOS"
xcode: "26.0"
xcode: "26.0.1"
test-destination-os: "26.0"
device: "iPhone 17 Pro"
scheme: "Sentry"
Expand Down Expand Up @@ -294,7 +294,7 @@ jobs:
- name: macOS 26 Sentry
runs-on: macos-26
platform: "macOS"
xcode: "26.0"
xcode: "26.0.1"
test-destination-os: "26.0"
scheme: "Sentry"

Expand Down Expand Up @@ -350,7 +350,7 @@ jobs:
- name: tvOS 26 Sentry
runs-on: macos-26
platform: "tvOS"
xcode: "26.0"
xcode: "26.0.1"
test-destination-os: "26.0"
device: "Apple TV"
scheme: "Sentry"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ui-tests-common.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,11 @@ jobs:
env:
XCODE_VERSION: ${{ inputs.xcode_version }}
- name: Install required platforms for Xcode 26
if: ${{ inputs.xcode_version == '26.0' }}
if: ${{ inputs.xcode_version == '26.0.1' }}
run: ./scripts/ci-install-xOS-26-platforms.sh --platforms "${{inputs.platform}}"

- name: Create simulator device for Xcode 26
if: ${{ inputs.xcode_version == '26.0' }}
if: ${{ inputs.xcode_version == '26.0.1' }}
run: ./scripts/ci-create-simulator.sh --platform "${{inputs.platform}}" --os-version "${{inputs.test-destination-os}}" --device-name "${{inputs.device}}"
- run: make init-ci-build
if: ${{ inputs.build_with_make }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ui-tests-critical.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
- name: iOS 26
platform:
runs-on: macos-15
xcode: "26.0"
xcode: "26.0.1"
platform: "iOS"
device: "iPhone 16 Pro"
test-destination-os: "26.0"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ui-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ jobs:
- name: iOS 26
runs-on: macos-15
platform: "iOS"
xcode: "26.0"
xcode: "26.0.1"
device: iPhone 16 Pro
test-destination-os: "26.0"
with:
Expand Down
2 changes: 0 additions & 2 deletions CHANGELOG-v9.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

### Breaking Changes

Removes deprecated user feedback API, this is replaced with the new feedback API (#5591)
Removes unused SentryLogLevel (#5591)
Removes deprecated getStoreEndpoint (#5591)
Removes deprecated useSpan function (#5591)
Expand All @@ -16,4 +15,3 @@ Removes deprecated `setExtraValue` from SentrySpan (#5864)
Removes `integrations` property from `SentryOptions` (#5749)
Makes `SentryEventDecodable` internal (#5808)
The `span` property on `SentryScope` is now readonly (#5866)
Removes `enablePerformanceV2` option and makes this the default (#6008)
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## Unreleased

### Breaking Changes

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)

### Features

- Add SentryDistribution as Swift Package Manager target (#6149)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,6 @@ public enum SentrySDKOverrides: String, CaseIterable {

public enum Performance: String, SentrySDKOverride {
case disableTimeToFullDisplayTracing = "--io.sentry.performance.disable-time-to-full-display-tracing"
case disablePerformanceV2 = "--io.sentry.performance.disable-performance-v2"
case disableAppHangTrackingV2 = "--io.sentry.performance.disable-app-hang-tracking-v2"
case disableSessionTracking = "--io.sentry.performance.disable-automatic-session-tracking"
case disableFileIOTracing = "--io.sentry.performance.disable-file-io-tracing"
Expand Down Expand Up @@ -315,7 +314,7 @@ extension SentrySDKOverrides.Other {
extension SentrySDKOverrides.Performance {
public var overrideType: OverrideType {
switch self {
case .disableTimeToFullDisplayTracing, .disablePerformanceV2, .disableAppHangTrackingV2, .disableSessionTracking, .disableFileIOTracing, .disableUIVCTracing, .disableCoreDataTracing, .disableANRTracking, .disableWatchdogTracking, .disableUITracing, .disablePrewarmedAppStartTracing, .disablePerformanceTracing: return .boolean
case .disableTimeToFullDisplayTracing, .disableAppHangTrackingV2, .disableSessionTracking, .disableFileIOTracing, .disableUIVCTracing, .disableCoreDataTracing, .disableANRTracking, .disableWatchdogTracking, .disableUITracing, .disablePrewarmedAppStartTracing, .disablePerformanceTracing: return .boolean
case .sessionTrackingIntervalMillis: return .string
}
}
Expand Down Expand Up @@ -402,7 +401,7 @@ extension SentrySDKOverrides.Other {
extension SentrySDKOverrides.Performance {
public var ignoresDisableEverything: Bool {
switch self {
case .disableTimeToFullDisplayTracing, .disablePerformanceV2, .disableAppHangTrackingV2, .disableSessionTracking, .disableFileIOTracing, .disableUIVCTracing, .disableCoreDataTracing, .disableANRTracking, .disableWatchdogTracking, .disableUITracing, .disablePrewarmedAppStartTracing, .disablePerformanceTracing: return false
case .disableTimeToFullDisplayTracing, .disableAppHangTrackingV2, .disableSessionTracking, .disableFileIOTracing, .disableUIVCTracing, .disableCoreDataTracing, .disableANRTracking, .disableWatchdogTracking, .disableUITracing, .disablePrewarmedAppStartTracing, .disablePerformanceTracing: return false
case .sessionTrackingIntervalMillis: return true
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,6 @@ public struct SentrySDKWrapper {
options.enableCrashHandler = !SentrySDKOverrides.Other.disableCrashHandling.boolValue
options.enablePersistingTracesWhenCrashing = true
options.enableTimeToFullDisplayTracing = !SentrySDKOverrides.Performance.disableTimeToFullDisplayTracing.boolValue
#if !SDK_V9
options.enablePerformanceV2 = !SentrySDKOverrides.Performance.disablePerformanceV2.boolValue
#endif
options.failedRequestStatusCodes = [ HttpStatusCodeRange(min: 400, max: 599) ]

#if targetEnvironment(simulator)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ class ViewLifecycleUITests: BaseUITest {
super.setUp()
launchApp(args: [
SentrySDKOverrides.Performance.disableTimeToFullDisplayTracing.rawValue,
SentrySDKOverrides.Performance.disablePerformanceV2.rawValue,
SentrySDKOverrides.Performance.disableAppHangTrackingV2.rawValue
])
}
Expand Down
11 changes: 0 additions & 11 deletions Sources/Sentry/Public/SentryOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -288,17 +288,6 @@ NS_SWIFT_NAME(Options)
*/
@property (nonatomic, assign) BOOL enableAutoPerformanceTracing;

#if !SDK_V9
/**
* We're working to update our Performance product offering in order to be able to provide better
* insights and highlight specific actions you can take to improve your mobile app's overall
* performance. The performanceV2 option changes the following behavior: The app start duration will
* now finish when the first frame is drawn instead of when the OS posts the
* UIWindowDidBecomeVisibleNotification. This change will be the default in the next major version.
*/
@property (nonatomic, assign) BOOL enablePerformanceV2;
#endif // !SDK_V9

/**
* @warning This is an experimental feature and may still have bugs.
*
Expand Down
31 changes: 2 additions & 29 deletions Sources/Sentry/SentryAppStartTracker.m
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ @interface SentryAppStartTracker () <SentryFramesTrackerListener>
@property (nonatomic, assign) BOOL wasInBackground;
@property (nonatomic, strong) NSDate *didFinishLaunchingTimestamp;
@property (nonatomic, assign) BOOL enablePreWarmedAppStartTracing;
@property (nonatomic, assign) BOOL enablePerformanceV2;

@end

Expand All @@ -55,16 +54,12 @@ - (instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispa
appStateManager:(id<SentryAppStateManager>)appStateManager
framesTracker:(SentryFramesTracker *)framesTracker
enablePreWarmedAppStartTracing:(BOOL)enablePreWarmedAppStartTracing
enablePerformanceV2:(BOOL)enablePerformanceV2
{
if (self = [super init]) {
self.dispatchQueue = dispatchQueueWrapper;
self.appStateManager = appStateManager;
_enablePerformanceV2 = enablePerformanceV2;
if (_enablePerformanceV2) {
self.framesTracker = framesTracker;
[framesTracker addListener:self];
}
self.framesTracker = framesTracker;
[framesTracker addListener:self];

self.previousAppState = [self.appStateManager loadPreviousAppState];
self.wasInBackground = NO;
Expand Down Expand Up @@ -104,11 +99,6 @@ - (void)start
name:UIApplicationDidFinishLaunchingNotification
object:nil];

[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector(didBecomeVisible)
name:UIWindowDidBecomeVisibleNotification
object:nil];

[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector(didEnterBackground)
name:UIApplicationDidEnterBackgroundNotification
Expand Down Expand Up @@ -229,19 +219,6 @@ - (void)buildAppStartMeasurement:(NSDate *)appStartEnd
# endif // defined(SENTRY_TEST) || defined(SENTRY_TEST_CI) || defined(DEBUG)
}

/**
* This is when the window becomes visible, which is not when the first frame of the app is drawn.
* When this is posted, the app screen is usually white. The correct time when the first frame is
* drawn is called in framesTrackerHasNewFrame only when `enablePerformanceV2` is enabled.
*/
- (void)didBecomeVisible
{
if (!_enablePerformanceV2) {
[self
buildAppStartMeasurement:[SentryDependencyContainer.sharedInstance.dateProvider date]];
}
}

/**
* This is when the first frame is drawn.
*/
Expand Down Expand Up @@ -303,10 +280,6 @@ - (void)stop
name:UIApplicationDidFinishLaunchingNotification
object:nil];

[NSNotificationCenter.defaultCenter removeObserver:self
name:UIWindowDidBecomeVisibleNotification
object:nil];

[NSNotificationCenter.defaultCenter removeObserver:self
name:UIApplicationDidEnterBackgroundNotification
object:nil];
Expand Down
8 changes: 1 addition & 7 deletions Sources/Sentry/SentryAppStartTrackingIntegration.m
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,11 @@ - (BOOL)installWithOptions:(SentryOptions *)options
id<SentryAppStateManager> appStateManager =
[SentryDependencyContainer sharedInstance].appStateManager;

# if SDK_V9
BOOL usePerformanceV2 = YES;
# else
BOOL usePerformanceV2 = options.enablePerformanceV2;
# endif // SDK_V9
self.tracker = [[SentryAppStartTracker alloc]
initWithDispatchQueueWrapper:[[SentryDispatchQueueWrapper alloc] init]
appStateManager:appStateManager
framesTracker:SentryDependencyContainer.sharedInstance.framesTracker
enablePreWarmedAppStartTracing:options.enablePreWarmedAppStartTracing
enablePerformanceV2:usePerformanceV2];
enablePreWarmedAppStartTracing:options.enablePreWarmedAppStartTracing];
[self.tracker start];

return YES;
Expand Down
3 changes: 0 additions & 3 deletions Sources/Sentry/SentryOptions.m
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,6 @@ - (instancetype)init
self.maxAttachmentSize = 20 * 1024 * 1024;
self.sendDefaultPii = NO;
self.enableAutoPerformanceTracing = YES;
#if !SDK_V9
self.enablePerformanceV2 = NO;
#endif // !SDK_V9
self.enablePersistingTracesWhenCrashing = NO;
self.enableCaptureFailedRequests = YES;
self.environment = kSentryDefaultEnvironment;
Expand Down
5 changes: 0 additions & 5 deletions Sources/Sentry/SentyOptionsInternal.m
Original file line number Diff line number Diff line change
Expand Up @@ -240,11 +240,6 @@ + (BOOL)validateOptions:(NSDictionary<NSString *, id> *)options
[self setBool:options[@"enableAutoPerformanceTracing"]
block:^(BOOL value) { sentryOptions.enableAutoPerformanceTracing = value; }];

#if !SDK_V9
[self setBool:options[@"enablePerformanceV2"]
block:^(BOOL value) { sentryOptions.enablePerformanceV2 = value; }];
#endif // !SDK_V9

[self setBool:options[@"enablePersistingTracesWhenCrashing"]
block:^(BOOL value) { sentryOptions.enablePersistingTracesWhenCrashing = value; }];

Expand Down
3 changes: 1 addition & 2 deletions Sources/Sentry/include/SentryAppStartTracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ SENTRY_NO_INIT
- (instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper
appStateManager:(id<SentryAppStateManager>)appStateManager
framesTracker:(SentryFramesTracker *)framesTracker
enablePreWarmedAppStartTracing:(BOOL)enablePreWarmedAppStartTracing
enablePerformanceV2:(BOOL)enablePerformanceV2;
enablePreWarmedAppStartTracing:(BOOL)enablePreWarmedAppStartTracing;

- (void)start;
- (void)stop;
Expand Down
6 changes: 0 additions & 6 deletions Sources/Swift/Helper/SentryEnabledFeaturesBuilder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,6 @@ import Foundation
features.append("captureFailedRequests")
}

#if !SDK_V9
if options.enablePerformanceV2 {
features.append("performanceV2")
}
#endif // !SDK_V9

if options.enableTimeToFullDisplayTracing {
features.append("timeToFullDisplayTracing")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ final class SentryEnabledFeaturesBuilderTests: XCTestCase {
func testEnableAllFeatures() throws {
// -- Arrange --
let options = Options()
options.enablePerformanceV2 = true
options.enableTimeToFullDisplayTracing = true
options.swiftAsyncStacktraces = true

Expand All @@ -45,7 +44,6 @@ final class SentryEnabledFeaturesBuilderTests: XCTestCase {

// -- Assert --
XCTAssert(features.contains("captureFailedRequests"))
XCTAssert(features.contains("performanceV2"))
XCTAssert(features.contains("timeToFullDisplayTracing"))
XCTAssert(features.contains("swiftAsyncStacktraces"))

Expand Down
Loading
Loading