Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
getsentry avatar

Sentry Cocoa Sdk

  • 43 installs
  • 20 repo stars
  • Updated March 24, 2026
  • getsentry/agent-skills

sentry-cocoa-sdk is an agent skill that guides complete Sentry SDK setup for Apple platform applications.

About

The sentry-cocoa-sdk skill is an opinionated wizard for adding Sentry to Apple platform apps across iOS, macOS, tvOS, watchOS, and visionOS. Phase 1 detects existing sentry dependencies, UI framework, deployment targets, logging libraries, and companion backends via grep commands. Phase 2 recommends Error Monitoring, Tracing, and Profiling by default with optional Session Replay, Logging, and User Feedback based on platform support. Phase 3 guides installation through sentry-wizard, Swift Package Manager, or CocoaPods with exactly one SPM product per target, then provides SwiftUI and UIKit SentrySDK.start examples with crash, hang, trace, profiling, and replay options. Feature references load per agreed capability, and verification uses capture(message:) with dashboard checks. Production guidance lowers tracesSampleRate and profiling session rates while disabling debug output. Phase 4 cross-links companion Go, Python, Ruby, or Node backends for distributed tracing via tracePropagationTargets. Troubleshooting covers debugger-attached crashes, iOS 26 replay defaults, and CocoaPods sandbox errors. Use when adding Sentry error and performance monitoring to Swift or Objective-C Apple a.

  • Four-phase detect, recommend, guide, and cross-link workflow for Apple Sentry setup.
  • Detects SwiftUI versus UIKit to choose the correct SentrySDK.start pattern.
  • Recommends Error Monitoring, Tracing, and Profiling with platform-aware optional features.
  • Supports sentry-wizard, SPM, and CocoaPods with one SPM product per target.
  • Includes production sample-rate tuning and companion backend tracing cross-links.

Sentry Cocoa Sdk by the numbers

  • 43 all-time installs (skills.sh)
  • Ranked #616 of 1,039 Mobile Development skills by installs in the Skillselion catalog
  • Data as of Jul 24, 2026 (Skillselion catalog sync)
At a glance

sentry-cocoa-sdk capabilities & compatibility

Capabilities
project detection for ui framework and platforms · sdk install via wizard spm or cocoapods · sentrysdk.start configuration templates · feature by feature reference walkthrough · production sample rate and troubleshooting guida
Works with
sentry
Use cases
debugging · testing
From the docs

What sentry-cocoa-sdk says it does

Opinionated wizard that scans your Apple project and guides you through complete Sentry setup.
SKILL.md
npx skills add https://github.com/getsentry/agent-skills --skill sentry-cocoa-sdk

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs43
repo stars20
Last updatedMarch 24, 2026
Repositorygetsentry/agent-skills

How do I add Sentry error monitoring and tracing to my iOS or Apple platform app?

Detect Apple project context and guide full sentry-cocoa setup for errors, tracing, profiling, and optional replay.

Who is it for?

Apple app developers adding Sentry crash reporting, tracing, profiling, or session replay.

Skip if: Skip for web-only JavaScript apps, backend-only Sentry setup, or non-Apple platforms.

When should I use this skill?

User asks to add Sentry to iOS, Swift, sentry-cocoa, or configure Apple app error monitoring.

What you get

Installed sentry-cocoa with configured SentrySDK.start, verified events, and optional backend trace linking.

Files

SKILL.mdMarkdownGitHub ↗

Sentry Cocoa SDK

Opinionated wizard that scans your Apple project and guides you through complete Sentry setup.

Invoke This Skill When

  • User asks to "add Sentry to iOS/macOS/tvOS" or "set up Sentry" in an Apple app
  • User wants error monitoring, tracing, profiling, session replay, or logging in Swift/ObjC
  • User mentions sentry-cocoa, SentrySDK, or the Apple/iOS Sentry SDK
  • User wants to monitor crashes, app hangs, watchdog terminations, or performance
Note: SDK versions and APIs below reflect Sentry docs at time of writing (sentry-cocoa 9.5.1).
Always verify against docs.sentry.io/platforms/apple/ before implementing.

---

Phase 1: Detect

Run these commands to understand the project before making any recommendations:

# Check existing Sentry dependency
grep -i sentry Package.swift Podfile Cartfile 2>/dev/null

# Detect UI framework (SwiftUI vs UIKit)
grep -rE "@main|struct.*App.*:.*App" --include="*.swift" . 2>/dev/null | head -5
grep -rE "AppDelegate|UIApplicationMain" --include="*.swift" . 2>/dev/null | head -5

# Detect platform and deployment targets
grep -E "platforms:|\.iOS|\.macOS|\.tvOS|\.watchOS|\.visionOS" Package.swift 2>/dev/null
grep -E "platform :ios|platform :osx|platform :tvos|platform :watchos" Podfile 2>/dev/null

# Detect logging
grep -rE "import OSLog|os\.log|CocoaLumberjack|DDLog" --include="*.swift" . 2>/dev/null | head -5

# Detect companion backend
ls ../backend ../server ../api 2>/dev/null
ls ../go.mod ../requirements.txt ../Gemfile ../package.json 2>/dev/null

What to note:

  • Is sentry-cocoa already in Package.swift or Podfile? If yes, skip to Phase 2 (configure features).
  • SwiftUI (@main App struct) or UIKit (AppDelegate)? Determines init pattern.
  • Which Apple platforms? (Affects which features are available — see Platform Support Matrix.)
  • Existing logging library? (Enables structured log capture.)
  • Companion backend? (Triggers Phase 4 cross-link for distributed tracing.)

---

Phase 2: Recommend

Based on what you found, present a concrete recommendation. Don't ask open-ended questions — lead with a proposal:

Recommended (core coverage):

  • Error Monitoring — always; crash reporting, app hangs, watchdog terminations, NSError/Swift errors
  • Tracing — always for apps; auto-instruments app launch, network, UIViewController, file I/O, Core Data
  • Profiling — production apps; continuous profiling with minimal overhead

Optional (enhanced observability):

  • Session Replay — user-facing apps; ⚠️ disabled by default on iOS 26+ (Liquid Glass rendering)
  • Logging — when structured log capture is needed
  • User Feedback — apps that want crash/error feedback forms from users

Not available for Cocoa:

  • ❌ Metrics — use custom spans instead
  • ❌ Crons — backend only
  • ❌ AI Monitoring — JS/Python only

Recommendation logic:

FeatureRecommend when...
Error MonitoringAlways — non-negotiable baseline
TracingAlways for apps — rich auto-instrumentation out of the box
ProfilingProduction apps where performance matters
Session ReplayiOS only user-facing apps (check iOS 26+ caveat; not tvOS/macOS/watchOS/visionOS)
LoggingExisting os.log / CocoaLumberjack usage, or structured logs needed
User FeedbackApps wanting in-app bug reports with screenshots

Propose: "I recommend Error Monitoring + Tracing + Profiling. Want me to also add Session Replay and Logging?"

---

Phase 3: Guide

Install

Option 1 — Sentry Wizard (recommended): Walks you through login, org/project selection, and auth token setup interactively. Then installs the SDK, updates AppDelegate, adds dSYM/debug symbol upload build phases, and configures everything automatically.

brew install getsentry/tools/sentry-wizard && sentry-wizard -i ios

Option 2 — Swift Package Manager: File → Add Packages → enter:

https://github.com/getsentry/sentry-cocoa.git

Or in Package.swift:

.package(url: "https://github.com/getsentry/sentry-cocoa", from: "9.5.1"),

SPM Products — choose exactly one per target:

ProductUse Case
SentryRecommended — static framework, fast app start
Sentry-DynamicDynamic framework alternative
SentrySwiftUISwiftUI view performance tracking (SentryTracedView)
Sentry-WithoutUIKitOrAppKitwatchOS, app extensions, CLI tools
⚠️ Xcode allows selecting multiple products — choose only one.

Option 3 — CocoaPods:

platform :ios, '11.0'
use_frameworks!

target 'YourApp' do
  pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '9.5.1'
end
Known issue (Xcode 14+): Sandbox rsync.samba error → Target Settings → "Enable User Script Sandbox" → NO.

---

Quick Start — Recommended Init

Full config enabling the most features with sensible defaults. Add before any other code at app startup.

SwiftUI — App entry point:

import SwiftUI
import Sentry

@main
struct MyApp: App {
    init() {
        SentrySDK.start { options in
            options.dsn = ProcessInfo.processInfo.environment["SENTRY_DSN"]
                ?? "https://examplePublicKey@o0.ingest.sentry.io/0"
            options.environment = ProcessInfo.processInfo.environment["SENTRY_ENVIRONMENT"]
            options.releaseName = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String

            // Error monitoring (on by default — explicit for clarity)
            options.enableCrashHandler = true
            options.enableAppHangTrackingV2 = true
            options.enableWatchdogTerminationTracking = true
            options.attachScreenshot = true
            options.attachViewHierarchy = true
            options.sendDefaultPii = true

            // Tracing
            options.tracesSampleRate = 1.0          // lower to 0.2 in high-traffic production

            // Profiling (SDK 9.0.0+ API)
            options.configureProfiling = {
                $0.sessionSampleRate = 1.0
                $0.lifecycle = .trace
            }

            // Session Replay (disabled on iOS 26+ by default — safe to configure)
            options.sessionReplay.sessionSampleRate = 1.0
            options.sessionReplay.onErrorSampleRate = 1.0

            // Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)
            options.enableLogs = true
        }
    }

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

UIKit — AppDelegate:

import UIKit
import Sentry

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        SentrySDK.start { options in
            options.dsn = ProcessInfo.processInfo.environment["SENTRY_DSN"]
                ?? "https://examplePublicKey@o0.ingest.sentry.io/0"
            options.environment = ProcessInfo.processInfo.environment["SENTRY_ENVIRONMENT"]
            options.releaseName = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String

            options.enableCrashHandler = true
            options.enableAppHangTrackingV2 = true
            options.enableWatchdogTerminationTracking = true
            options.attachScreenshot = true
            options.attachViewHierarchy = true
            options.sendDefaultPii = true

            options.tracesSampleRate = 1.0

            options.configureProfiling = {
                $0.sessionSampleRate = 1.0
                $0.lifecycle = .trace
            }

            options.sessionReplay.sessionSampleRate = 1.0
            options.sessionReplay.onErrorSampleRate = 1.0

            // Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)
            options.enableLogs = true
        }
        return true
    }
}
⚠️ SDK initialization must occur on the main thread.

---

For Each Agreed Feature

Walk through features one at a time. Load the reference file for each, follow its steps, and verify before moving to the next:

FeatureReference fileLoad when...
Error Monitoring${SKILL_ROOT}/references/error-monitoring.mdAlways (baseline)
Tracing${SKILL_ROOT}/references/tracing.mdApp launch, network, UIViewController perf
Profiling${SKILL_ROOT}/references/profiling.mdProduction perf-sensitive apps
Session Replay${SKILL_ROOT}/references/session-replay.mdUser-facing iOS/tvOS apps
Logging${SKILL_ROOT}/references/logging.mdStructured log capture needed
User Feedback${SKILL_ROOT}/references/user-feedback.mdIn-app bug reporting wanted

For each feature: Read ${SKILL_ROOT}/references/<feature>.md, follow steps exactly, verify it works.

---

Configuration Reference

Key SentryOptions Fields

OptionTypeDefaultPurpose
dsnString""SDK disabled if empty; reads SENTRY_DSN env var
environmentString""e.g., "production"; reads SENTRY_ENVIRONMENT
releaseNameString""e.g., "my-app@1.0.0"; reads SENTRY_RELEASE
debugBoolfalseVerbose SDK output — disable in production
sendDefaultPiiBoolfalseInclude IP, user info from active integrations
enableCrashHandlerBooltrueMaster switch for crash reporting
enableAppHangTrackingV2Booltrue (9.0+)Differentiates fully/non-fully blocked hangs
appHangTimeoutIntervalDouble2.0Seconds before classifying as hang
enableWatchdogTerminationTrackingBooltrueTrack watchdog kills (iOS, tvOS, Mac Catalyst)
attachScreenshotBoolfalseCapture screenshot on error
attachViewHierarchyBoolfalseCapture view hierarchy on error
tracesSampleRateNSNumber?nilTransaction sample rate (nil = tracing disabled); Swift auto-boxes Double literals (e.g. 1.0NSNumber)
tracesSamplerClosurenilDynamic per-transaction sampling (overrides rate)
enableAutoPerformanceTracingBooltrueMaster switch for auto-instrumentation
tracePropagationTargets[String][".*"]Hosts/regex that receive distributed trace headers
enableCaptureFailedRequestsBooltrueAuto-capture HTTP 5xx errors as events
enableNetworkBreadcrumbsBooltrueBreadcrumbs for outgoing HTTP requests
inAppInclude[String][]Module prefixes treated as "in-app" code
maxBreadcrumbsInt100Max breadcrumbs per event
sampleRateFloat1.0Error event sample rate
beforeSendClosurenilHook to mutate/drop error events
onCrashedLastRunClosurenilCalled on next launch after a crash

