In-App Frames

Learn about how your SDK marks frames as in-app.

The sentry-cocoa SDK always marks public frameworks such as UIKitCore, CoreFoundation, GraphicsServices, and so forth as not inApp. If you're using a version of our SDK that's older than 7.0.0, all private frameworks and the main executable inside the application bundle will be marked as inApp. If you're using version 7.0.0 and up, the SDK will only set the inApp flag for frames originating from the main executable by using the CFBundleExecutable. For private frameworks such as Sentry, dynamic and static frameworks will differ.

If you're not familiar with these terms, you can learn more:

If you use dynamic frameworks such as Sentry, the Sentry SDK will mark them as not inApp. If you have a private framework that should be marked as inApp, use the SentryOptions inAppInclude or inAppExclude.

import Sentry

SentrySDK.start { options in
    options.dsn = ""

    // The SDK marks all frameworks starting with MyBusinessLogic as inApp
    options.add(inAppInclude: "MyBusinessLogic")

    // The SDK marks all frameworks starting with MyFramework as not inApp
    options.add(inAppExclude: "MyFramework")

Because static frameworks end up in the main executable, if you're using one, the Sentry SDK won't be able to detect if a frame of the main executable originates from your application or a private framework and will mark all frames as inApp. To work around this, tell Sentry which frames should be marked as not inApp, using Stack Trace Rules on the server.

Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").