Skip to content

Conversation

philprime
Copy link
Member

@philprime philprime commented Sep 26, 2025

  • Use intrinsicContentSize to mask sensitive views without clipping (e.g. UILabel)

📜 Description

TBD

💡 Motivation and Context

TBD

One screen of the dogfooding app Flinky had the following masking issue in a screen where a Grid and a List are inside a VStack, where the entire top half was unmasked:

image

Further analysis using (lldb) po view.value(forKey: "recursiveDescription")! surfaced that the SwiftUI.List is implemented as a SwiftUI.UpdateCoalescingCollectionView, a subclass of UICollectionView, which uses a _UICollectionViewListLayoutSectionBackgroundColorDecorationView to display its background color.

This background view massively overextends the list bounds with it's frame of (-20 -1135.33; 442 2336) and causes calculation issues in the clipping.

The easiest solution for now was simply ignoring the view from the redaction algorithm.

(lldb) po view.value(forKey: "recursiveDescription")!
<UIWindow: 0x105343a90; frame = (0 0; 402 874); gestureRecognizers = <NSArray: 0x600000c6ebb0>; layer = <UIWindowLayer: 0x600000c6f600>>
   | <UITransitionView: 0x105218500; frame = (0 0; 402 874); autoresize = W+H; layer = <CALayer: 0x60000027b7a0>>
   |    | <UIDropShadowView: 0x10381e640; frame = (0 0; 402 874); autoresize = W+H; layer = <CALayer: 0x600000274f00>>
   |    |    | <_TtGC7SwiftUI14_UIHostingViewGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier__: 0x10540c400; frame = (0 0; 402 874); autoresize = W+H; gestureRecognizers = <NSArray: 0x600000011a40>; backgroundColor = <UIDynamicSystemColor: 0x6000017192c0; name = systemBackgroundColor>; layer = <SwiftUI.UIHostingViewDebugLayer: 0x60000027aee0>> 1 1; layer = <CALayer: 0x6000002c0ce0>>
   |    |    |    |    | <UILayoutContainerView: 0x103835e10; frame = (0 0; 402 874); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x60000003c2c0>; layer = <CALayer: 0x6000002c0d80>>
   |    |    |    |    |    | <UINavigationTransitionView: 0x1038361c0; frame = (0 0; 402 874); autoresize = W+H; layer = <CALayer: 0x6000002c0e20>>
   |    |    |    |    |    |    | <UIViewControllerWrapperView: 0x10523efc0; frame = (0 0; 402 874); layer = <CALayer: 0x6000002c8060>>
   |    |    |    |    |    |    |    | <_TtCGC7SwiftUI32NavigationStackHostingControllerVS_7AnyView_P10$1d43225f411HostingView: 0x10352a610; frame = (0 0; 402 874); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x600000ca11d0>; backgroundColor = <UIDynamicSystemColor: 0x6000017192c0; name = systemBackgroundColor>; layer = <SwiftUI.UIHostingViewDebugLayer: 0x60000027ed60>>
   |    |    |    |    |    |    |    |    | <SwiftUI._UIGraphicsView: 0x10350c0f0; frame = (0 0; 402 874); anchorPoint = (0, 0); autoresizesSubviews = NO; backgroundColor = UIExtendedSRGBColorSpace 0.94902 0.94902 0.968628 1; layer = <CALayer: 0x6000002cd000>>
   |    |    |    |    |    |    |    |    | <_TtC7SwiftUIP33_5DAB09131F46EF4FA69B417F7F09D60321PortalGroupMarkerView: 0x103540120; frame = (16 204.333; 179 86); anchorPoint = (0, 0); layer = <CALayer: 0x6000002cd140>>
   |    |    |    |    |    |    |    |    |    | <SwiftUI._UIInheritedView: 0x103540a60; frame = (0 0; 179 86); anchorPoint = (0, 0); autoresizesSubviews = NO; layer = <CALayer: 0x6000002cd240>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI._UIGraphicsView: 0x103541040; frame = (0 0; 179 86); anchorPoint = (0, 0); clipsToBounds = YES; autoresizesSubviews = NO; backgroundColor = UIExtendedSRGBColorSpace 1 1 1 1; layer = <CALayer: 0x6000002cd2c0>>
   |    |    |    |    |    |    |    |    |    |    | <_TtC7SwiftUIP33_A34643117F00277B93DEBAB70EC0697122_UIShapeHitTestingView: 0x1035414f0; frame = (14 18.6667; 24.3333 23); anchorPoint = (0, 0); autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_E19F490D25D5E0EC8A24903AF958E34115ColorShapeLayer: 0x6000002cd3a0>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI.CGDrawingView: 0x103541b00; frame = (156.333 17; 10.6667 26.3333); anchorPoint = (0, 0); opaque = NO; autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_65A81BD07F0108B0485D2E15DE104A7514CGDrawingLayer: 0x60000265b480>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI.CGDrawingView: 0x1035422d0; frame = (12 56; 62 18); anchorPoint = (0, 0); opaque = NO; autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_65A81BD07F0108B0485D2E15DE104A7514CGDrawingLayer: 0x600002660000>>
   |    |    |    |    |    |    |    |    | <_TtGC7SwiftUI16PlatformViewHostGVS_P10$1d43289e817ListRepresentableGVS_28CollectionViewListDataSourceOs5Never_GOS_19SelectionManagerBoxS3____: 0x105248090; baseClass = _UIConstraintBasedLayoutHostingView; frame = (0 306.333; 402 567.667); anchorPoint = (0, 0); tintColor = UIExtendedSRGBColorSpace 0 0.478431 1 1; layer = <CALayer: 0x6000002acfe0>>
   |    |    |    |    |    |    |    |    |    | <SwiftUI.UpdateCoalescingCollectionView: 0x105871000; baseClass = UICollectionView; frame = (0 0; 402 567.667); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x600000ca3240>; backgroundColor = <UIDynamicSystemColor: 0x600001786780; name = systemGroupedBackgroundColor>; layer = <CALayer: 0x6000002ab800>; contentOffset: {0, 0}; contentSize: {402, 65.333333333333343}; adjustedContentInset: {0, 0, 83.000000000000114, 0}; layout: <UICollectionViewCompositionalLayout: 0x10352a2e0>; dataSource: <_TtGC7SwiftUI31UICollectionViewListCoordinatorGVS_28CollectionViewListDataSourceOs5Never_GOS_19SelectionManagerBoxS2___: 0x103529f30>>
   |    |    |    |    |    |    |    |    |    |    | <_UICollectionViewListLayoutSectionBackgroundColorDecorationView: 0x10354bb40; frame = (-20 -1135.33; 442 2336); userInteractionEnabled = NO; backgroundColor = <UIDynamicSystemColor: 0x600001786780; name = systemGroupedBackgroundColor>; layer = <CALayer: 0x6000002dd4a0>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI.ListCollectionViewCell: 0x105950c00; baseClass = UICollectionViewListCell; frame = (20 0; 362 45.3333); layer = <CALayer: 0x6000002dd080>>
   |    |    |    |    |    |    |    |    |    |    |    | <_UISystemBackgroundView: 0x103545440; frame = (0 0; 362 45.3333); layer = <CALayer: 0x6000002dd180>; configuration = <UIBackgroundConfiguration: 0x6000039de560; Base Style = List Grouped Header/Footer; cornerRadius = 10>>
   |    |    |    |    |    |    |    |    |    |    |    | <_UICollectionViewListCellContentView: 0x10354a890; frame = (0 0; 362 45.3333); gestureRecognizers = <NSArray: 0x60000003d6c0>; layer = <CALayer: 0x6000002dc0c0>>
   |    |    |    |    |    |    |    |    |    |    |    |    | <_TtGC7SwiftUI15CellHostingViewGVS_15ModifiedContentVS_14_ViewList_ViewVS_26CollectionViewCellModifier__: 0x105958e00; frame = (0 0; 362 45.3333); autoresize = W+H; gestureRecognizers = <NSArray: 0x60000003d7b0>; layer = <SwiftUI.UIHostingViewDebugLayer: 0x6000002ddc80>>
   |    |    |    |    |    |    |    |    |    |    |    |    |    | <SwiftUI.CGDrawingView: 0x105388f90; frame = (20 8; 85.3333 26.3333); anchorPoint = (0, 0); opaque = NO; autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_65A81BD07F0108B0485D2E15DE104A7514CGDrawingLayer: 0x60000265d140>>
   |    |    |    |    |    |    |    |    |    |    | <_UIScrollViewScrollIndicator: 0x103543070; frame = (396 474.667; 3 7); alpha = 0; autoresize = LM; layer = <CALayer: 0x6000002cda60>>
   |    |    |    |    |    |    |    |    |    |    |    | <UIView: 0x103543220; frame = (0 0; 3 7); backgroundColor = UIExtendedGrayColorSpace 0 0.35; layer = <CALayer: 0x6000002cda80>>
   |    |    |    |    |    |    |    |    | <_TtGC7SwiftUI16PlatformViewHostGVS_P10$1d432ddac32PlatformViewRepresentableAdaptorV13SentrySwiftUI23SentryReplayPreviewView__: 0x103534ed0; baseClass = _UIConstraintBasedLayoutHostingView; frame = (0 204.333; 402 586.667); anchorPoint = (0, 0); userInteractionEnabled = NO; tintColor = UIExtendedSRGBColorSpace 0 0.478431 1 1; layer = <CALayer: 0x6000002b97a0>>
   |    |    |    |    |    |    |    |    |    | <SentrySwiftUI.SentryReplayMaskPreviewUIView: 0x103533200; frame = (0 0; 402 586.667); autoresize = W+H; layer = <CALayer: 0x6000002b9740>>
   |    |    |    |    |    | <SwiftUI.UIKitNavigationBar: 0x10352de70; baseClass = UINavigationBar; frame = (0 56.3333; 402 148); opaque = NO; autoresize = W; layer = <CALayer: 0x60000027f3a0>> delegate=0x105847400
   |    |    |    |    |    |    | <_UIBarBackground: 0x10352e2d0; frame = (0 -62; 402 210); userInteractionEnabled = NO; layer = <CALayer: 0x60000027f560>>
   |    |    |    |    |    |    |    | <UIVisualEffectView: 0x103841760; frame = (0 0; 402 210); alpha = 0; layer = <CALayer: 0x6000002c30e0>> effect=none
   |    |    |    |    |    |    |    |    | <_UIVisualEffectBackdropView: 0x103519d80; frame = (0 0; 402 210); autoresize = W+H; userInteractionEnabled = NO; layer = <UICABackdropLayer: 0x600000c82580>>
   |    |    |    |    |    |    |    | <_UIBarBackgroundShadowView: 0x10353a4f0; frame = (0 210; 402 0.333333); layer = <CALayer: 0x6000002b8cc0>> clientRequestedContentView effect=none
   |    |    |    |    |    |    |    |    | <_UIBarBackgroundShadowContentImageView: 0x103841b60; frame = (0 0; 402 0.333333); alpha = 0; autoresize = W+H; userInteractionEnabled = NO; backgroundColor = <UIDynamicSystemColor: 0x6000017ac640; name = _systemChromeShadowColor>; image = <(null):0x0 (null) anonymous; (0 0)@0>; layer = <CALayer: 0x6000002c3660>>
   |    |    |    |    |    |    | <SwiftUI.UIKitSearchBar: 0x105257f10; baseClass = UISearchBar; frame = (0 96; 402 52); text = ''; gestureRecognizers = <NSArray: 0x600000012ac0>; layer = <CALayer: 0x6000002c86e0>>
   |    |    |    |    |    |    |    | <UIView: 0x105242ac0; frame = (0 0; 402 52); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x6000002c88a0>>
   |    |    |    |    |    |    |    |    | <UISearchBarBackground: 0x105258ab0; frame = (0 0; 402 52); opaque = NO; userInteractionEnabled = NO; image = <(null):0x0 (null) anonymous; (0 0)@0>; layer = <CALayer: 0x6000002c8920>>
   |    |    |    |    |    |    |    |    | <_UISearchBarSearchContainerView: 0x105242e50; frame = (0 0; 402 52); autoresize = W; layer = <CALayer: 0x6000002c8a60>>
   |    |    |    |    |    |    |    |    |    | <UISearchBarTextField: 0x10787ea00; frame = (16 1; 370 36); text = ''; opaque = NO; gestureRecognizers = <NSArray: 0x600000ca31b0>; placeholder = Search lists and links; borderStyle = RoundedRect; background = <_UITextFieldSystemBackgroundProvider: 0x6000002c6080: backgroundView=<_UISearchBarSearchFieldBackgroundView: 0x10384c320; frame = (0 0; 370 36); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x6000002c61c0>>, fillColor=(null), textfield=<UISearchBarTextField: 0x10787ea00>>; layer = <CALayer: 0x6000002c43c0>>
   |    |    |    |    |    |    |    |    |    |    | <_UISearchBarSearchFieldBackgroundView: 0x10384c320; frame = (0 0; 370 36); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x6000002c61c0>>
   |    |    |    |    |    |    |    |    |    |    |    | <_UISearchBarSearchFieldBackgroundView: 0x10384c990; frame = (0 0; 370 36); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; backgroundColor = <UIDynamicSystemColor: 0x6000017aeb80; name = tertiarySystemFillColor>; layer = <CALayer: 0x6000002c62c0>>
   |    |    |    |    |    |    |    |    |    |    | <_UITouchPassthroughView: 0x1035451b0; frame = (0 0; 331.667 32); layer = <CALayer: 0x6000002ce560>>
   |    |    |    |    |    |    |    |    |    |    | <UIImageView: 0x10384ba70; frame = (6 8.33333; 20.3333 18.6667); opaque = NO; userInteractionEnabled = NO; tintColor = <UIDynamicCatalogSystemColor: 0x60000178b540; name = secondaryLabelColor>; image = <UIImage:0x600003003600 symbol "magnifyingglass"; (20 19)@3{2}>; layer = <CALayer: 0x6000002c5e00>>
   |    |    |    |    |    |    |    |    |    |    | <UISearchBarTextFieldLabel: 0x105412a70; frame = (31.3333 8; 159 20.3333); text = 'Search lists and links'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60000295fb80>>
   |    |    |    |    |    |    |    |    |    |    | <_UITextLayoutCanvasView: 0x103823f10; frame = (31.3333 2; 331.667 32); layer = <CALayer: 0x6000002c5020>>
   |    |    |    |    |    |    |    |    |    |    |    | <_UITextLayoutFragmentView: 0x10538d030; frame = (0 6; 0 21); opaque = NO; layer = <CALayer: 0x6000002da840>>
   |    |    |    |    |    |    | <_UINavigationBarLargeTitleView: 0x10352f980; frame = (0 44; 402 52); clipsToBounds = YES; layer = <CALayer: 0x600000271d80>>
   |    |    |    |    |    |    |    | <UILabel: 0x10352fd70; frame = (16 3.66667; 93.6667 40.6667); text = 'Flinky'; userInteractionEnabled = NO; backgroundColor = UIExtendedGrayColorSpace 0 0; layer = <_UILabelLayer: 0x600002959ce0>>
   |    |    |    |    |    |    | <_UINavigationBarContentView: 0x10352e6c0; frame = (0 0; 402 44); layer = <CALayer: 0x60000027fe60>> layout=0x10352ebd0
   |    |    |    |    |    |    |    | <_UIButtonBarStackView: 0x10383d950; frame = (348.667 0; 37.3333 44); layer = <CALayer: 0x6000002c2260>> axis=horiz distribution=fill alignment=center layoutMarginsRelative buttonBar=0x600003e1e000
   |    |    |    |    |    |    |    |    | <_UITAMICAdaptorView: 0x10382f100; frame = (0 8; 37.3333 28.3333); autoresizesSubviews = NO; layer = <CALayer: 0x6000002c50e0>>
   |    |    |    |    |    |    |    |    |    | <_TtGC7SwiftUI16UIKitBarItemHostVS_11BarItemView_: 0x105417630; frame = (0 0; 37.3333 28.3333); gestureRecognizers = <NSArray: 0x600000019750>; layer = <SwiftUI.UIHostingViewDebugLayer: 0x6000002d0340>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI.CGDrawingView: 0x103852370; frame = (8 4; 29.3333 20.3333); anchorPoint = (0, 0); opaque = NO; autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_65A81BD07F0108B0485D2E15DE104A7514CGDrawingLayer: 0x60000264ed00>>
   |    |    |    |    |    |    |    | <_UINavigationBarTitleControl: 0x103839570; frame = (177.667 11.6667; 47 20.3333); layer = <CALayer: 0x6000002c1d80>>
   |    |    |    |    |    |    |    |    | <UIView: 0x1038399f0; frame = (0 0; 47 20.3333); alpha = 0; layer = <CALayer: 0x6000002c1da0>>
   |    |    |    |    |    |    |    |    |    | <UILabel: 0x103839b70; frame = (0 0; 47 20.3333); text = 'Flinky'; userInteractionEnabled = NO; backgroundColor = UIExtendedGrayColorSpace 0 0; layer = <_UILabelLayer: 0x600002950000>>
   |    |    |    |    |    |    | <_UIPointerInteractionAssistantEffectContainerView: 0x103838670; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x6000002c1b00>>
   |    |    |    |    |    | <SwiftUI.UIKitToolbar: 0x105388b60; baseClass = UIToolbar; frame = (0 791; 402 49); autoresize = W+TM; layer = <CALayer: 0x6000002d8600>> standardAppearance=0x6000017c0c40
   |    |    |    |    |    |    | <_UIBarBackground: 0x105389fb0; frame = (0 0; 402 83); userInteractionEnabled = NO; layer = <CALayer: 0x6000002d8c80>>
   |    |    |    |    |    |    |    | <UIVisualEffectView: 0x10538a1a0; frame = (0 0; 402 83); alpha = 0; layer = <CALayer: 0x6000002d8d00>> effect=none
   |    |    |    |    |    |    |    |    | <_UIVisualEffectBackdropView: 0x10538a5a0; frame = (0 0; 402 83); autoresize = W+H; userInteractionEnabled = NO; layer = <UICABackdropLayer: 0x600000caa0a0>>
   |    |    |    |    |    |    |    | <_UIBarBackgroundShadowView: 0x10538a3a0; frame = (0 -0.333333; 402 0.333333); layer = <CALayer: 0x6000002d8dc0>> clientRequestedContentView effect=none
   |    |    |    |    |    |    |    |    | <_UIBarBackgroundShadowContentImageView: 0x10538a950; frame = (0 0; 402 0.333333); autoresize = W+H; userInteractionEnabled = NO; tintColor = UIExtendedGrayColorSpace 0 0; image = <(null):0x0 (null) anonymous; (0 0)@0>; layer = <CALayer: 0x6000002d8f80>>
   |    |    |    |    |    |    | <_UIToolbarContentView: 0x105388d80; frame = (0 0; 402 49); layer = <CALayer: 0x6000002d8820>>
   |    |    |    |    |    |    |    | <_UIButtonBarStackView: 0x1053854f0; frame = (16 0; 370 49); layer = <CALayer: 0x6000002d88a0>> axis=horiz distribution=fill alignment=center layoutMarginsRelative buttonBar=0x600003e02f00
   |    |    |    |    |    |    |    |    | <_UITAMICAdaptorView: 0x10538ad50; frame = (0 13.6667; 125.333 27); autoresizesSubviews = NO; layer = <CALayer: 0x6000002d9480>>
   |    |    |    |    |    |    |    |    |    | <_TtGC7SwiftUI16UIKitBarItemHostVS_11BarItemView_: 0x10530ff80; frame = (0 0; 125.333 27); gestureRecognizers = <NSArray: 0x600000015380>; layer = <SwiftUI.UIHostingViewDebugLayer: 0x6000002b1260>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI.CGDrawingView: 0x10538c780; frame = (1 2; 24 23); anchorPoint = (0, 0); opaque = NO; autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_65A81BD07F0108B0485D2E15DE104A7514CGDrawingLayer: 0x60000265dec0>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI.CGDrawingView: 0x10537e390; frame = (34.6667 3; 90.6667 20.3333); anchorPoint = (0, 0); opaque = NO; autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_65A81BD07F0108B0485D2E15DE104A7514CGDrawingLayer: 0x60000265e040>>
   |    |    |    |    |    |    |    |    | <UIView: 0x105340eb0; frame = (125.333 27; 162.333 0); layer = <CALayer: 0x6000002d9500>>
   |    |    |    |    |    |    |    |    | <_UITAMICAdaptorView: 0x10538b110; frame = (287.667 17; 82.3333 20.3333); autoresizesSubviews = NO; layer = <CALayer: 0x6000002d9520>>
   |    |    |    |    |    |    |    |    |    | <_TtGC7SwiftUI16UIKitBarItemHostVS_11BarItemView_: 0x1053812d0; frame = (0 0; 82.3333 20.3333); gestureRecognizers = <NSArray: 0x600000014af0>; layer = <SwiftUI.UIHostingViewDebugLayer: 0x6000002d7620>>
   |    |    |    |    |    |    |    |    |    |    | <SwiftUI.CGDrawingView: 0x105381860; frame = (0 0; 82.3333 20.3333); anchorPoint = (0, 0); opaque = NO; autoresizesSubviews = NO; layer = <_TtC7SwiftUIP33_65A81BD07F0108B0485D2E15DE104A7514CGDrawingLayer: 0x60000265cd80>>
   |    |    |    |    |    |    |    | <_UIPointerInteractionAssistantEffectContainerView: 0x10533c5b0; frame = (16 0; 0 0); userInteractionEnabled = NO; layer = <CALayer: 0x6000002d8be0>>
   | <Sentry.SentryMaskingPreviewView: 0x103534550; frame = (0 0; 402 874); alpha = 0.5; userInteractionEnabled = NO; layer = <CALayer: 0x6000002b96a0>>
   |    | <UIImageView: 0x1035346f0; frame = (0 0; 402 874); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; image = <UIImage:0x6000030122e0 CGImage anonymous; (402 874)@1>; layer = <CALayer: 0x6000002b94a0>>

💚 How did you test it?

I used the Flinky project with a locally checked out Sentry Cocoa SDK repo and directly compiled it. After running the app I checked the replay in Sentry.

📝 Checklist

You have to check all boxes before merging:

  • I added tests to verify the changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • Review from the native team if needed.
  • No breaking change or entry added to the changelog.
  • No breaking change for hybrid SDKs or communicated to hybrid SDKs.

@philprime philprime self-assigned this Sep 26, 2025
Copy link

codecov bot commented Sep 26, 2025

❌ 9 Tests Failed:

Tests completed Failed Passed Skipped
4053 9 4044 28
View the top 3 failed test(s) by shortest run time
SentryTests.SentryUIRedactBuilderTests_Common::testAddIgnoreClasses_arrayAPI_shouldNotRedactViews
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+Common.swift:1010 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_Common::testDefaultIgnoredControls_shouldNotRedactUISlider
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+Common.swift:1094 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_Common::testDefaultIgnoredControls_shouldNotRedactUISwitch
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+Common.swift:1124 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_Common::testOptions_unmaskedViewClasses_shouldIgnoreCustomLabel
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+Common.swift:888 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_Common::testUnmaskView_withSensitiveView_shouldNotRedactView
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+Common.swift:637 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_Common::testUnmaskView_withSensitiveView_withViewExtension_shouldNotRedactView
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+Common.swift:725 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_SpecialViews::testRedact_withPDFView_withMaskingDisabled_shouldBeRedacted
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+SpecialViews.swift:84 - failed - Snapshot does not match reference.
SentryTests.SentryUIRedactBuilderTests_SpecialViews::testRedact_withPDFView_withMaskingEnabled_shouldBeRedacted
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+SpecialViews.swift:56 - failed - Snapshot does not match reference.
SentryTests.SentryUIRedactBuilderTests_SpecialViews::testRedact_withSFSafariView_withMaskingDisabled_shouldRedactView
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+SpecialViews.swift:333 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_SpecialViews::testRedact_withSFSafariView_withMaskingEnabled_shouldRedactViewHierarchy
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+SpecialViews.swift:315 - failed - No reference was found on disk. Automatically recorded snapshot: …
SentryTests.SentryUIRedactBuilderTests_UIKit::testRedact_withUITextView_withMaskAllTextDisabled_shouldNotRedactView
Stack Traces | 0s run time
.../SentryTests/ViewCapture/SentryUIRedactBuilderTests+UIKit.swift:200 - XCTAssertEqual failed: ("(15.0, 40.0)") is not equal to ("(40.0, 40.0)")
iOS_Swift_UITests.ProfilingUITests::testProfilingGPUInfo
Stack Traces | 0s run time
.../iOS-Swift/iOS-Swift-UITests/UITestHelpers.swift:5 - Failed to get matching snapshots: Timed out while evaluating UI query.

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Copy link
Contributor