Environment Variables

VariableMaps toPurpose
SENTRY_DSNdsnData Source Name
SENTRY_RELEASEreleaseNameApp version (e.g., my-app@1.0.0)
SENTRY_ENVIRONMENTenvironmentDeployment environment

Platform Feature Support Matrix

FeatureiOStvOSmacOSwatchOSvisionOS
Crash Reporting
App Hangs V2
Watchdog Termination
App Start Tracing
UIViewController Tracing
SwiftUI Tracing
Network Tracking
Profiling
Session Replay
MetricKit✅ (15+)✅ (12+)

---

Verification

Test that Sentry is receiving events:

// Trigger a test error event:
SentrySDK.capture(message: "Sentry Cocoa SDK test")

// Or test crash reporting (without debugger — crashes are intercepted by debugger):
// SentrySDK.crash()  // uncomment, run without debugger, relaunch to see crash report

Check the Sentry dashboard within a few seconds. If nothing appears: 1. Set options.debug = true — prints SDK internals to Xcode console 2. Verify the DSN is correct and the project exists 3. Ensure initialization is on the main thread

---

Production Settings

Lower sample rates for production to control volume and cost:

options.tracesSampleRate = 0.2          // 20% of transactions

options.configureProfiling = {
    $0.sessionSampleRate = 0.1          // 10% of sessions
    $0.lifecycle = .trace
}

options.sessionReplay.sessionSampleRate = 0.1   // 10% continuous
options.sessionReplay.onErrorSampleRate = 1.0   // 100% on error (keep high)

options.debug = false                   // never in production

---

Phase 4: Cross-Link

After completing Apple setup, check for a companion backend missing Sentry coverage:

# Detect companion backend
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod 2>/dev/null | head -5
cat ../requirements.txt ../Pipfile 2>/dev/null | head -5
cat ../Gemfile 2>/dev/null | head -5
cat ../package.json 2>/dev/null | grep -E '"name"|"dependencies"' | head -5

If a backend is found, configure tracePropagationTargets to enable distributed tracing end-to-end, and suggest the matching skill:

Backend detectedSuggest skillTrace header support
Go (go.mod)sentry-go-sdk✅ automatic
Python (requirements.txt)sentry-python-sdk✅ automatic
Ruby (Gemfile)sentry-ruby-sdk✅ automatic
Node.js backend (package.json)sentry-node-sdk (or sentry-express-sdk)✅ automatic

---

Troubleshooting

IssueSolution
Events not appearingSet debug: true, verify DSN format, ensure init is on main thread
Crashes not capturedRun without debugger attached — debugger intercepts signals
App hangs not reportedAuto-disabled when debugger attached; check appHangTimeoutInterval
Session Replay not recordingCheck iOS version — disabled by default on iOS 26+ (Liquid Glass); verify sessionSampleRate > 0
Tracing data missingConfirm tracesSampleRate > 0; check enableAutoPerformanceTracing = true
Profiling data missingVerify sessionSampleRate > 0 in configureProfiling; for .trace lifecycle, tracing must be enabled
rsync.samba build error (CocoaPods)Target Settings → "Enable User Script Sandbox" → NO
Multiple SPM products selectedChoose only one of Sentry, Sentry-Dynamic, SentrySwiftUI, Sentry-WithoutUIKitOrAppKit
inAppExclude compile errorRemoved in SDK 9.0.0 — use inAppInclude only
Watchdog termination not trackedRequires enableCrashHandler = true (it is by default)
Network breadcrumbs missingRequires enableSwizzling = true (it is by default)
profilesSampleRate compile errorRemoved in SDK 9.0.0 — use configureProfiling closure instead

Related skills

FAQ

What does sentry-cocoa-sdk recommend by default?

Error Monitoring, Tracing, and Profiling, with Session Replay and Logging offered when platform support allows.

When should I use sentry-cocoa-sdk?

When setting up sentry-cocoa in a SwiftUI or UIKit Apple app for crashes and performance monitoring.

Is sentry-cocoa-sdk safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.