<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "tvOS: 16.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIViewController/interactionActivityTrackingBaseName",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UIViewController(py)interactionActivityTrackingBaseName"
  },
  "title" : "interactionActivityTrackingBaseName"
}
-->

# interactionActivityTrackingBaseName

The base name the view controller uses for logging signposts that annotate user interactions.

```
var interactionActivityTrackingBaseName: String? { get set }
```

## Discussion

To help you investigate perfomance issues in your app, UIKit annotates significant user interactions with signpost messages. It creates activities that span the duration of the interaction and sets one of the <doc://com.apple.documentation/documentation/Foundation/ProcessInfo/ActivityOptions> for tracking: <doc://com.apple.documentation/documentation/Foundation/ProcessInfo/ActivityOptions/animationTrackingEnabled> or <doc://com.apple.documentation/documentation/Foundation/ProcessInfo/ActivityOptions/trackingEnabled>.

Use this property to customize the tracking name the activity uses in the signpost messages. Scroll views that can derive their enclosing view controller also use the tracking name to annotate interactive dragging and programmatic scrolling events.

In many cases, you can set the tracking name once in `init`, `viewDidLoad,` or `awakeFromNib`. You can, however, change the tracking name in response to different configurations. In this example, the tracking name updates in response to toggling a switch.

```swift
func showImagesSwitchDidChange(_ sender: UISwitch) {
    model.shadowImages = sender.isOn
    interactionActivityTrackingBaseName = sender.isOn ? "FancyList" : "PlainList"
    collectionView.reloadData()
}
```

When not explicitly set, custom subclasses use their class name as the base name, while base classes may use the [`accessibilityIdentifier`](/documentation/UIKit/UIAccessibilityIdentification/accessibilityIdentifier) of the controller’s managed view.

If the view controller is a prominent child view controller of a [`UINavigationController`](/documentation/UIKit/UINavigationController), [`UITabBarController`](/documentation/UIKit/UITabBarController), or [`UISplitViewController`](/documentation/UIKit/UISplitViewController), the parent may derive a name by applying a prefix:

- `UINC-` for a navigation controller
- `UITBC-` for a tab bar controller
- `UISVC-` for a split view controller

The system applies a suffix to the base name to denote the type of user interaction:

- `-Appearing` when presenting the view controller
- `-Disappearing` when dismising the view controller
- `-Scrolling` when scrolling the view controller’s managed `UIScrollView`
- `-Dragging` when dragging the view controller’s managed `UIScrollView`

For example, UIKit uses the tracking name `UINC-MyListTableViewController-Appearing` in a signpost when presenting a navigation controler with a `MyListTableViewController` prominent child controller.

## See Also

  <doc://com.apple.documentation/documentation/os/recording-performance-data>

  <doc://com.apple.documentation/documentation/Xcode/improving-app-responsiveness>



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)