From e8c4559827cbb9643f751dbdf5d689208b69bb9d Mon Sep 17 00:00:00 2001 From: Noah Martin Date: Thu, 2 Oct 2025 16:34:52 -0400 Subject: [PATCH 1/2] chore: Remove v2 perf option from v9 sdk --- CHANGELOG-v9.md | 2 - CHANGELOG.md | 5 ++ .../SentrySDKOverrides.swift | 5 +- .../SentrySampleShared/SentrySDKWrapper.swift | 3 - .../ViewLifecycleUITests.swift | 1 - Sources/Sentry/Public/SentryOptions.h | 11 --- Sources/Sentry/SentryAppStartTracker.m | 31 +-------- .../SentryAppStartTrackingIntegration.m | 8 +-- Sources/Sentry/SentryOptions.m | 3 - Sources/Sentry/SentyOptionsInternal.m | 5 -- .../Sentry/include/SentryAppStartTracker.h | 3 +- .../Helper/SentryEnabledFeaturesBuilder.swift | 6 -- .../SentryEnabledFeaturesBuilderTests.swift | 2 - .../SentryAppStartTrackerTests.swift | 68 +++++++++---------- ...ntryAppStartTrackingIntegrationTests.swift | 12 ---- Tests/SentryTests/SentryClientTests.swift | 5 +- Tests/SentryTests/SentryOptionsTest.m | 5 -- 17 files changed, 43 insertions(+), 132 deletions(-) diff --git a/CHANGELOG-v9.md b/CHANGELOG-v9.md index 25a8d26f635..ba0eff0a61f 100644 --- a/CHANGELOG-v9.md +++ b/CHANGELOG-v9.md @@ -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) @@ -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) diff --git a/CHANGELOG.md b/CHANGELOG.md index a11addda2e7..679c88e60c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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) diff --git a/Samples/SentrySampleShared/SentrySampleShared/SentrySDKOverrides.swift b/Samples/SentrySampleShared/SentrySampleShared/SentrySDKOverrides.swift index f98701f99c7..5e3d04f42d4 100644 --- a/Samples/SentrySampleShared/SentrySampleShared/SentrySDKOverrides.swift +++ b/Samples/SentrySampleShared/SentrySampleShared/SentrySDKOverrides.swift @@ -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" @@ -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 } } @@ -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 } } diff --git a/Samples/SentrySampleShared/SentrySampleShared/SentrySDKWrapper.swift b/Samples/SentrySampleShared/SentrySampleShared/SentrySDKWrapper.swift index bfa70239185..eaec02f3ebe 100644 --- a/Samples/SentrySampleShared/SentrySampleShared/SentrySDKWrapper.swift +++ b/Samples/SentrySampleShared/SentrySampleShared/SentrySDKWrapper.swift @@ -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) diff --git a/Samples/iOS-Swift/iOS-Swift-UITests/ViewLifecycleUITests.swift b/Samples/iOS-Swift/iOS-Swift-UITests/ViewLifecycleUITests.swift index a6946e77148..f1581ae5357 100644 --- a/Samples/iOS-Swift/iOS-Swift-UITests/ViewLifecycleUITests.swift +++ b/Samples/iOS-Swift/iOS-Swift-UITests/ViewLifecycleUITests.swift @@ -11,7 +11,6 @@ class ViewLifecycleUITests: BaseUITest { super.setUp() launchApp(args: [ SentrySDKOverrides.Performance.disableTimeToFullDisplayTracing.rawValue, - SentrySDKOverrides.Performance.disablePerformanceV2.rawValue, SentrySDKOverrides.Performance.disableAppHangTrackingV2.rawValue ]) } diff --git a/Sources/Sentry/Public/SentryOptions.h b/Sources/Sentry/Public/SentryOptions.h index dbd9dcfbe86..5d452735e82 100644 --- a/Sources/Sentry/Public/SentryOptions.h +++ b/Sources/Sentry/Public/SentryOptions.h @@ -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. * diff --git a/Sources/Sentry/SentryAppStartTracker.m b/Sources/Sentry/SentryAppStartTracker.m index 0233be7cf62..b885db47423 100644 --- a/Sources/Sentry/SentryAppStartTracker.m +++ b/Sources/Sentry/SentryAppStartTracker.m @@ -33,7 +33,6 @@ @interface SentryAppStartTracker () @property (nonatomic, assign) BOOL wasInBackground; @property (nonatomic, strong) NSDate *didFinishLaunchingTimestamp; @property (nonatomic, assign) BOOL enablePreWarmedAppStartTracing; -@property (nonatomic, assign) BOOL enablePerformanceV2; @end @@ -55,16 +54,12 @@ - (instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispa appStateManager:(id)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; @@ -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 @@ -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. */ @@ -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]; diff --git a/Sources/Sentry/SentryAppStartTrackingIntegration.m b/Sources/Sentry/SentryAppStartTrackingIntegration.m index 5e945c293dc..2911e954b7d 100644 --- a/Sources/Sentry/SentryAppStartTrackingIntegration.m +++ b/Sources/Sentry/SentryAppStartTrackingIntegration.m @@ -27,17 +27,11 @@ - (BOOL)installWithOptions:(SentryOptions *)options id 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; diff --git a/Sources/Sentry/SentryOptions.m b/Sources/Sentry/SentryOptions.m index 78e4ad2931b..9ad27cd8696 100644 --- a/Sources/Sentry/SentryOptions.m +++ b/Sources/Sentry/SentryOptions.m @@ -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; diff --git a/Sources/Sentry/SentyOptionsInternal.m b/Sources/Sentry/SentyOptionsInternal.m index 2f8a255ddca..ce9e8a9acf9 100644 --- a/Sources/Sentry/SentyOptionsInternal.m +++ b/Sources/Sentry/SentyOptionsInternal.m @@ -240,11 +240,6 @@ + (BOOL)validateOptions:(NSDictionary *)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; }]; diff --git a/Sources/Sentry/include/SentryAppStartTracker.h b/Sources/Sentry/include/SentryAppStartTracker.h index 5430deae82b..e083c93e63e 100644 --- a/Sources/Sentry/include/SentryAppStartTracker.h +++ b/Sources/Sentry/include/SentryAppStartTracker.h @@ -22,8 +22,7 @@ SENTRY_NO_INIT - (instancetype)initWithDispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper appStateManager:(id)appStateManager framesTracker:(SentryFramesTracker *)framesTracker - enablePreWarmedAppStartTracing:(BOOL)enablePreWarmedAppStartTracing - enablePerformanceV2:(BOOL)enablePerformanceV2; + enablePreWarmedAppStartTracing:(BOOL)enablePreWarmedAppStartTracing; - (void)start; - (void)stop; diff --git a/Sources/Swift/Helper/SentryEnabledFeaturesBuilder.swift b/Sources/Swift/Helper/SentryEnabledFeaturesBuilder.swift index 4df962e5898..df1ab72dcb4 100644 --- a/Sources/Swift/Helper/SentryEnabledFeaturesBuilder.swift +++ b/Sources/Swift/Helper/SentryEnabledFeaturesBuilder.swift @@ -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") } diff --git a/Tests/SentryTests/Helper/SentryEnabledFeaturesBuilderTests.swift b/Tests/SentryTests/Helper/SentryEnabledFeaturesBuilderTests.swift index 4c5917a1531..1e5735ace90 100644 --- a/Tests/SentryTests/Helper/SentryEnabledFeaturesBuilderTests.swift +++ b/Tests/SentryTests/Helper/SentryEnabledFeaturesBuilderTests.swift @@ -22,7 +22,6 @@ final class SentryEnabledFeaturesBuilderTests: XCTestCase { func testEnableAllFeatures() throws { // -- Arrange -- let options = Options() - options.enablePerformanceV2 = true options.enableTimeToFullDisplayTracing = true options.swiftAsyncStacktraces = true @@ -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")) diff --git a/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackerTests.swift b/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackerTests.swift index 1d7adee1bad..33fbb29d036 100644 --- a/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackerTests.swift +++ b/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackerTests.swift @@ -16,10 +16,9 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { let crashWrapper = TestSentryCrashWrapper(processInfoWrapper: ProcessInfo.processInfo) let appStateManager: SentryAppStateManager var displayLinkWrapper = TestDisplayLinkWrapper() - private let framesTracker: SentryFramesTracker + let framesTracker: SentryFramesTracker let dispatchQueue = TestSentryDispatchQueueWrapper() var enablePreWarmedAppStartTracing = true - var enablePerformanceV2 = false let appStartDuration: TimeInterval = 0.4 var runtimeInitTimestamp: Date @@ -67,8 +66,7 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { dispatchQueueWrapper: TestSentryDispatchQueueWrapper(), appStateManager: appStateManager, framesTracker: framesTracker, - enablePreWarmedAppStartTracing: enablePreWarmedAppStartTracing, - enablePerformanceV2: enablePerformanceV2 + enablePreWarmedAppStartTracing: enablePreWarmedAppStartTracing ) return sut } @@ -93,22 +91,12 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { } func testFirstStart_IsColdStart() { - startApp() - - assertValidStart(type: .cold) - } - - func testPerformanceV2_UsesRenderedFrameAsEndTimeStamp() { - fixture.enablePerformanceV2 = true - startApp(callDisplayLink: true) assertValidStart(type: .cold, expectedDuration: 0.45) } - func testPerformanceV2_RemovesFramesTrackerListener() { - fixture.enablePerformanceV2 = true - + func testRemovesFramesTrackerListener() { startApp(callDisplayLink: true) advanceTime(bySeconds: 0.05) @@ -122,18 +110,18 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { let appState = SentryAppState(releaseName: TestData.appState.releaseName, osVersion: UIDevice.current.systemVersion, vendorId: TestData.someUUID, isDebugging: false, systemBootTimestamp: previousBootTime) store(appState: appState) - startApp() + startApp(callDisplayLink: true) - assertValidStart(type: .cold) + assertValidStart(type: .cold, expectedDuration: 0.45) } func testSecondStart_SystemNotRebooted_IsWarmStart() { givenSystemNotRebooted() fixture.fileManager.moveAppStateToPreviousAppState() - startApp() + startApp(callDisplayLink: true) - assertValidStart(type: .warm) + assertValidStart(type: .warm, expectedDuration: 0.45) } // Test for situation described in https://github.com/getsentry/sentry-cocoa/issues/2376 @@ -143,21 +131,22 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { fixture.options.enableWatchdogTerminationTracking = false fixture.fileManager.moveAppStateToPreviousAppState() - startApp() - assertValidStart(type: .warm) + startApp(callDisplayLink: true) + assertValidStart(type: .warm, expectedDuration: 0.45) fixture.fileManager.moveAppStateToPreviousAppState() - startApp() - assertValidStart(type: .warm) + fixture.framesTracker.resetFrames() + startApp(callDisplayLink: true) + assertValidStart(type: .warm, expectedDuration: 0.45) } func testAppUpgrade_IsColdStart() { let appState = SentryAppState(releaseName: "0.9.0", osVersion: UIDevice.current.systemVersion, vendorId: TestData.someUUID, isDebugging: false, systemBootTimestamp: SentryDependencyContainer.sharedInstance().dateProvider.date()) store(appState: appState) - startApp() + startApp(callDisplayLink: true) - assertValidStart(type: .cold) + assertValidStart(type: .cold, expectedDuration: 0.45) } func testAppWasInBackground_NoAppStartUp() { @@ -182,9 +171,9 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { store(appState: appState) fixture.fileManager.moveAppStateToPreviousAppState() - startApp() + startApp(callDisplayLink: true) - assertValidStart(type: .warm) + assertValidStart(type: .warm, expectedDuration: 0.45) } /** @@ -206,10 +195,10 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { givenSystemNotRebooted() fixture.fileManager.moveAppStateToPreviousAppState() - startApp(processStartTimeStamp: SentryDependencyContainer.sharedInstance().dateProvider.date().addingTimeInterval(-60 * 60 * 4)) + startApp(processStartTimeStamp: SentryDependencyContainer.sharedInstance().dateProvider.date().addingTimeInterval(-60 * 60 * 4), callDisplayLink: true) #if os(iOS) if #available(iOS 14.0, *) { - assertValidStart(type: .warm, expectedDuration: 0.3, preWarmed: true) + assertValidStart(type: .warm, expectedDuration: 0.35, preWarmed: true) } else { assertNoAppStartUp() } @@ -226,15 +215,15 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { givenSystemNotRebooted() fixture.fileManager.moveAppStateToPreviousAppState() - startApp() + startApp(callDisplayLink: true) #if os(iOS) if #available(iOS 14.0, *) { assertNoAppStartUp() } else { - assertValidStart(type: .warm) + assertValidStart(type: .warm, expectedDuration: 0.45) } #else - assertValidStart(type: .warm) + assertValidStart(type: .warm, expectedDuration: 0.45) #endif } @@ -260,9 +249,9 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { givenSystemNotRebooted() fixture.fileManager.moveAppStateToPreviousAppState() - startApp() + startApp(callDisplayLink: true) - assertValidStart(type: .warm) + assertValidStart(type: .warm, expectedDuration: 0.45) } func testAppLaunches_MaximumAppStartDuration_NoAppStart() { @@ -274,9 +263,9 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { func testAppLaunches_OSAlmostPrewarmedProcess_AppStartUp() { let processStartTime = SentryDependencyContainer.sharedInstance().dateProvider.date().addingTimeInterval(-179) - startApp(processStartTimeStamp: processStartTime) + startApp(processStartTimeStamp: processStartTime, callDisplayLink: true) - assertValidStart(type: .cold, expectedDuration: 179.4) + assertValidStart(type: .cold, expectedDuration: 179.45) } func testAppLaunchesBackgroundTask_NoAppStartUp() { @@ -319,7 +308,12 @@ class SentryAppStartTrackerTests: NotificationCenterTestCase { uiWindowDidBecomeVisible() didBecomeActive() - assertValidStart(type: .cold) + advanceTime(bySeconds: 0.05) + fixture.currentDate.driftTimeForEveryRead = true + fixture.displayLinkWrapper.normalFrame() + fixture.currentDate.driftTimeForEveryRead = false + + assertValidStart(type: .cold, expectedDuration: 0.45) } func testHybridSDKs_ColdStart() { diff --git a/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackingIntegrationTests.swift b/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackingIntegrationTests.swift index ad2ae7daf10..8e3dc2d4e8c 100644 --- a/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackingIntegrationTests.swift +++ b/Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryAppStartTrackingIntegrationTests.swift @@ -117,21 +117,9 @@ class SentryAppStartTrackingIntegrationTests: NotificationCenterTestCase { XCTAssertFalse(result) } - - func test_PerformanceV2Enabled() { - let options = fixture.options - options.enablePerformanceV2 = true - - XCTAssertEqual(self.sut.install(with: options), true) - - let tracker = Dynamic(sut).tracker.asAnyObject as? SentryAppStartTracker - XCTAssertEqual(Dynamic(tracker).enablePerformanceV2.asBool, true) - } func assertTrackerSetupAndRunning(_ tracker: SentryAppStartTracker) throws { _ = try XCTUnwrap(Dynamic(tracker).dispatchQueue.asAnyObject as? SentryDispatchQueueWrapper, "Tracker does not have a dispatch queue.") - - XCTAssertFalse(try XCTUnwrap(Dynamic(tracker).enablePerformanceV2.asBool)) let appStateManager = Dynamic(tracker).appStateManager.asObject as? SentryAppStateManager diff --git a/Tests/SentryTests/SentryClientTests.swift b/Tests/SentryTests/SentryClientTests.swift index 0c5926eb94d..8af64d5fd11 100644 --- a/Tests/SentryTests/SentryClientTests.swift +++ b/Tests/SentryTests/SentryClientTests.swift @@ -1725,15 +1725,12 @@ class SentryClientTests: XCTestCase { } func testSetSDKFeatures() throws { - let sut = fixture.getSut { - $0.enablePerformanceV2 = true - } + let sut = fixture.getSut() sut.capture(message: "message") let actual = try lastSentEvent() let features = try XCTUnwrap(actual.sdk?["features"] as? [String]) - XCTAssert(features.contains("performanceV2")) XCTAssert(features.contains("captureFailedRequests")) } diff --git a/Tests/SentryTests/SentryOptionsTest.m b/Tests/SentryTests/SentryOptionsTest.m index 071f60da695..4f943e5232b 100644 --- a/Tests/SentryTests/SentryOptionsTest.m +++ b/Tests/SentryTests/SentryOptionsTest.m @@ -834,11 +834,6 @@ - (void)testEnableAutoPerformanceTracing [self testBooleanField:@"enableAutoPerformanceTracing"]; } -- (void)testEnablePerformanceV2 -{ - [self testBooleanField:@"enablePerformanceV2" defaultValue:NO]; -} - - (void)testEnablePersistingTracesWhenCrashing { [self testBooleanField:@"enablePersistingTracesWhenCrashing" defaultValue:NO]; From 7700efa73608cf3676951fd762f93c987c9717dd Mon Sep 17 00:00:00 2001 From: Noah Martin Date: Fri, 3 Oct 2025 16:30:06 -0400 Subject: [PATCH 2/2] Fix CI --- .github/workflows/test.yml | 6 +++--- .github/workflows/ui-tests-common.yml | 4 ++-- .github/workflows/ui-tests-critical.yml | 2 +- .github/workflows/ui-tests.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9748890b2d6..2f266635cf0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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" @@ -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" @@ -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" diff --git a/.github/workflows/ui-tests-common.yml b/.github/workflows/ui-tests-common.yml index d408635d07d..993a8802b1b 100644 --- a/.github/workflows/ui-tests-common.yml +++ b/.github/workflows/ui-tests-common.yml @@ -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 }} diff --git a/.github/workflows/ui-tests-critical.yml b/.github/workflows/ui-tests-critical.yml index b9f401cc313..a6c6430aa37 100644 --- a/.github/workflows/ui-tests-critical.yml +++ b/.github/workflows/ui-tests-critical.yml @@ -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" diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml index 7e5b4ad6256..208fb3fa98c 100644 --- a/.github/workflows/ui-tests.yml +++ b/.github/workflows/ui-tests.yml @@ -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: