Skip to main content
Every comment thread is anchored to a screen identifier, so threads for “the checkout screen” group together instead of scattering across every visit to it. Most of the time you never have to think about this — screen names are captured automatically.

Automatic capture

The SDK names a screen after its hosting view controller class, captured automatically when that view controller appears. For UIKit apps, this is almost always exactly what you want: CheckoutViewController reads as “Checkout.”

Why pure SwiftUI apps get mushy names

SwiftUI views don’t have their own view controllers — a UIHostingController is the actual class the automatic capture sees, and one hosting controller often wraps several nested or modified SwiftUI views. The result is a screen name like HostingController that tells you nothing about which screen it actually was, especially in an app built entirely in SwiftUI where most or all of your screens share that same generic wrapper.

Fix it: tag the screen

Override the automatic name per-view with the .tappifyScreen(_:) modifier:
You can also call Tappify.tagScreen(_:) directly from anywhere — for example, from a UIKit viewDidAppear override — for the same effect. Both are documented in full in the API reference.
There’s no silent fallback here by design: the overlay always displays the raw screen identifier it’s using, so a bad auto-generated name is visible in the thread list rather than hidden. If you see an unhelpful name, that’s your signal to tag that screen.
If you’re integrating the SDK into a new SwiftUI app, it’s worth tagging your main screens up front rather than waiting to notice bad names later — see the quickstart’s optional steps.