github-actions bot commented Sep 26, 2025

Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1229.51 ms 1260.31 ms 30.80 ms
Size 23.75 KiB 1014.06 KiB 990.32 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
e3767a1 1224.20 ms 1257.16 ms 32.96 ms
b115f82 1212.96 ms 1251.92 ms 38.96 ms
438caec 1230.02 ms 1250.00 ms 19.98 ms
7d23639 1237.93 ms 1243.04 ms 5.11 ms
e64d3d4 1241.90 ms 1260.10 ms 18.20 ms
5200f5b 1231.73 ms 1254.35 ms 22.62 ms
701acf0 1230.24 ms 1255.60 ms 25.36 ms
2675d3c 1218.94 ms 1239.36 ms 20.42 ms
80538ca 1216.70 ms 1253.92 ms 37.22 ms
884b224 1233.41 ms 1259.50 ms 26.09 ms

App size

Revision Plain With Sentry Diff
e3767a1 23.75 KiB 913.14 KiB 889.39 KiB
b115f82 23.75 KiB 989.04 KiB 965.30 KiB
438caec 23.74 KiB 913.14 KiB 889.40 KiB
7d23639 23.75 KiB 891.01 KiB 867.26 KiB
e64d3d4 23.75 KiB 855.37 KiB 831.62 KiB
5200f5b 23.75 KiB 933.33 KiB 909.58 KiB
701acf0 23.75 KiB 987.96 KiB 964.21 KiB
2675d3c 23.75 KiB 928.16 KiB 904.41 KiB
80538ca 23.75 KiB 989.99 KiB 966.24 KiB
884b224 23.75 KiB 879.60 KiB 855.86 KiB

Previous results on branch: philprime/fix-masking

Startup times

Revision Plain With Sentry Diff
d70d220 1238.80 ms 1262.08 ms 23.29 ms
8d1f930 1241.27 ms 1263.71 ms 22.44 ms

App size

Revision Plain With Sentry Diff
d70d220 23.75 KiB 994.81 KiB 971.06 KiB
8d1f930 23.75 KiB 981.78 KiB 958.03 KiB

@philprime philprime changed the title fix(session-replay): Ignore list background decoration view in redaction fix(session-replay): Extend masking and focus masking on sensitive information Oct 2, 2025
@philprime philprime marked this pull request as ready for review October 8, 2025 12:26
@philprime philprime marked this pull request as draft October 8, 2025 12:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant