sentry-ios-swift-setup

Sentry iOS Swift Setup

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "sentry-ios-swift-setup" with this command: npx skills add getsentry/sentry-agent-skills/getsentry-sentry-agent-skills-sentry-ios-swift-setup

Sentry iOS Swift Setup

Install and configure Sentry in iOS projects using Swift and SwiftUI.

Invoke This Skill When

  • User asks to "add Sentry to iOS" or "install Sentry" in a Swift app

  • User wants error monitoring, tracing, or session replay in iOS

  • User mentions "sentry-cocoa" or iOS crash reporting

Important: The configuration options and code samples below are examples. Always verify against docs.sentry.io before implementing, as APIs and defaults may have changed.

Requirements

  • iOS 15.0+, macOS 12.0+, tvOS 15.0+, watchOS 8.0+

Install

Swift Package Manager (Recommended)

SPM Products: Choose based on your needs:

Product Use Case

Sentry

Default (static linking)

Sentry-Dynamic

Dynamic framework

SentrySwiftUI

SwiftUI view performance tracking

Sentry-WithoutUIKitOrAppKit

App extensions or CLI tools

CocoaPods

Podfile

pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '9.5.0'

Then run pod install .

Configure

SwiftUI App

import SwiftUI import Sentry

@main struct YourApp: App { init() { SentrySDK.start { options in options.dsn = "YOUR_SENTRY_DSN" options.debug = true

        // Tracing
        options.tracesSampleRate = 1.0
        
        // Profiling
        options.configureProfiling = {
            $0.sessionSampleRate = 1.0
            $0.lifecycle = .trace
        }
        
        // Session Replay
        options.sessionReplay.sessionSampleRate = 1.0
        options.sessionReplay.onErrorSampleRate = 1.0
        
        // Logs (SDK 9.0.0+; for 8.55.0-8.x use options.experimental.enableLogs)
        options.enableLogs = true
        
        // Error context
        options.attachScreenshot = true
        options.attachViewHierarchy = true
    }
}

var body: some Scene {
    WindowGroup { ContentView() }
}

}

UIKit App

import UIKit import Sentry

@main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { SentrySDK.start { options in options.dsn = "YOUR_SENTRY_DSN" options.debug = true options.tracesSampleRate = 1.0 options.enableLogs = true } return true } }

Configuration Options

Option Description Default

dsn

Sentry DSN Required

tracesSampleRate

% of transactions traced 0

sessionReplay.sessionSampleRate

% of sessions replayed 0

sessionReplay.onErrorSampleRate

% of error sessions replayed 0

enableLogs

Send logs to Sentry false

attachScreenshot

Attach screenshot on error false

attachViewHierarchy

Attach view hierarchy on error false

Auto-Instrumented Features

Feature What's Captured

App Launches Cold/warm start times

Network URLSession requests

UI UIViewController loads, user interactions

File I/O Read/write operations

Core Data Fetch/save operations

Frames Slow and frozen frame detection

Logging

let logger = SentrySDK.logger

logger.info("User action", attributes: [ "userId": "123", "action": "checkout" ])

// Log levels: trace, debug, info, warn, error, fatal

Session Replay

iOS 26+ / Xcode 26+ caveat: SDK 8.57.0+ automatically disables Session Replay on iOS 26.0+ when built with Xcode 26.0+ due to Apple's Liquid Glass rendering breaking masking reliability. Replay still works on iOS < 26 or Xcode < 26. To force-enable (use with caution): options.experimental.enableSessionReplayInUnreliableEnvironment = true .

Masking

// SwiftUI modifiers Text("Safe content").sentryReplayUnmask() Text(user.email).sentryReplayMask()

User Context

let user = User() user.userId = "user_123" user.email = "user@example.com" SentrySDK.setUser(user)

// Clear on logout SentrySDK.setUser(nil)

Verification

// Test error capture SentrySDK.capture(message: "Test from iOS")

// Or trigger a test error do { try someFailingFunction() } catch { SentrySDK.capture(error: error) }

Production Settings

SentrySDK.start { options in options.dsn = "YOUR_SENTRY_DSN" options.debug = false options.tracesSampleRate = 0.2 // 20% options.sessionReplay.sessionSampleRate = 0.1 // 10% options.sessionReplay.onErrorSampleRate = 1.0 // 100% on error options.enableLogs = true }

Size Analysis (Fastlane)

Track app bundle size with Sentry using the Fastlane plugin.

Install Plugin

bundle exec fastlane add_plugin fastlane-plugin-sentry

Configure Authentication

Environment variable (recommended for CI)

export SENTRY_AUTH_TOKEN=your_token_here

Or create .sentryclirc (add to .gitignore ):

[auth] token=YOUR_SENTRY_AUTH_TOKEN

Fastfile Lane

lane :sentry_size do build_app( scheme: "YourApp", configuration: "Release", export_method: "app-store" )

sentry_upload_build( org_slug: "your-org", project_slug: "your-project", build_configuration: "Release" ) end

Run Size Analysis

bundle exec fastlane sentry_size

View results in the Sentry UI after the upload completes.

Troubleshooting

Issue Solution

Events not appearing Check DSN, enable debug = true

No traces Set tracesSampleRate

0

No replays Set sessionSampleRate

0, check SDK 8.31.1+. On iOS 26+/Xcode 26+ see Liquid Glass caveat above

No logs Set enableLogs = true (SDK 9.0.0+) or experimental.enableLogs = true (SDK 8.55.0-8.x)

CocoaPods fails Run pod repo update , check iOS 15+ target

Size upload fails Check SENTRY_AUTH_TOKEN , verify org/project slugs

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

sentry-fix-issues

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

sentry-setup-ai-monitoring

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

sentry-setup-logging

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

sentry-setup-tracing

No summary provided by upstream source.

Repository SourceNeeds Review