[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sentry-sentry-cocoa-sdk":3,"mdc-knf425-key":39,"related-org-sentry-sentry-cocoa-sdk":5448,"related-repo-sentry-sentry-cocoa-sdk":5624},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":34,"sourceUrl":37,"mdContent":38},"sentry-cocoa-sdk","integrate Sentry SDK into Apple applications","Full Sentry SDK setup for Apple platforms (iOS, macOS, tvOS, watchOS, visionOS). Use when asked to \"add Sentry to iOS\", \"add Sentry to Swift\", \"install sentry-cocoa\", or configure error monitoring, tracing, profiling, session replay, logging, or metrics for Apple applications. Supports SwiftUI and UIKit.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"sentry","Sentry","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsentry.png","getsentry",[13,17,20,23,26],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"Monitoring","monitoring",{"name":21,"slug":22,"type":16},"iOS","ios",{"name":24,"slug":25,"type":16},"macOS","macos",{"name":9,"slug":8,"type":16},237,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-for-ai","2026-07-11T05:52:57.042493","Apache-2.0",30,[33],"tag-production",{"repoUrl":28,"stars":27,"forks":31,"topics":35,"description":36},[33],"Teach your AI coding assistant how to use Sentry - setup, debugging, alerts, and more","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-for-ai\u002Ftree\u002FHEAD\u002Fskills-legacy\u002Fsentry-cocoa-sdk","---\nname: sentry-cocoa-sdk\ndescription: Full Sentry SDK setup for Apple platforms (iOS, macOS, tvOS, watchOS, visionOS). Use when asked to \"add Sentry to iOS\", \"add Sentry to Swift\", \"install sentry-cocoa\", or configure error monitoring, tracing, profiling, session replay, logging, or metrics for Apple applications. Supports SwiftUI and UIKit.\nlicense: Apache-2.0\ncategory: sdk-setup\nparent: sentry-sdk-setup\ndisable-model-invocation: true\n---\n\n> [All Skills](..\u002F..\u002FSKILL_TREE.md) > [SDK Setup](..\u002Fsentry-sdk-setup\u002FSKILL.md) > Cocoa SDK\n\n# Sentry Cocoa SDK\n\nOpinionated wizard that scans your Apple project and guides you through complete Sentry setup.\n\n## Invoke This Skill When\n\n- User asks to \"add Sentry to iOS\u002FmacOS\u002FtvOS\" or \"set up Sentry\" in an Apple app\n- User wants error monitoring, tracing, profiling, session replay, or logging in Swift\u002FObjC, or metrics in Swift\n- User mentions `sentry-cocoa`, `SentrySDK`, or the Apple\u002FiOS Sentry SDK\n- User wants to monitor crashes, app hangs, watchdog terminations, or performance\n\n> **Note:** SDK versions and APIs below reflect Sentry docs at time of writing (sentry-cocoa 9.15.0).\n> Always verify against [docs.sentry.io\u002Fplatforms\u002Fapple\u002F](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fapple\u002F) before implementing.\n\n---\n\n## Phase 1: Detect\n\nRun these commands to understand the project before making any recommendations:\n\n```bash\n# Check existing Sentry dependency\ngrep -rEi \"sentry|sentry-cocoa|SentrySPM|SentrySwiftUI\" \\\n  --include=\"Package.swift\" --include=\"Podfile\" --include=\"Cartfile\" \\\n  --include=\"Package.resolved\" --include=\"project.pbxproj\" . 2>\u002Fdev\u002Fnull | head -20\n\n# Detect UI framework (SwiftUI vs UIKit)\ngrep -rE \"@main|struct .*: App\" --include=\"*.swift\" . 2>\u002Fdev\u002Fnull | head -5\ngrep -rE \"AppDelegate|UIApplicationMain|@UIApplicationDelegateAdaptor\" --include=\"*.swift\" . 2>\u002Fdev\u002Fnull | head -5\n\n# Detect platform and deployment targets\ngrep -rE \"platforms:|\\\\.iOS|\\\\.macOS|\\\\.tvOS|\\\\.watchOS|\\\\.visionOS|IPHONEOS_DEPLOYMENT_TARGET|MACOSX_DEPLOYMENT_TARGET|TVOS_DEPLOYMENT_TARGET|WATCHOS_DEPLOYMENT_TARGET|XROS_DEPLOYMENT_TARGET\" \\\n  --include=\"Package.swift\" --include=\"project.pbxproj\" . 2>\u002Fdev\u002Fnull | head -20\ngrep -E \"platform :ios|platform :osx|platform :tvos|platform :watchos\" Podfile 2>\u002Fdev\u002Fnull\n\n# Detect logging\ngrep -rE \"import OSLog|import os\\\\.log|Logger\\\\(|CocoaLumberjack|DDLog\" --include=\"*.swift\" . 2>\u002Fdev\u002Fnull | head -5\n\n# Detect companion backend\nls ..\u002Fbackend ..\u002Fserver ..\u002Fapi 2>\u002Fdev\u002Fnull\nls ..\u002Fgo.mod ..\u002Frequirements.txt ..\u002FGemfile ..\u002Fpackage.json 2>\u002Fdev\u002Fnull\n```\n\n**What to note:**\n- Is `sentry-cocoa` already in `Package.swift` or `Podfile`? If yes, skip to Phase 2 (configure features).\n- SwiftUI (`@main App` struct) or UIKit (`AppDelegate`)? Determines init pattern.\n- Which Apple platforms? (Affects which features are available — see Platform Support Matrix.)\n- Existing logging library? (Enables structured log capture.)\n- SwiftUI tracing import\u002Fproduct? `SentrySwiftUI` still exists but is deprecated in SDK 9.4.1+; prefer the main `Sentry` module for released binary products.\n- Companion backend? (Triggers Phase 4 cross-link for distributed tracing.)\n\n---\n\n## Phase 2: Recommend\n\nBased on what you found, present a concrete recommendation. Don't ask open-ended questions — lead with a proposal:\n\n**Recommended (core coverage):**\n- **Error Monitoring** — always; crash reporting, app hangs, watchdog terminations, NSError\u002FSwift errors\n- **Tracing** — always for apps; auto-instruments app launch, network, UIViewController, file I\u002FO, Core Data\n- **Profiling** — production iOS\u002FmacOS apps; UI profiling via `configureProfiling`\n\n**Optional (enhanced observability):**\n- **Session Replay** — user-facing iOS apps; verify masking on iOS 26+ \u002F Liquid Glass builds\n- **Logging** — when structured log capture is needed\n- **Metrics** — Swift apps needing aggregate counters, gauges, or distributions\n- **User Feedback** — apps that want crash\u002Ferror feedback forms from users\n\n**Not available for Cocoa:**\n- Crons — backend only\n- AI Monitoring — JS\u002FPython only\n\n**Recommendation logic:**\n\n| Feature | Recommend when... |\n|---------|------------------|\n| Error Monitoring | **Always** — non-negotiable baseline |\n| Tracing | **Always for apps** — rich auto-instrumentation out of the box |\n| Profiling | iOS\u002FmacOS production apps where performance matters (not tvOS\u002FwatchOS\u002FvisionOS) |\n| Session Replay | User-facing iOS apps; tvOS may work but is not officially supported |\n| Logging | Existing `os.log` \u002F CocoaLumberjack usage, or structured logs needed |\n| Metrics | Aggregate product or health signals that should not create issues; Swift only, SDK 9.12+ |\n| User Feedback | Apps wanting in-app bug reports with screenshots |\n\nPropose: *\"I recommend Error Monitoring + Tracing + Profiling. Want me to also add Session Replay and Logging?\"*\n\n---\n\n## Phase 3: Guide\n\n### Install\n\n**Option 1 — Sentry Wizard (recommended):**\n\n> **You need to run this yourself** — the wizard opens a browser for login and requires interactive input that the agent can't handle. Copy-paste into your terminal:\n>\n> ```\n> brew install getsentry\u002Ftools\u002Fsentry-wizard && sentry-wizard -i ios\n> ```\n>\n> It handles login, org\u002Fproject selection, auth token setup, SDK installation, AppDelegate updates, and dSYM\u002Fdebug symbol upload build phases.\n>\n> **Once it finishes, come back and skip to [Verification](#verification).**\n\nIf the user skips the wizard, proceed with Option 2 (SPM\u002FCocoaPods) and manual setup below.\n\n**Option 2 — Swift Package Manager:** File → Add Packages → enter:\n```\nhttps:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa.git\n```\n\nOr in `Package.swift`:\n```swift\n.package(url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\", from: \"9.15.0\"),\n```\n\n**SPM Products** — choose **exactly one** per target:\n\n| Product | Use Case |\n|---------|----------|\n| `Sentry` | **Recommended** — static framework, fast app start; includes SwiftUI APIs in SDK 9.4.1+ |\n| `Sentry-Dynamic` | Dynamic framework alternative |\n| `SentrySwiftUI` | Legacy\u002Fdeprecated re-export for SwiftUI APIs; use only when maintaining older setup |\n| `Sentry-WithoutUIKitOrAppKit` | watchOS, app extensions, CLI tools (Swift \u003C 6.1) |\n| `SentrySPM` + `NoUIFramework` trait | Source build without UIKit\u002FAppKit for CLI\u002Fheadless targets (**SDK 9.7+ \u002F Swift 6.1+ \u002F Xcode 26.4+** for Xcode UI) |\n\n> Warning: Xcode allows selecting multiple products — choose only one.\n>\n> If using `SentrySPM` from source, current source-build projects may import `SentrySwift` instead of `Sentry`; verify the module name in the target. Released binary products use `import Sentry`.\n\n**Swift 6.1+ trait-based opt-out of UIKit\u002FAppKit** (requires `Package@swift-6.1.swift` manifest):\n\n```swift\n\u002F\u002F Package.swift (Swift 6.1+)\n.package(\n    url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\",\n    from: \"9.15.0\",\n    traits: [\"NoUIFramework\"]\n),\n\n\u002F\u002F In your target's dependencies:\n.product(name: \"SentrySPM\", package: \"sentry-cocoa\")\n```\n\nThis is the preferred opt-out path for command-line\u002Fheadless targets on Swift 6.1+. It compiles the SDK from source so the trait can remove UIKit\u002FAppKit\u002FSwiftUI linkage. For Swift \u003C 6.1 continue using `Sentry-WithoutUIKitOrAppKit`.\n\n> **Note:** Package traits are visible in the Xcode UI starting with **Xcode 26.4+**. On older Xcode versions, traits still work when declared in `Package.swift` but won't appear in the GUI.\n\n**Option 3 — CocoaPods (deprecated; prefer SPM):**\n```ruby\nplatform :ios, '15.0'\nuse_frameworks!\n\ntarget 'YourApp' do\n  pod 'Sentry', :git => 'https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa.git', :tag => '9.15.0'\nend\n```\n\nSentry plans to stop publishing CocoaPods releases at the end of June 2026; use this only for existing CocoaPods projects.\n\n> **Known issue (Xcode 14+):** Sandbox `rsync.samba` error → Target Settings → \"Enable User Script Sandbox\" → `NO`.\n\n**Option 4 — SentryObjC (for pure Objective-C\u002FC++ projects):**\n\nFor pure Objective-C or Objective-C++ projects that **cannot enable Clang modules** (e.g., `-fmodules=NO`), use the SentryObjC wrapper SDK. It provides the same functionality as the main SDK but with pure Objective-C headers that don't require Swift module imports.\n\n**SPM:**\n```swift\n.package(url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\", from: \"9.17.1\"),\n\n\u002F\u002F In your target's dependencies:\n.product(name: \"SentryObjC\", package: \"sentry-cocoa\")\n```\n\nOr download `SentryObjC-Dynamic.xcframework.zip` from the [releases page](https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\u002Freleases).\n\n**Migration from regular Sentry to SentryObjC:**\n- Change `#import \u003CSentry\u002FSentry.h>` to `#import \u003CSentryObjC\u002FSentryObjC.h>`\n- Rename `Sentry`-prefixed types to `SentryObjC` (e.g., `SentrySDK` → `SentryObjCSDK`, `SentryOptions` → `SentryObjCOptions`)\n- The API surface is otherwise identical\n\nMost users should use the standard `Sentry` product (Option 2). Only use `SentryObjC` if you have a specific requirement preventing Clang modules.\n\n---\n\n### Quick Start — Recommended Init\n\nFull iOS app config enabling the most common features with sensible defaults. Add before any other code at app startup.\n\nFor macOS, watchOS, app extensions, or `NoUIFramework` builds, omit options that are unavailable for that platform (`sessionReplay`, screenshots\u002Fview hierarchy, user-feedback UI, UIKit tracing, and profiling on tvOS\u002FwatchOS\u002FvisionOS). Keep the core `dsn`, environment, error monitoring, tracing, logs, and metrics settings that compile for the detected target.\n\n**SwiftUI — App entry point:**\n```swift\nimport SwiftUI\nimport Sentry\n\n@main\nstruct MyApp: App {\n    init() {\n        SentrySDK.start { options in\n            options.dsn = ProcessInfo.processInfo.environment[\"SENTRY_DSN\"]\n                ?? \"https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\"\n            options.environment = ProcessInfo.processInfo.environment[\"SENTRY_ENVIRONMENT\"]\n                ?? \"production\"\n            \u002F\u002F releaseName defaults to \"\u003Cbundle id>@\u003Cversion>+\u003Cbuild>\"; set only if you need a custom release.\n\n            \u002F\u002F Error monitoring (on by default — explicit for clarity)\n            options.enableCrashHandler = true\n            options.enableAppHangTracking = true\n            options.enableReportNonFullyBlockingAppHangs = true\n            options.enableWatchdogTerminationTracking = true\n            options.attachScreenshot = true\n            options.attachViewHierarchy = true\n            options.sendDefaultPii = true\n\n            \u002F\u002F Tracing\n            options.tracesSampleRate = 1.0          \u002F\u002F lower to 0.2 in high-traffic production\n\n            \u002F\u002F Profiling (SDK 9.0.0+ API)\n            options.configureProfiling = {\n                $0.sessionSampleRate = 1.0\n                $0.lifecycle = .trace\n            }\n\n            \u002F\u002F Session Replay. Keep production sampling conservative and verify masking on iOS 26+.\n            options.sessionReplay.sessionSampleRate = 0.1\n            options.sessionReplay.onErrorSampleRate = 1.0\n\n            \u002F\u002F Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)\n            options.enableLogs = true\n\n            \u002F\u002F Metrics are enabled by default in SDK 9.12+. Set false only to opt out.\n            options.enableMetrics = true\n        }\n    }\n\n    var body: some Scene {\n        WindowGroup { ContentView() }\n    }\n}\n```\n\n**UIKit — AppDelegate:**\n```swift\nimport UIKit\nimport Sentry\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n    func application(\n        _ application: UIApplication,\n        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n    ) -> Bool {\n        SentrySDK.start { options in\n            options.dsn = ProcessInfo.processInfo.environment[\"SENTRY_DSN\"]\n                ?? \"https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\"\n            options.environment = ProcessInfo.processInfo.environment[\"SENTRY_ENVIRONMENT\"]\n                ?? \"production\"\n            \u002F\u002F releaseName defaults to \"\u003Cbundle id>@\u003Cversion>+\u003Cbuild>\"; set only if you need a custom release.\n\n            options.enableCrashHandler = true\n            options.enableAppHangTracking = true\n            options.enableReportNonFullyBlockingAppHangs = true\n            options.enableWatchdogTerminationTracking = true\n            options.attachScreenshot = true\n            options.attachViewHierarchy = true\n            options.sendDefaultPii = true\n\n            options.tracesSampleRate = 1.0\n\n            options.configureProfiling = {\n                $0.sessionSampleRate = 1.0\n                $0.lifecycle = .trace\n            }\n\n            options.sessionReplay.sessionSampleRate = 0.1\n            options.sessionReplay.onErrorSampleRate = 1.0\n\n            \u002F\u002F Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)\n            options.enableLogs = true\n\n            \u002F\u002F Metrics are enabled by default in SDK 9.12+. Set false only to opt out.\n            options.enableMetrics = true\n        }\n        return true\n    }\n}\n```\n\n> Warning: SDK initialization must occur on the **main thread**.\n\n---\n\n### For Each Agreed Feature\n\nWalk through features one at a time. Load the reference file for each, follow its steps, and verify before moving to the next:\n\n| Feature | Reference file | Load when... |\n|---------|---------------|-------------|\n| Error Monitoring | `${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md` | Always (baseline) |\n| Tracing | `${SKILL_ROOT}\u002Freferences\u002Ftracing.md` | App launch, network, UIViewController perf |\n| Profiling | `${SKILL_ROOT}\u002Freferences\u002Fprofiling.md` | Production perf-sensitive apps |\n| Session Replay | `${SKILL_ROOT}\u002Freferences\u002Fsession-replay.md` | User-facing iOS apps; tvOS only with caveat |\n| Logging | `${SKILL_ROOT}\u002Freferences\u002Flogging.md` | Structured log capture needed |\n| Metrics | `${SKILL_ROOT}\u002Freferences\u002Fmetrics.md` | Aggregate counters, gauges, distributions |\n| User Feedback | `${SKILL_ROOT}\u002Freferences\u002Fuser-feedback.md` | In-app bug reporting wanted |\n\nFor each feature: `Read ${SKILL_ROOT}\u002Freferences\u002F\u003Cfeature>.md`, follow steps exactly, verify it works.\n\n---\n\n## Configuration Reference\n\n### Key `SentryOptions` Fields\n\n| Option | Type | Default | Purpose |\n|--------|------|---------|---------|\n| `dsn` | `String?` | `nil` | SDK disabled if empty; macOS can read `SENTRY_DSN`, other Apple platforms must set explicitly |\n| `environment` | `String` | `\"production\"` | e.g., `\"production\"` |\n| `releaseName` | `String?` | bundle-derived | Defaults to `\u003Cbundle id>@\u003Cversion>+\u003Cbuild>` |\n| `debug` | `Bool` | `false` | Verbose SDK output — **disable in production** |\n| `sendDefaultPii` | `Bool` | `false` | Include IP, user info from active integrations |\n| `enableCrashHandler` | `Bool` | `true` | Master switch for crash reporting |\n| `enableAppHangTracking` | `Bool` | `true` | Master switch for app hang tracking |\n| `enableReportNonFullyBlockingAppHangs` | `Bool` | `true` | Report non-fully-blocking hangs on supported UI platforms |\n| `appHangTimeoutInterval` | `Double` | `2.0` | Seconds before classifying as hang |\n| `enableWatchdogTerminationTracking` | `Bool` | `true` | Track watchdog kills (iOS, tvOS, Mac Catalyst) |\n| `attachScreenshot` | `Bool` | `false` | Capture screenshot on error |\n| `attachViewHierarchy` | `Bool` | `false` | Capture view hierarchy on error |\n| `tracesSampleRate` | `NSNumber?` | `nil` | Transaction sample rate (`nil` = tracing disabled); Swift auto-boxes `Double` literals (e.g. `1.0` → `NSNumber`) |\n| `tracesSampler` | `Closure` | `nil` | Dynamic per-transaction sampling (overrides rate) |\n| `enableAutoPerformanceTracing` | `Bool` | `true` | Master switch for auto-instrumentation |\n| `tracePropagationTargets` | `[Any]` | all requests | Strings or `NSRegularExpression` values that receive distributed trace headers |\n| `enableCaptureFailedRequests` | `Bool` | `true` | Auto-capture HTTP 5xx errors as events |\n| `enableNetworkBreadcrumbs` | `Bool` | `true` | Breadcrumbs for outgoing HTTP requests |\n| `add(inAppInclude:)` | Method | bundle executable | Add module prefixes treated as \"in-app\" code |\n| `maxBreadcrumbs` | `Int` | `100` | Max breadcrumbs per event |\n| `sampleRate` | `Float` | `1.0` | Error event sample rate |\n| `beforeSend` | `Closure` | `nil` | Hook to mutate\u002Fdrop error events |\n| `onLastRunStatusDetermined` | `Closure` | `nil` | Called after SDK determines previous launch crash status |\n| `strictTraceContinuation` | `Bool` | `false` | Reject incoming traces from other orgs; validates `sentry-org_id` in baggage headers (sentry-cocoa ≥9.10.0) |\n| `orgId` | `String?` | `nil` | Organization ID for strict trace validation; auto-parsed from DSN host (e.g. `o123.ingest.sentry.io` → `\"123\"`) if not set explicitly |\n| `enableLogs` | `Bool` | `false` | Enable structured logs |\n| `enableMetrics` | `Bool` | `true` | Enable Swift Metrics API (SDK 9.12+) |\n\n### Environment Variables\n\n| Variable | Maps to | Purpose |\n|----------|---------|---------|\n| `SENTRY_DSN` | `dsn` | macOS fallback only; set explicitly on iOS\u002FtvOS\u002FwatchOS\u002FvisionOS |\n| `SENTRY_RELEASE` | `releaseName` | Do not assume automatic Cocoa fallback; set explicitly if needed |\n| `SENTRY_ENVIRONMENT` | `environment` | Do not assume automatic Cocoa fallback; set explicitly if needed |\n\n### Platform Feature Support Matrix\n\n| Feature | iOS | tvOS | macOS | watchOS | visionOS |\n|---------|-----|------|-------|---------|----------|\n| Crash Reporting | Yes | Yes | Yes | No | Yes |\n| App Hangs | Yes | Yes | Yes | No | Yes |\n| Watchdog Termination | Yes | Yes | No | No | Yes |\n| App Start Tracing | Yes | Yes | No | No | Yes |\n| UIViewController Tracing | Yes | Yes | No | No | Yes |\n| SwiftUI Tracing | Yes | Yes | Yes | No | Yes |\n| Network Tracking | Yes | Yes | Yes | No | Yes |\n| Profiling | Yes | No | Yes | No | No |\n| Session Replay | Yes | Unofficial | No | No | No |\n| MetricKit | Yes (15+) | No | Yes (12+) | No | No |\n| Metrics API | Yes | Yes | Yes | Verify | Yes |\n\n### Production Settings\n\nLower sample rates for production to control volume and cost:\n\n```swift\noptions.tracesSampleRate = 0.2          \u002F\u002F 20% of transactions\n\noptions.configureProfiling = {\n    $0.sessionSampleRate = 0.1          \u002F\u002F 10% of sessions\n    $0.lifecycle = .trace\n}\n\noptions.sessionReplay.sessionSampleRate = 0.1   \u002F\u002F 10% continuous\noptions.sessionReplay.onErrorSampleRate = 1.0   \u002F\u002F 100% on error (keep high)\n\noptions.enableLogs = true\noptions.enableMetrics = true             \u002F\u002F default true in SDK 9.12+\noptions.debug = false                   \u002F\u002F never in production\n```\n\n---\n\n## Verification\n\nTest that Sentry is receiving events:\n\n```swift\n\u002F\u002F Trigger a test error event:\nSentrySDK.capture(message: \"Sentry Cocoa SDK test\")\n\n\u002F\u002F Or test crash reporting (without debugger — crashes are intercepted by debugger):\n\u002F\u002F SentrySDK.crash()  \u002F\u002F uncomment, run without debugger, relaunch to see crash report\n```\n\nCheck the Sentry dashboard within a few seconds. If nothing appears:\n1. Set `options.debug = true` — prints SDK internals to Xcode console\n2. Verify the DSN is correct and the project exists\n3. Ensure initialization is on the **main thread**\n\n---\n\n## Phase 4: Cross-Link\n\nAfter completing Apple setup, check for a companion backend missing Sentry coverage:\n\n```bash\n# Detect companion backend\nls ..\u002Fbackend ..\u002Fserver ..\u002Fapi 2>\u002Fdev\u002Fnull\ncat ..\u002Fgo.mod 2>\u002Fdev\u002Fnull | head -5\ncat ..\u002Frequirements.txt ..\u002FPipfile 2>\u002Fdev\u002Fnull | head -5\ncat ..\u002FGemfile 2>\u002Fdev\u002Fnull | head -5\ncat ..\u002Fpackage.json 2>\u002Fdev\u002Fnull | grep -E '\"name\"|\"dependencies\"' | head -5\n```\n\nIf a backend is found, configure `tracePropagationTargets` to enable distributed tracing end-to-end, and suggest the matching skill:\n\n| Backend detected | Suggest skill | Trace header support |\n|-----------------|--------------|---------------------|\n| Go (`go.mod`) | `sentry-go-sdk` | Automatic |\n| Python (`requirements.txt`) | `sentry-python-sdk` | Automatic |\n| Ruby (`Gemfile`) | `sentry-ruby-sdk` | Automatic |\n| Node.js backend (`package.json`) | `sentry-node-sdk` (or `sentry-express-sdk`) | Automatic |\n\n---\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| Events not appearing | Set `debug: true`, verify DSN format, ensure init is on main thread |\n| Crashes not captured | **Run without debugger attached** — debugger intercepts signals |\n| App hangs not reported | Auto-disabled when debugger attached; check `appHangTimeoutInterval` |\n| Session Replay not recording | Verify `sessionSampleRate > 0` or `onErrorSampleRate > 0`; on iOS 26+ verify masking and any manual Liquid Glass gating |\n| Tracing data missing | Confirm `tracesSampleRate > 0`; check `enableAutoPerformanceTracing = true` |\n| Profiling data missing | Verify `sessionSampleRate > 0` in `configureProfiling`; for `.trace` lifecycle, tracing must be enabled |\n| `rsync.samba` build error (CocoaPods) | Target Settings → \"Enable User Script Sandbox\" → `NO` |\n| Multiple SPM products selected | Choose **only one** of `Sentry`, `Sentry-Dynamic`, `SentrySwiftUI`, `Sentry-WithoutUIKitOrAppKit`, or `SentrySPM` (with `NoUIFramework` trait on Swift 6.1+) |\n| `inAppExclude` compile error | Removed in SDK 9.0.0 — use `options.add(inAppInclude:)` |\n| `enableAppHangTrackingV2` compile error | Removed in SDK 9.0.0 — use `enableAppHangTracking`; V2 behavior is default where supported |\n| Watchdog termination not tracked | Requires `enableCrashHandler = true` (it is by default) |\n| Network breadcrumbs missing | Requires `enableSwizzling = true` (it is by default) |\n| `profilesSampleRate` compile error | Removed in SDK 9.0.0 — use `configureProfiling` closure instead |\n",{"data":40,"body":44},{"name":4,"description":6,"license":30,"category":41,"parent":42,"disable-model-invocation":43},"sdk-setup","sentry-sdk-setup",true,{"type":45,"children":46},"root",[47,74,80,85,92,134,158,162,168,173,891,899,984,987,993,998,1006,1045,1053,1096,1104,1117,1125,1255,1266,1269,1275,1282,1290,1334,1339,1349,1358,1370,1386,1403,1530,1572,1590,1668,1679,1705,1713,1769,1774,1802,1810,1830,1838,1875,1896,1904,1979,1998,2001,2007,2012,2040,2048,2448,2456,2773,2787,2790,2796,2801,2974,2987,2990,2996,3009,4017,4023,4122,4128,4479,4485,4490,4597,4600,4605,4610,4661,4666,4697,4700,4706,4711,4910,4922,5071,5074,5080,5442],{"type":48,"tag":49,"props":50,"children":51},"element","blockquote",{},[52],{"type":48,"tag":53,"props":54,"children":55},"p",{},[56,64,66,72],{"type":48,"tag":57,"props":58,"children":60},"a",{"href":59},"..\u002F..\u002FSKILL_TREE.md",[61],{"type":62,"value":63},"text","All Skills",{"type":62,"value":65}," > ",{"type":48,"tag":57,"props":67,"children":69},{"href":68},"..\u002Fsentry-sdk-setup\u002FSKILL.md",[70],{"type":62,"value":71},"SDK Setup",{"type":62,"value":73}," > Cocoa SDK",{"type":48,"tag":75,"props":76,"children":77},"h1",{"id":4},[78],{"type":62,"value":79},"Sentry Cocoa SDK",{"type":48,"tag":53,"props":81,"children":82},{},[83],{"type":62,"value":84},"Opinionated wizard that scans your Apple project and guides you through complete Sentry setup.",{"type":48,"tag":86,"props":87,"children":89},"h2",{"id":88},"invoke-this-skill-when",[90],{"type":62,"value":91},"Invoke This Skill When",{"type":48,"tag":93,"props":94,"children":95},"ul",{},[96,102,107,129],{"type":48,"tag":97,"props":98,"children":99},"li",{},[100],{"type":62,"value":101},"User asks to \"add Sentry to iOS\u002FmacOS\u002FtvOS\" or \"set up Sentry\" in an Apple app",{"type":48,"tag":97,"props":103,"children":104},{},[105],{"type":62,"value":106},"User wants error monitoring, tracing, profiling, session replay, or logging in Swift\u002FObjC, or metrics in Swift",{"type":48,"tag":97,"props":108,"children":109},{},[110,112,119,121,127],{"type":62,"value":111},"User mentions ",{"type":48,"tag":113,"props":114,"children":116},"code",{"className":115},[],[117],{"type":62,"value":118},"sentry-cocoa",{"type":62,"value":120},", ",{"type":48,"tag":113,"props":122,"children":124},{"className":123},[],[125],{"type":62,"value":126},"SentrySDK",{"type":62,"value":128},", or the Apple\u002FiOS Sentry SDK",{"type":48,"tag":97,"props":130,"children":131},{},[132],{"type":62,"value":133},"User wants to monitor crashes, app hangs, watchdog terminations, or performance",{"type":48,"tag":49,"props":135,"children":136},{},[137],{"type":48,"tag":53,"props":138,"children":139},{},[140,146,148,156],{"type":48,"tag":141,"props":142,"children":143},"strong",{},[144],{"type":62,"value":145},"Note:",{"type":62,"value":147}," SDK versions and APIs below reflect Sentry docs at time of writing (sentry-cocoa 9.15.0).\nAlways verify against ",{"type":48,"tag":57,"props":149,"children":153},{"href":150,"rel":151},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fapple\u002F",[152],"nofollow",[154],{"type":62,"value":155},"docs.sentry.io\u002Fplatforms\u002Fapple\u002F",{"type":62,"value":157}," before implementing.",{"type":48,"tag":159,"props":160,"children":161},"hr",{},[],{"type":48,"tag":86,"props":163,"children":165},{"id":164},"phase-1-detect",[166],{"type":62,"value":167},"Phase 1: Detect",{"type":48,"tag":53,"props":169,"children":170},{},[171],{"type":62,"value":172},"Run these commands to understand the project before making any recommendations:",{"type":48,"tag":174,"props":175,"children":180},"pre",{"className":176,"code":177,"language":178,"meta":179,"style":179},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Check existing Sentry dependency\ngrep -rEi \"sentry|sentry-cocoa|SentrySPM|SentrySwiftUI\" \\\n  --include=\"Package.swift\" --include=\"Podfile\" --include=\"Cartfile\" \\\n  --include=\"Package.resolved\" --include=\"project.pbxproj\" . 2>\u002Fdev\u002Fnull | head -20\n\n# Detect UI framework (SwiftUI vs UIKit)\ngrep -rE \"@main|struct .*: App\" --include=\"*.swift\" . 2>\u002Fdev\u002Fnull | head -5\ngrep -rE \"AppDelegate|UIApplicationMain|@UIApplicationDelegateAdaptor\" --include=\"*.swift\" . 2>\u002Fdev\u002Fnull | head -5\n\n# Detect platform and deployment targets\ngrep -rE \"platforms:|\\\\.iOS|\\\\.macOS|\\\\.tvOS|\\\\.watchOS|\\\\.visionOS|IPHONEOS_DEPLOYMENT_TARGET|MACOSX_DEPLOYMENT_TARGET|TVOS_DEPLOYMENT_TARGET|WATCHOS_DEPLOYMENT_TARGET|XROS_DEPLOYMENT_TARGET\" \\\n  --include=\"Package.swift\" --include=\"project.pbxproj\" . 2>\u002Fdev\u002Fnull | head -20\ngrep -E \"platform :ios|platform :osx|platform :tvos|platform :watchos\" Podfile 2>\u002Fdev\u002Fnull\n\n# Detect logging\ngrep -rE \"import OSLog|import os\\\\.log|Logger\\\\(|CocoaLumberjack|DDLog\" --include=\"*.swift\" . 2>\u002Fdev\u002Fnull | head -5\n\n# Detect companion backend\nls ..\u002Fbackend ..\u002Fserver ..\u002Fapi 2>\u002Fdev\u002Fnull\nls ..\u002Fgo.mod ..\u002Frequirements.txt ..\u002FGemfile ..\u002Fpackage.json 2>\u002Fdev\u002Fnull\n","bash","",[181],{"type":48,"tag":113,"props":182,"children":183},{"__ignoreMap":179},[184,196,234,295,363,372,381,449,514,522,531,606,666,706,714,723,806,814,823,855],{"type":48,"tag":185,"props":186,"children":189},"span",{"class":187,"line":188},"line",1,[190],{"type":48,"tag":185,"props":191,"children":193},{"style":192},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[194],{"type":62,"value":195},"# Check existing Sentry dependency\n",{"type":48,"tag":185,"props":197,"children":199},{"class":187,"line":198},2,[200,206,212,218,223,228],{"type":48,"tag":185,"props":201,"children":203},{"style":202},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[204],{"type":62,"value":205},"grep",{"type":48,"tag":185,"props":207,"children":209},{"style":208},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[210],{"type":62,"value":211}," -rEi",{"type":48,"tag":185,"props":213,"children":215},{"style":214},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[216],{"type":62,"value":217}," \"",{"type":48,"tag":185,"props":219,"children":220},{"style":208},[221],{"type":62,"value":222},"sentry|sentry-cocoa|SentrySPM|SentrySwiftUI",{"type":48,"tag":185,"props":224,"children":225},{"style":214},[226],{"type":62,"value":227},"\"",{"type":48,"tag":185,"props":229,"children":231},{"style":230},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[232],{"type":62,"value":233}," \\\n",{"type":48,"tag":185,"props":235,"children":237},{"class":187,"line":236},3,[238,243,247,252,256,261,265,270,274,278,282,287,291],{"type":48,"tag":185,"props":239,"children":240},{"style":208},[241],{"type":62,"value":242},"  --include=",{"type":48,"tag":185,"props":244,"children":245},{"style":214},[246],{"type":62,"value":227},{"type":48,"tag":185,"props":248,"children":249},{"style":208},[250],{"type":62,"value":251},"Package.swift",{"type":48,"tag":185,"props":253,"children":254},{"style":214},[255],{"type":62,"value":227},{"type":48,"tag":185,"props":257,"children":258},{"style":208},[259],{"type":62,"value":260}," --include=",{"type":48,"tag":185,"props":262,"children":263},{"style":214},[264],{"type":62,"value":227},{"type":48,"tag":185,"props":266,"children":267},{"style":208},[268],{"type":62,"value":269},"Podfile",{"type":48,"tag":185,"props":271,"children":272},{"style":214},[273],{"type":62,"value":227},{"type":48,"tag":185,"props":275,"children":276},{"style":208},[277],{"type":62,"value":260},{"type":48,"tag":185,"props":279,"children":280},{"style":214},[281],{"type":62,"value":227},{"type":48,"tag":185,"props":283,"children":284},{"style":208},[285],{"type":62,"value":286},"Cartfile",{"type":48,"tag":185,"props":288,"children":289},{"style":214},[290],{"type":62,"value":227},{"type":48,"tag":185,"props":292,"children":293},{"style":230},[294],{"type":62,"value":233},{"type":48,"tag":185,"props":296,"children":298},{"class":187,"line":297},4,[299,303,307,312,316,320,324,329,333,338,343,348,353,358],{"type":48,"tag":185,"props":300,"children":301},{"style":208},[302],{"type":62,"value":242},{"type":48,"tag":185,"props":304,"children":305},{"style":214},[306],{"type":62,"value":227},{"type":48,"tag":185,"props":308,"children":309},{"style":208},[310],{"type":62,"value":311},"Package.resolved",{"type":48,"tag":185,"props":313,"children":314},{"style":214},[315],{"type":62,"value":227},{"type":48,"tag":185,"props":317,"children":318},{"style":208},[319],{"type":62,"value":260},{"type":48,"tag":185,"props":321,"children":322},{"style":214},[323],{"type":62,"value":227},{"type":48,"tag":185,"props":325,"children":326},{"style":208},[327],{"type":62,"value":328},"project.pbxproj",{"type":48,"tag":185,"props":330,"children":331},{"style":214},[332],{"type":62,"value":227},{"type":48,"tag":185,"props":334,"children":335},{"style":208},[336],{"type":62,"value":337}," .",{"type":48,"tag":185,"props":339,"children":340},{"style":214},[341],{"type":62,"value":342}," 2>",{"type":48,"tag":185,"props":344,"children":345},{"style":208},[346],{"type":62,"value":347},"\u002Fdev\u002Fnull",{"type":48,"tag":185,"props":349,"children":350},{"style":214},[351],{"type":62,"value":352}," |",{"type":48,"tag":185,"props":354,"children":355},{"style":202},[356],{"type":62,"value":357}," head",{"type":48,"tag":185,"props":359,"children":360},{"style":208},[361],{"type":62,"value":362}," -20\n",{"type":48,"tag":185,"props":364,"children":366},{"class":187,"line":365},5,[367],{"type":48,"tag":185,"props":368,"children":369},{"emptyLinePlaceholder":43},[370],{"type":62,"value":371},"\n",{"type":48,"tag":185,"props":373,"children":375},{"class":187,"line":374},6,[376],{"type":48,"tag":185,"props":377,"children":378},{"style":192},[379],{"type":62,"value":380},"# Detect UI framework (SwiftUI vs UIKit)\n",{"type":48,"tag":185,"props":382,"children":384},{"class":187,"line":383},7,[385,389,394,398,403,407,411,415,420,424,428,432,436,440,444],{"type":48,"tag":185,"props":386,"children":387},{"style":202},[388],{"type":62,"value":205},{"type":48,"tag":185,"props":390,"children":391},{"style":208},[392],{"type":62,"value":393}," -rE",{"type":48,"tag":185,"props":395,"children":396},{"style":214},[397],{"type":62,"value":217},{"type":48,"tag":185,"props":399,"children":400},{"style":208},[401],{"type":62,"value":402},"@main|struct .*: App",{"type":48,"tag":185,"props":404,"children":405},{"style":214},[406],{"type":62,"value":227},{"type":48,"tag":185,"props":408,"children":409},{"style":208},[410],{"type":62,"value":260},{"type":48,"tag":185,"props":412,"children":413},{"style":214},[414],{"type":62,"value":227},{"type":48,"tag":185,"props":416,"children":417},{"style":208},[418],{"type":62,"value":419},"*.swift",{"type":48,"tag":185,"props":421,"children":422},{"style":214},[423],{"type":62,"value":227},{"type":48,"tag":185,"props":425,"children":426},{"style":208},[427],{"type":62,"value":337},{"type":48,"tag":185,"props":429,"children":430},{"style":214},[431],{"type":62,"value":342},{"type":48,"tag":185,"props":433,"children":434},{"style":208},[435],{"type":62,"value":347},{"type":48,"tag":185,"props":437,"children":438},{"style":214},[439],{"type":62,"value":352},{"type":48,"tag":185,"props":441,"children":442},{"style":202},[443],{"type":62,"value":357},{"type":48,"tag":185,"props":445,"children":446},{"style":208},[447],{"type":62,"value":448}," -5\n",{"type":48,"tag":185,"props":450,"children":452},{"class":187,"line":451},8,[453,457,461,465,470,474,478,482,486,490,494,498,502,506,510],{"type":48,"tag":185,"props":454,"children":455},{"style":202},[456],{"type":62,"value":205},{"type":48,"tag":185,"props":458,"children":459},{"style":208},[460],{"type":62,"value":393},{"type":48,"tag":185,"props":462,"children":463},{"style":214},[464],{"type":62,"value":217},{"type":48,"tag":185,"props":466,"children":467},{"style":208},[468],{"type":62,"value":469},"AppDelegate|UIApplicationMain|@UIApplicationDelegateAdaptor",{"type":48,"tag":185,"props":471,"children":472},{"style":214},[473],{"type":62,"value":227},{"type":48,"tag":185,"props":475,"children":476},{"style":208},[477],{"type":62,"value":260},{"type":48,"tag":185,"props":479,"children":480},{"style":214},[481],{"type":62,"value":227},{"type":48,"tag":185,"props":483,"children":484},{"style":208},[485],{"type":62,"value":419},{"type":48,"tag":185,"props":487,"children":488},{"style":214},[489],{"type":62,"value":227},{"type":48,"tag":185,"props":491,"children":492},{"style":208},[493],{"type":62,"value":337},{"type":48,"tag":185,"props":495,"children":496},{"style":214},[497],{"type":62,"value":342},{"type":48,"tag":185,"props":499,"children":500},{"style":208},[501],{"type":62,"value":347},{"type":48,"tag":185,"props":503,"children":504},{"style":214},[505],{"type":62,"value":352},{"type":48,"tag":185,"props":507,"children":508},{"style":202},[509],{"type":62,"value":357},{"type":48,"tag":185,"props":511,"children":512},{"style":208},[513],{"type":62,"value":448},{"type":48,"tag":185,"props":515,"children":517},{"class":187,"line":516},9,[518],{"type":48,"tag":185,"props":519,"children":520},{"emptyLinePlaceholder":43},[521],{"type":62,"value":371},{"type":48,"tag":185,"props":523,"children":525},{"class":187,"line":524},10,[526],{"type":48,"tag":185,"props":527,"children":528},{"style":192},[529],{"type":62,"value":530},"# Detect platform and deployment targets\n",{"type":48,"tag":185,"props":532,"children":534},{"class":187,"line":533},11,[535,539,543,547,552,557,562,566,571,575,580,584,589,593,598,602],{"type":48,"tag":185,"props":536,"children":537},{"style":202},[538],{"type":62,"value":205},{"type":48,"tag":185,"props":540,"children":541},{"style":208},[542],{"type":62,"value":393},{"type":48,"tag":185,"props":544,"children":545},{"style":214},[546],{"type":62,"value":217},{"type":48,"tag":185,"props":548,"children":549},{"style":208},[550],{"type":62,"value":551},"platforms:|",{"type":48,"tag":185,"props":553,"children":554},{"style":230},[555],{"type":62,"value":556},"\\\\",{"type":48,"tag":185,"props":558,"children":559},{"style":208},[560],{"type":62,"value":561},".iOS|",{"type":48,"tag":185,"props":563,"children":564},{"style":230},[565],{"type":62,"value":556},{"type":48,"tag":185,"props":567,"children":568},{"style":208},[569],{"type":62,"value":570},".macOS|",{"type":48,"tag":185,"props":572,"children":573},{"style":230},[574],{"type":62,"value":556},{"type":48,"tag":185,"props":576,"children":577},{"style":208},[578],{"type":62,"value":579},".tvOS|",{"type":48,"tag":185,"props":581,"children":582},{"style":230},[583],{"type":62,"value":556},{"type":48,"tag":185,"props":585,"children":586},{"style":208},[587],{"type":62,"value":588},".watchOS|",{"type":48,"tag":185,"props":590,"children":591},{"style":230},[592],{"type":62,"value":556},{"type":48,"tag":185,"props":594,"children":595},{"style":208},[596],{"type":62,"value":597},".visionOS|IPHONEOS_DEPLOYMENT_TARGET|MACOSX_DEPLOYMENT_TARGET|TVOS_DEPLOYMENT_TARGET|WATCHOS_DEPLOYMENT_TARGET|XROS_DEPLOYMENT_TARGET",{"type":48,"tag":185,"props":599,"children":600},{"style":214},[601],{"type":62,"value":227},{"type":48,"tag":185,"props":603,"children":604},{"style":230},[605],{"type":62,"value":233},{"type":48,"tag":185,"props":607,"children":609},{"class":187,"line":608},12,[610,614,618,622,626,630,634,638,642,646,650,654,658,662],{"type":48,"tag":185,"props":611,"children":612},{"style":208},[613],{"type":62,"value":242},{"type":48,"tag":185,"props":615,"children":616},{"style":214},[617],{"type":62,"value":227},{"type":48,"tag":185,"props":619,"children":620},{"style":208},[621],{"type":62,"value":251},{"type":48,"tag":185,"props":623,"children":624},{"style":214},[625],{"type":62,"value":227},{"type":48,"tag":185,"props":627,"children":628},{"style":208},[629],{"type":62,"value":260},{"type":48,"tag":185,"props":631,"children":632},{"style":214},[633],{"type":62,"value":227},{"type":48,"tag":185,"props":635,"children":636},{"style":208},[637],{"type":62,"value":328},{"type":48,"tag":185,"props":639,"children":640},{"style":214},[641],{"type":62,"value":227},{"type":48,"tag":185,"props":643,"children":644},{"style":208},[645],{"type":62,"value":337},{"type":48,"tag":185,"props":647,"children":648},{"style":214},[649],{"type":62,"value":342},{"type":48,"tag":185,"props":651,"children":652},{"style":208},[653],{"type":62,"value":347},{"type":48,"tag":185,"props":655,"children":656},{"style":214},[657],{"type":62,"value":352},{"type":48,"tag":185,"props":659,"children":660},{"style":202},[661],{"type":62,"value":357},{"type":48,"tag":185,"props":663,"children":664},{"style":208},[665],{"type":62,"value":362},{"type":48,"tag":185,"props":667,"children":669},{"class":187,"line":668},13,[670,674,679,683,688,692,697,701],{"type":48,"tag":185,"props":671,"children":672},{"style":202},[673],{"type":62,"value":205},{"type":48,"tag":185,"props":675,"children":676},{"style":208},[677],{"type":62,"value":678}," -E",{"type":48,"tag":185,"props":680,"children":681},{"style":214},[682],{"type":62,"value":217},{"type":48,"tag":185,"props":684,"children":685},{"style":208},[686],{"type":62,"value":687},"platform :ios|platform :osx|platform :tvos|platform :watchos",{"type":48,"tag":185,"props":689,"children":690},{"style":214},[691],{"type":62,"value":227},{"type":48,"tag":185,"props":693,"children":694},{"style":208},[695],{"type":62,"value":696}," Podfile",{"type":48,"tag":185,"props":698,"children":699},{"style":214},[700],{"type":62,"value":342},{"type":48,"tag":185,"props":702,"children":703},{"style":208},[704],{"type":62,"value":705},"\u002Fdev\u002Fnull\n",{"type":48,"tag":185,"props":707,"children":709},{"class":187,"line":708},14,[710],{"type":48,"tag":185,"props":711,"children":712},{"emptyLinePlaceholder":43},[713],{"type":62,"value":371},{"type":48,"tag":185,"props":715,"children":717},{"class":187,"line":716},15,[718],{"type":48,"tag":185,"props":719,"children":720},{"style":192},[721],{"type":62,"value":722},"# Detect logging\n",{"type":48,"tag":185,"props":724,"children":726},{"class":187,"line":725},16,[727,731,735,739,744,748,753,757,762,766,770,774,778,782,786,790,794,798,802],{"type":48,"tag":185,"props":728,"children":729},{"style":202},[730],{"type":62,"value":205},{"type":48,"tag":185,"props":732,"children":733},{"style":208},[734],{"type":62,"value":393},{"type":48,"tag":185,"props":736,"children":737},{"style":214},[738],{"type":62,"value":217},{"type":48,"tag":185,"props":740,"children":741},{"style":208},[742],{"type":62,"value":743},"import OSLog|import os",{"type":48,"tag":185,"props":745,"children":746},{"style":230},[747],{"type":62,"value":556},{"type":48,"tag":185,"props":749,"children":750},{"style":208},[751],{"type":62,"value":752},".log|Logger",{"type":48,"tag":185,"props":754,"children":755},{"style":230},[756],{"type":62,"value":556},{"type":48,"tag":185,"props":758,"children":759},{"style":208},[760],{"type":62,"value":761},"(|CocoaLumberjack|DDLog",{"type":48,"tag":185,"props":763,"children":764},{"style":214},[765],{"type":62,"value":227},{"type":48,"tag":185,"props":767,"children":768},{"style":208},[769],{"type":62,"value":260},{"type":48,"tag":185,"props":771,"children":772},{"style":214},[773],{"type":62,"value":227},{"type":48,"tag":185,"props":775,"children":776},{"style":208},[777],{"type":62,"value":419},{"type":48,"tag":185,"props":779,"children":780},{"style":214},[781],{"type":62,"value":227},{"type":48,"tag":185,"props":783,"children":784},{"style":208},[785],{"type":62,"value":337},{"type":48,"tag":185,"props":787,"children":788},{"style":214},[789],{"type":62,"value":342},{"type":48,"tag":185,"props":791,"children":792},{"style":208},[793],{"type":62,"value":347},{"type":48,"tag":185,"props":795,"children":796},{"style":214},[797],{"type":62,"value":352},{"type":48,"tag":185,"props":799,"children":800},{"style":202},[801],{"type":62,"value":357},{"type":48,"tag":185,"props":803,"children":804},{"style":208},[805],{"type":62,"value":448},{"type":48,"tag":185,"props":807,"children":809},{"class":187,"line":808},17,[810],{"type":48,"tag":185,"props":811,"children":812},{"emptyLinePlaceholder":43},[813],{"type":62,"value":371},{"type":48,"tag":185,"props":815,"children":817},{"class":187,"line":816},18,[818],{"type":48,"tag":185,"props":819,"children":820},{"style":192},[821],{"type":62,"value":822},"# Detect companion backend\n",{"type":48,"tag":185,"props":824,"children":826},{"class":187,"line":825},19,[827,832,837,842,847,851],{"type":48,"tag":185,"props":828,"children":829},{"style":202},[830],{"type":62,"value":831},"ls",{"type":48,"tag":185,"props":833,"children":834},{"style":208},[835],{"type":62,"value":836}," ..\u002Fbackend",{"type":48,"tag":185,"props":838,"children":839},{"style":208},[840],{"type":62,"value":841}," ..\u002Fserver",{"type":48,"tag":185,"props":843,"children":844},{"style":208},[845],{"type":62,"value":846}," ..\u002Fapi",{"type":48,"tag":185,"props":848,"children":849},{"style":214},[850],{"type":62,"value":342},{"type":48,"tag":185,"props":852,"children":853},{"style":208},[854],{"type":62,"value":705},{"type":48,"tag":185,"props":856,"children":858},{"class":187,"line":857},20,[859,863,868,873,878,883,887],{"type":48,"tag":185,"props":860,"children":861},{"style":202},[862],{"type":62,"value":831},{"type":48,"tag":185,"props":864,"children":865},{"style":208},[866],{"type":62,"value":867}," ..\u002Fgo.mod",{"type":48,"tag":185,"props":869,"children":870},{"style":208},[871],{"type":62,"value":872}," ..\u002Frequirements.txt",{"type":48,"tag":185,"props":874,"children":875},{"style":208},[876],{"type":62,"value":877}," ..\u002FGemfile",{"type":48,"tag":185,"props":879,"children":880},{"style":208},[881],{"type":62,"value":882}," ..\u002Fpackage.json",{"type":48,"tag":185,"props":884,"children":885},{"style":214},[886],{"type":62,"value":342},{"type":48,"tag":185,"props":888,"children":889},{"style":208},[890],{"type":62,"value":705},{"type":48,"tag":53,"props":892,"children":893},{},[894],{"type":48,"tag":141,"props":895,"children":896},{},[897],{"type":62,"value":898},"What to note:",{"type":48,"tag":93,"props":900,"children":901},{},[902,928,949,954,959,979],{"type":48,"tag":97,"props":903,"children":904},{},[905,907,912,914,919,921,926],{"type":62,"value":906},"Is ",{"type":48,"tag":113,"props":908,"children":910},{"className":909},[],[911],{"type":62,"value":118},{"type":62,"value":913}," already in ",{"type":48,"tag":113,"props":915,"children":917},{"className":916},[],[918],{"type":62,"value":251},{"type":62,"value":920}," or ",{"type":48,"tag":113,"props":922,"children":924},{"className":923},[],[925],{"type":62,"value":269},{"type":62,"value":927},"? If yes, skip to Phase 2 (configure features).",{"type":48,"tag":97,"props":929,"children":930},{},[931,933,939,941,947],{"type":62,"value":932},"SwiftUI (",{"type":48,"tag":113,"props":934,"children":936},{"className":935},[],[937],{"type":62,"value":938},"@main App",{"type":62,"value":940}," struct) or UIKit (",{"type":48,"tag":113,"props":942,"children":944},{"className":943},[],[945],{"type":62,"value":946},"AppDelegate",{"type":62,"value":948},")? Determines init pattern.",{"type":48,"tag":97,"props":950,"children":951},{},[952],{"type":62,"value":953},"Which Apple platforms? (Affects which features are available — see Platform Support Matrix.)",{"type":48,"tag":97,"props":955,"children":956},{},[957],{"type":62,"value":958},"Existing logging library? (Enables structured log capture.)",{"type":48,"tag":97,"props":960,"children":961},{},[962,964,970,972,977],{"type":62,"value":963},"SwiftUI tracing import\u002Fproduct? ",{"type":48,"tag":113,"props":965,"children":967},{"className":966},[],[968],{"type":62,"value":969},"SentrySwiftUI",{"type":62,"value":971}," still exists but is deprecated in SDK 9.4.1+; prefer the main ",{"type":48,"tag":113,"props":973,"children":975},{"className":974},[],[976],{"type":62,"value":9},{"type":62,"value":978}," module for released binary products.",{"type":48,"tag":97,"props":980,"children":981},{},[982],{"type":62,"value":983},"Companion backend? (Triggers Phase 4 cross-link for distributed tracing.)",{"type":48,"tag":159,"props":985,"children":986},{},[],{"type":48,"tag":86,"props":988,"children":990},{"id":989},"phase-2-recommend",[991],{"type":62,"value":992},"Phase 2: Recommend",{"type":48,"tag":53,"props":994,"children":995},{},[996],{"type":62,"value":997},"Based on what you found, present a concrete recommendation. Don't ask open-ended questions — lead with a proposal:",{"type":48,"tag":53,"props":999,"children":1000},{},[1001],{"type":48,"tag":141,"props":1002,"children":1003},{},[1004],{"type":62,"value":1005},"Recommended (core coverage):",{"type":48,"tag":93,"props":1007,"children":1008},{},[1009,1019,1029],{"type":48,"tag":97,"props":1010,"children":1011},{},[1012,1017],{"type":48,"tag":141,"props":1013,"children":1014},{},[1015],{"type":62,"value":1016},"Error Monitoring",{"type":62,"value":1018}," — always; crash reporting, app hangs, watchdog terminations, NSError\u002FSwift errors",{"type":48,"tag":97,"props":1020,"children":1021},{},[1022,1027],{"type":48,"tag":141,"props":1023,"children":1024},{},[1025],{"type":62,"value":1026},"Tracing",{"type":62,"value":1028}," — always for apps; auto-instruments app launch, network, UIViewController, file I\u002FO, Core Data",{"type":48,"tag":97,"props":1030,"children":1031},{},[1032,1037,1039],{"type":48,"tag":141,"props":1033,"children":1034},{},[1035],{"type":62,"value":1036},"Profiling",{"type":62,"value":1038}," — production iOS\u002FmacOS apps; UI profiling via ",{"type":48,"tag":113,"props":1040,"children":1042},{"className":1041},[],[1043],{"type":62,"value":1044},"configureProfiling",{"type":48,"tag":53,"props":1046,"children":1047},{},[1048],{"type":48,"tag":141,"props":1049,"children":1050},{},[1051],{"type":62,"value":1052},"Optional (enhanced observability):",{"type":48,"tag":93,"props":1054,"children":1055},{},[1056,1066,1076,1086],{"type":48,"tag":97,"props":1057,"children":1058},{},[1059,1064],{"type":48,"tag":141,"props":1060,"children":1061},{},[1062],{"type":62,"value":1063},"Session Replay",{"type":62,"value":1065}," — user-facing iOS apps; verify masking on iOS 26+ \u002F Liquid Glass builds",{"type":48,"tag":97,"props":1067,"children":1068},{},[1069,1074],{"type":48,"tag":141,"props":1070,"children":1071},{},[1072],{"type":62,"value":1073},"Logging",{"type":62,"value":1075}," — when structured log capture is needed",{"type":48,"tag":97,"props":1077,"children":1078},{},[1079,1084],{"type":48,"tag":141,"props":1080,"children":1081},{},[1082],{"type":62,"value":1083},"Metrics",{"type":62,"value":1085}," — Swift apps needing aggregate counters, gauges, or distributions",{"type":48,"tag":97,"props":1087,"children":1088},{},[1089,1094],{"type":48,"tag":141,"props":1090,"children":1091},{},[1092],{"type":62,"value":1093},"User Feedback",{"type":62,"value":1095}," — apps that want crash\u002Ferror feedback forms from users",{"type":48,"tag":53,"props":1097,"children":1098},{},[1099],{"type":48,"tag":141,"props":1100,"children":1101},{},[1102],{"type":62,"value":1103},"Not available for Cocoa:",{"type":48,"tag":93,"props":1105,"children":1106},{},[1107,1112],{"type":48,"tag":97,"props":1108,"children":1109},{},[1110],{"type":62,"value":1111},"Crons — backend only",{"type":48,"tag":97,"props":1113,"children":1114},{},[1115],{"type":62,"value":1116},"AI Monitoring — JS\u002FPython only",{"type":48,"tag":53,"props":1118,"children":1119},{},[1120],{"type":48,"tag":141,"props":1121,"children":1122},{},[1123],{"type":62,"value":1124},"Recommendation logic:",{"type":48,"tag":1126,"props":1127,"children":1128},"table",{},[1129,1148],{"type":48,"tag":1130,"props":1131,"children":1132},"thead",{},[1133],{"type":48,"tag":1134,"props":1135,"children":1136},"tr",{},[1137,1143],{"type":48,"tag":1138,"props":1139,"children":1140},"th",{},[1141],{"type":62,"value":1142},"Feature",{"type":48,"tag":1138,"props":1144,"children":1145},{},[1146],{"type":62,"value":1147},"Recommend when...",{"type":48,"tag":1149,"props":1150,"children":1151},"tbody",{},[1152,1170,1187,1199,1211,1231,1243],{"type":48,"tag":1134,"props":1153,"children":1154},{},[1155,1160],{"type":48,"tag":1156,"props":1157,"children":1158},"td",{},[1159],{"type":62,"value":1016},{"type":48,"tag":1156,"props":1161,"children":1162},{},[1163,1168],{"type":48,"tag":141,"props":1164,"children":1165},{},[1166],{"type":62,"value":1167},"Always",{"type":62,"value":1169}," — non-negotiable baseline",{"type":48,"tag":1134,"props":1171,"children":1172},{},[1173,1177],{"type":48,"tag":1156,"props":1174,"children":1175},{},[1176],{"type":62,"value":1026},{"type":48,"tag":1156,"props":1178,"children":1179},{},[1180,1185],{"type":48,"tag":141,"props":1181,"children":1182},{},[1183],{"type":62,"value":1184},"Always for apps",{"type":62,"value":1186}," — rich auto-instrumentation out of the box",{"type":48,"tag":1134,"props":1188,"children":1189},{},[1190,1194],{"type":48,"tag":1156,"props":1191,"children":1192},{},[1193],{"type":62,"value":1036},{"type":48,"tag":1156,"props":1195,"children":1196},{},[1197],{"type":62,"value":1198},"iOS\u002FmacOS production apps where performance matters (not tvOS\u002FwatchOS\u002FvisionOS)",{"type":48,"tag":1134,"props":1200,"children":1201},{},[1202,1206],{"type":48,"tag":1156,"props":1203,"children":1204},{},[1205],{"type":62,"value":1063},{"type":48,"tag":1156,"props":1207,"children":1208},{},[1209],{"type":62,"value":1210},"User-facing iOS apps; tvOS may work but is not officially supported",{"type":48,"tag":1134,"props":1212,"children":1213},{},[1214,1218],{"type":48,"tag":1156,"props":1215,"children":1216},{},[1217],{"type":62,"value":1073},{"type":48,"tag":1156,"props":1219,"children":1220},{},[1221,1223,1229],{"type":62,"value":1222},"Existing ",{"type":48,"tag":113,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":62,"value":1228},"os.log",{"type":62,"value":1230}," \u002F CocoaLumberjack usage, or structured logs needed",{"type":48,"tag":1134,"props":1232,"children":1233},{},[1234,1238],{"type":48,"tag":1156,"props":1235,"children":1236},{},[1237],{"type":62,"value":1083},{"type":48,"tag":1156,"props":1239,"children":1240},{},[1241],{"type":62,"value":1242},"Aggregate product or health signals that should not create issues; Swift only, SDK 9.12+",{"type":48,"tag":1134,"props":1244,"children":1245},{},[1246,1250],{"type":48,"tag":1156,"props":1247,"children":1248},{},[1249],{"type":62,"value":1093},{"type":48,"tag":1156,"props":1251,"children":1252},{},[1253],{"type":62,"value":1254},"Apps wanting in-app bug reports with screenshots",{"type":48,"tag":53,"props":1256,"children":1257},{},[1258,1260],{"type":62,"value":1259},"Propose: ",{"type":48,"tag":1261,"props":1262,"children":1263},"em",{},[1264],{"type":62,"value":1265},"\"I recommend Error Monitoring + Tracing + Profiling. Want me to also add Session Replay and Logging?\"",{"type":48,"tag":159,"props":1267,"children":1268},{},[],{"type":48,"tag":86,"props":1270,"children":1272},{"id":1271},"phase-3-guide",[1273],{"type":62,"value":1274},"Phase 3: Guide",{"type":48,"tag":1276,"props":1277,"children":1279},"h3",{"id":1278},"install",[1280],{"type":62,"value":1281},"Install",{"type":48,"tag":53,"props":1283,"children":1284},{},[1285],{"type":48,"tag":141,"props":1286,"children":1287},{},[1288],{"type":62,"value":1289},"Option 1 — Sentry Wizard (recommended):",{"type":48,"tag":49,"props":1291,"children":1292},{},[1293,1303,1313,1318],{"type":48,"tag":53,"props":1294,"children":1295},{},[1296,1301],{"type":48,"tag":141,"props":1297,"children":1298},{},[1299],{"type":62,"value":1300},"You need to run this yourself",{"type":62,"value":1302}," — the wizard opens a browser for login and requires interactive input that the agent can't handle. Copy-paste into your terminal:",{"type":48,"tag":174,"props":1304,"children":1308},{"className":1305,"code":1307,"language":62},[1306],"language-text","brew install getsentry\u002Ftools\u002Fsentry-wizard && sentry-wizard -i ios\n",[1309],{"type":48,"tag":113,"props":1310,"children":1311},{"__ignoreMap":179},[1312],{"type":62,"value":1307},{"type":48,"tag":53,"props":1314,"children":1315},{},[1316],{"type":62,"value":1317},"It handles login, org\u002Fproject selection, auth token setup, SDK installation, AppDelegate updates, and dSYM\u002Fdebug symbol upload build phases.",{"type":48,"tag":53,"props":1319,"children":1320},{},[1321],{"type":48,"tag":141,"props":1322,"children":1323},{},[1324,1326,1332],{"type":62,"value":1325},"Once it finishes, come back and skip to ",{"type":48,"tag":57,"props":1327,"children":1329},{"href":1328},"#verification",[1330],{"type":62,"value":1331},"Verification",{"type":62,"value":1333},".",{"type":48,"tag":53,"props":1335,"children":1336},{},[1337],{"type":62,"value":1338},"If the user skips the wizard, proceed with Option 2 (SPM\u002FCocoaPods) and manual setup below.",{"type":48,"tag":53,"props":1340,"children":1341},{},[1342,1347],{"type":48,"tag":141,"props":1343,"children":1344},{},[1345],{"type":62,"value":1346},"Option 2 — Swift Package Manager:",{"type":62,"value":1348}," File → Add Packages → enter:",{"type":48,"tag":174,"props":1350,"children":1353},{"className":1351,"code":1352,"language":62},[1306],"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa.git\n",[1354],{"type":48,"tag":113,"props":1355,"children":1356},{"__ignoreMap":179},[1357],{"type":62,"value":1352},{"type":48,"tag":53,"props":1359,"children":1360},{},[1361,1363,1368],{"type":62,"value":1362},"Or in ",{"type":48,"tag":113,"props":1364,"children":1366},{"className":1365},[],[1367],{"type":62,"value":251},{"type":62,"value":1369},":",{"type":48,"tag":174,"props":1371,"children":1375},{"className":1372,"code":1373,"language":1374,"meta":179,"style":179},"language-swift shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",".package(url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\", from: \"9.15.0\"),\n","swift",[1376],{"type":48,"tag":113,"props":1377,"children":1378},{"__ignoreMap":179},[1379],{"type":48,"tag":185,"props":1380,"children":1381},{"class":187,"line":188},[1382],{"type":48,"tag":185,"props":1383,"children":1384},{},[1385],{"type":62,"value":1373},{"type":48,"tag":53,"props":1387,"children":1388},{},[1389,1394,1396,1401],{"type":48,"tag":141,"props":1390,"children":1391},{},[1392],{"type":62,"value":1393},"SPM Products",{"type":62,"value":1395}," — choose ",{"type":48,"tag":141,"props":1397,"children":1398},{},[1399],{"type":62,"value":1400},"exactly one",{"type":62,"value":1402}," per target:",{"type":48,"tag":1126,"props":1404,"children":1405},{},[1406,1422],{"type":48,"tag":1130,"props":1407,"children":1408},{},[1409],{"type":48,"tag":1134,"props":1410,"children":1411},{},[1412,1417],{"type":48,"tag":1138,"props":1413,"children":1414},{},[1415],{"type":62,"value":1416},"Product",{"type":48,"tag":1138,"props":1418,"children":1419},{},[1420],{"type":62,"value":1421},"Use Case",{"type":48,"tag":1149,"props":1423,"children":1424},{},[1425,1446,1463,1479,1496],{"type":48,"tag":1134,"props":1426,"children":1427},{},[1428,1436],{"type":48,"tag":1156,"props":1429,"children":1430},{},[1431],{"type":48,"tag":113,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":62,"value":9},{"type":48,"tag":1156,"props":1437,"children":1438},{},[1439,1444],{"type":48,"tag":141,"props":1440,"children":1441},{},[1442],{"type":62,"value":1443},"Recommended",{"type":62,"value":1445}," — static framework, fast app start; includes SwiftUI APIs in SDK 9.4.1+",{"type":48,"tag":1134,"props":1447,"children":1448},{},[1449,1458],{"type":48,"tag":1156,"props":1450,"children":1451},{},[1452],{"type":48,"tag":113,"props":1453,"children":1455},{"className":1454},[],[1456],{"type":62,"value":1457},"Sentry-Dynamic",{"type":48,"tag":1156,"props":1459,"children":1460},{},[1461],{"type":62,"value":1462},"Dynamic framework alternative",{"type":48,"tag":1134,"props":1464,"children":1465},{},[1466,1474],{"type":48,"tag":1156,"props":1467,"children":1468},{},[1469],{"type":48,"tag":113,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":62,"value":969},{"type":48,"tag":1156,"props":1475,"children":1476},{},[1477],{"type":62,"value":1478},"Legacy\u002Fdeprecated re-export for SwiftUI APIs; use only when maintaining older setup",{"type":48,"tag":1134,"props":1480,"children":1481},{},[1482,1491],{"type":48,"tag":1156,"props":1483,"children":1484},{},[1485],{"type":48,"tag":113,"props":1486,"children":1488},{"className":1487},[],[1489],{"type":62,"value":1490},"Sentry-WithoutUIKitOrAppKit",{"type":48,"tag":1156,"props":1492,"children":1493},{},[1494],{"type":62,"value":1495},"watchOS, app extensions, CLI tools (Swift \u003C 6.1)",{"type":48,"tag":1134,"props":1497,"children":1498},{},[1499,1518],{"type":48,"tag":1156,"props":1500,"children":1501},{},[1502,1508,1510,1516],{"type":48,"tag":113,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":62,"value":1507},"SentrySPM",{"type":62,"value":1509}," + ",{"type":48,"tag":113,"props":1511,"children":1513},{"className":1512},[],[1514],{"type":62,"value":1515},"NoUIFramework",{"type":62,"value":1517}," trait",{"type":48,"tag":1156,"props":1519,"children":1520},{},[1521,1523,1528],{"type":62,"value":1522},"Source build without UIKit\u002FAppKit for CLI\u002Fheadless targets (",{"type":48,"tag":141,"props":1524,"children":1525},{},[1526],{"type":62,"value":1527},"SDK 9.7+ \u002F Swift 6.1+ \u002F Xcode 26.4+",{"type":62,"value":1529}," for Xcode UI)",{"type":48,"tag":49,"props":1531,"children":1532},{},[1533,1538],{"type":48,"tag":53,"props":1534,"children":1535},{},[1536],{"type":62,"value":1537},"Warning: Xcode allows selecting multiple products — choose only one.",{"type":48,"tag":53,"props":1539,"children":1540},{},[1541,1543,1548,1550,1556,1558,1563,1565,1571],{"type":62,"value":1542},"If using ",{"type":48,"tag":113,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":62,"value":1507},{"type":62,"value":1549}," from source, current source-build projects may import ",{"type":48,"tag":113,"props":1551,"children":1553},{"className":1552},[],[1554],{"type":62,"value":1555},"SentrySwift",{"type":62,"value":1557}," instead of ",{"type":48,"tag":113,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":62,"value":9},{"type":62,"value":1564},"; verify the module name in the target. Released binary products use ",{"type":48,"tag":113,"props":1566,"children":1568},{"className":1567},[],[1569],{"type":62,"value":1570},"import Sentry",{"type":62,"value":1333},{"type":48,"tag":53,"props":1573,"children":1574},{},[1575,1580,1582,1588],{"type":48,"tag":141,"props":1576,"children":1577},{},[1578],{"type":62,"value":1579},"Swift 6.1+ trait-based opt-out of UIKit\u002FAppKit",{"type":62,"value":1581}," (requires ",{"type":48,"tag":113,"props":1583,"children":1585},{"className":1584},[],[1586],{"type":62,"value":1587},"Package@swift-6.1.swift",{"type":62,"value":1589}," manifest):",{"type":48,"tag":174,"props":1591,"children":1593},{"className":1372,"code":1592,"language":1374,"meta":179,"style":179},"\u002F\u002F Package.swift (Swift 6.1+)\n.package(\n    url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\",\n    from: \"9.15.0\",\n    traits: [\"NoUIFramework\"]\n),\n\n\u002F\u002F In your target's dependencies:\n.product(name: \"SentrySPM\", package: \"sentry-cocoa\")\n",[1594],{"type":48,"tag":113,"props":1595,"children":1596},{"__ignoreMap":179},[1597,1605,1613,1621,1629,1637,1645,1652,1660],{"type":48,"tag":185,"props":1598,"children":1599},{"class":187,"line":188},[1600],{"type":48,"tag":185,"props":1601,"children":1602},{},[1603],{"type":62,"value":1604},"\u002F\u002F Package.swift (Swift 6.1+)\n",{"type":48,"tag":185,"props":1606,"children":1607},{"class":187,"line":198},[1608],{"type":48,"tag":185,"props":1609,"children":1610},{},[1611],{"type":62,"value":1612},".package(\n",{"type":48,"tag":185,"props":1614,"children":1615},{"class":187,"line":236},[1616],{"type":48,"tag":185,"props":1617,"children":1618},{},[1619],{"type":62,"value":1620},"    url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\",\n",{"type":48,"tag":185,"props":1622,"children":1623},{"class":187,"line":297},[1624],{"type":48,"tag":185,"props":1625,"children":1626},{},[1627],{"type":62,"value":1628},"    from: \"9.15.0\",\n",{"type":48,"tag":185,"props":1630,"children":1631},{"class":187,"line":365},[1632],{"type":48,"tag":185,"props":1633,"children":1634},{},[1635],{"type":62,"value":1636},"    traits: [\"NoUIFramework\"]\n",{"type":48,"tag":185,"props":1638,"children":1639},{"class":187,"line":374},[1640],{"type":48,"tag":185,"props":1641,"children":1642},{},[1643],{"type":62,"value":1644},"),\n",{"type":48,"tag":185,"props":1646,"children":1647},{"class":187,"line":383},[1648],{"type":48,"tag":185,"props":1649,"children":1650},{"emptyLinePlaceholder":43},[1651],{"type":62,"value":371},{"type":48,"tag":185,"props":1653,"children":1654},{"class":187,"line":451},[1655],{"type":48,"tag":185,"props":1656,"children":1657},{},[1658],{"type":62,"value":1659},"\u002F\u002F In your target's dependencies:\n",{"type":48,"tag":185,"props":1661,"children":1662},{"class":187,"line":516},[1663],{"type":48,"tag":185,"props":1664,"children":1665},{},[1666],{"type":62,"value":1667},".product(name: \"SentrySPM\", package: \"sentry-cocoa\")\n",{"type":48,"tag":53,"props":1669,"children":1670},{},[1671,1673,1678],{"type":62,"value":1672},"This is the preferred opt-out path for command-line\u002Fheadless targets on Swift 6.1+. It compiles the SDK from source so the trait can remove UIKit\u002FAppKit\u002FSwiftUI linkage. For Swift \u003C 6.1 continue using ",{"type":48,"tag":113,"props":1674,"children":1676},{"className":1675},[],[1677],{"type":62,"value":1490},{"type":62,"value":1333},{"type":48,"tag":49,"props":1680,"children":1681},{},[1682],{"type":48,"tag":53,"props":1683,"children":1684},{},[1685,1689,1691,1696,1698,1703],{"type":48,"tag":141,"props":1686,"children":1687},{},[1688],{"type":62,"value":145},{"type":62,"value":1690}," Package traits are visible in the Xcode UI starting with ",{"type":48,"tag":141,"props":1692,"children":1693},{},[1694],{"type":62,"value":1695},"Xcode 26.4+",{"type":62,"value":1697},". On older Xcode versions, traits still work when declared in ",{"type":48,"tag":113,"props":1699,"children":1701},{"className":1700},[],[1702],{"type":62,"value":251},{"type":62,"value":1704}," but won't appear in the GUI.",{"type":48,"tag":53,"props":1706,"children":1707},{},[1708],{"type":48,"tag":141,"props":1709,"children":1710},{},[1711],{"type":62,"value":1712},"Option 3 — CocoaPods (deprecated; prefer SPM):",{"type":48,"tag":174,"props":1714,"children":1718},{"className":1715,"code":1716,"language":1717,"meta":179,"style":179},"language-ruby shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","platform :ios, '15.0'\nuse_frameworks!\n\ntarget 'YourApp' do\n  pod 'Sentry', :git => 'https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa.git', :tag => '9.15.0'\nend\n","ruby",[1719],{"type":48,"tag":113,"props":1720,"children":1721},{"__ignoreMap":179},[1722,1730,1738,1745,1753,1761],{"type":48,"tag":185,"props":1723,"children":1724},{"class":187,"line":188},[1725],{"type":48,"tag":185,"props":1726,"children":1727},{},[1728],{"type":62,"value":1729},"platform :ios, '15.0'\n",{"type":48,"tag":185,"props":1731,"children":1732},{"class":187,"line":198},[1733],{"type":48,"tag":185,"props":1734,"children":1735},{},[1736],{"type":62,"value":1737},"use_frameworks!\n",{"type":48,"tag":185,"props":1739,"children":1740},{"class":187,"line":236},[1741],{"type":48,"tag":185,"props":1742,"children":1743},{"emptyLinePlaceholder":43},[1744],{"type":62,"value":371},{"type":48,"tag":185,"props":1746,"children":1747},{"class":187,"line":297},[1748],{"type":48,"tag":185,"props":1749,"children":1750},{},[1751],{"type":62,"value":1752},"target 'YourApp' do\n",{"type":48,"tag":185,"props":1754,"children":1755},{"class":187,"line":365},[1756],{"type":48,"tag":185,"props":1757,"children":1758},{},[1759],{"type":62,"value":1760},"  pod 'Sentry', :git => 'https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa.git', :tag => '9.15.0'\n",{"type":48,"tag":185,"props":1762,"children":1763},{"class":187,"line":374},[1764],{"type":48,"tag":185,"props":1765,"children":1766},{},[1767],{"type":62,"value":1768},"end\n",{"type":48,"tag":53,"props":1770,"children":1771},{},[1772],{"type":62,"value":1773},"Sentry plans to stop publishing CocoaPods releases at the end of June 2026; use this only for existing CocoaPods projects.",{"type":48,"tag":49,"props":1775,"children":1776},{},[1777],{"type":48,"tag":53,"props":1778,"children":1779},{},[1780,1785,1787,1793,1795,1801],{"type":48,"tag":141,"props":1781,"children":1782},{},[1783],{"type":62,"value":1784},"Known issue (Xcode 14+):",{"type":62,"value":1786}," Sandbox ",{"type":48,"tag":113,"props":1788,"children":1790},{"className":1789},[],[1791],{"type":62,"value":1792},"rsync.samba",{"type":62,"value":1794}," error → Target Settings → \"Enable User Script Sandbox\" → ",{"type":48,"tag":113,"props":1796,"children":1798},{"className":1797},[],[1799],{"type":62,"value":1800},"NO",{"type":62,"value":1333},{"type":48,"tag":53,"props":1803,"children":1804},{},[1805],{"type":48,"tag":141,"props":1806,"children":1807},{},[1808],{"type":62,"value":1809},"Option 4 — SentryObjC (for pure Objective-C\u002FC++ projects):",{"type":48,"tag":53,"props":1811,"children":1812},{},[1813,1815,1820,1822,1828],{"type":62,"value":1814},"For pure Objective-C or Objective-C++ projects that ",{"type":48,"tag":141,"props":1816,"children":1817},{},[1818],{"type":62,"value":1819},"cannot enable Clang modules",{"type":62,"value":1821}," (e.g., ",{"type":48,"tag":113,"props":1823,"children":1825},{"className":1824},[],[1826],{"type":62,"value":1827},"-fmodules=NO",{"type":62,"value":1829},"), use the SentryObjC wrapper SDK. It provides the same functionality as the main SDK but with pure Objective-C headers that don't require Swift module imports.",{"type":48,"tag":53,"props":1831,"children":1832},{},[1833],{"type":48,"tag":141,"props":1834,"children":1835},{},[1836],{"type":62,"value":1837},"SPM:",{"type":48,"tag":174,"props":1839,"children":1841},{"className":1372,"code":1840,"language":1374,"meta":179,"style":179},".package(url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\", from: \"9.17.1\"),\n\n\u002F\u002F In your target's dependencies:\n.product(name: \"SentryObjC\", package: \"sentry-cocoa\")\n",[1842],{"type":48,"tag":113,"props":1843,"children":1844},{"__ignoreMap":179},[1845,1853,1860,1867],{"type":48,"tag":185,"props":1846,"children":1847},{"class":187,"line":188},[1848],{"type":48,"tag":185,"props":1849,"children":1850},{},[1851],{"type":62,"value":1852},".package(url: \"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\", from: \"9.17.1\"),\n",{"type":48,"tag":185,"props":1854,"children":1855},{"class":187,"line":198},[1856],{"type":48,"tag":185,"props":1857,"children":1858},{"emptyLinePlaceholder":43},[1859],{"type":62,"value":371},{"type":48,"tag":185,"props":1861,"children":1862},{"class":187,"line":236},[1863],{"type":48,"tag":185,"props":1864,"children":1865},{},[1866],{"type":62,"value":1659},{"type":48,"tag":185,"props":1868,"children":1869},{"class":187,"line":297},[1870],{"type":48,"tag":185,"props":1871,"children":1872},{},[1873],{"type":62,"value":1874},".product(name: \"SentryObjC\", package: \"sentry-cocoa\")\n",{"type":48,"tag":53,"props":1876,"children":1877},{},[1878,1880,1886,1888,1895],{"type":62,"value":1879},"Or download ",{"type":48,"tag":113,"props":1881,"children":1883},{"className":1882},[],[1884],{"type":62,"value":1885},"SentryObjC-Dynamic.xcframework.zip",{"type":62,"value":1887}," from the ",{"type":48,"tag":57,"props":1889,"children":1892},{"href":1890,"rel":1891},"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-cocoa\u002Freleases",[152],[1893],{"type":62,"value":1894},"releases page",{"type":62,"value":1333},{"type":48,"tag":53,"props":1897,"children":1898},{},[1899],{"type":48,"tag":141,"props":1900,"children":1901},{},[1902],{"type":62,"value":1903},"Migration from regular Sentry to SentryObjC:",{"type":48,"tag":93,"props":1905,"children":1906},{},[1907,1926,1974],{"type":48,"tag":97,"props":1908,"children":1909},{},[1910,1912,1918,1920],{"type":62,"value":1911},"Change ",{"type":48,"tag":113,"props":1913,"children":1915},{"className":1914},[],[1916],{"type":62,"value":1917},"#import \u003CSentry\u002FSentry.h>",{"type":62,"value":1919}," to ",{"type":48,"tag":113,"props":1921,"children":1923},{"className":1922},[],[1924],{"type":62,"value":1925},"#import \u003CSentryObjC\u002FSentryObjC.h>",{"type":48,"tag":97,"props":1927,"children":1928},{},[1929,1931,1936,1938,1944,1945,1950,1952,1958,1959,1965,1966,1972],{"type":62,"value":1930},"Rename ",{"type":48,"tag":113,"props":1932,"children":1934},{"className":1933},[],[1935],{"type":62,"value":9},{"type":62,"value":1937},"-prefixed types to ",{"type":48,"tag":113,"props":1939,"children":1941},{"className":1940},[],[1942],{"type":62,"value":1943},"SentryObjC",{"type":62,"value":1821},{"type":48,"tag":113,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":62,"value":126},{"type":62,"value":1951}," → ",{"type":48,"tag":113,"props":1953,"children":1955},{"className":1954},[],[1956],{"type":62,"value":1957},"SentryObjCSDK",{"type":62,"value":120},{"type":48,"tag":113,"props":1960,"children":1962},{"className":1961},[],[1963],{"type":62,"value":1964},"SentryOptions",{"type":62,"value":1951},{"type":48,"tag":113,"props":1967,"children":1969},{"className":1968},[],[1970],{"type":62,"value":1971},"SentryObjCOptions",{"type":62,"value":1973},")",{"type":48,"tag":97,"props":1975,"children":1976},{},[1977],{"type":62,"value":1978},"The API surface is otherwise identical",{"type":48,"tag":53,"props":1980,"children":1981},{},[1982,1984,1989,1991,1996],{"type":62,"value":1983},"Most users should use the standard ",{"type":48,"tag":113,"props":1985,"children":1987},{"className":1986},[],[1988],{"type":62,"value":9},{"type":62,"value":1990}," product (Option 2). Only use ",{"type":48,"tag":113,"props":1992,"children":1994},{"className":1993},[],[1995],{"type":62,"value":1943},{"type":62,"value":1997}," if you have a specific requirement preventing Clang modules.",{"type":48,"tag":159,"props":1999,"children":2000},{},[],{"type":48,"tag":1276,"props":2002,"children":2004},{"id":2003},"quick-start-recommended-init",[2005],{"type":62,"value":2006},"Quick Start — Recommended Init",{"type":48,"tag":53,"props":2008,"children":2009},{},[2010],{"type":62,"value":2011},"Full iOS app config enabling the most common features with sensible defaults. Add before any other code at app startup.",{"type":48,"tag":53,"props":2013,"children":2014},{},[2015,2017,2022,2024,2030,2032,2038],{"type":62,"value":2016},"For macOS, watchOS, app extensions, or ",{"type":48,"tag":113,"props":2018,"children":2020},{"className":2019},[],[2021],{"type":62,"value":1515},{"type":62,"value":2023}," builds, omit options that are unavailable for that platform (",{"type":48,"tag":113,"props":2025,"children":2027},{"className":2026},[],[2028],{"type":62,"value":2029},"sessionReplay",{"type":62,"value":2031},", screenshots\u002Fview hierarchy, user-feedback UI, UIKit tracing, and profiling on tvOS\u002FwatchOS\u002FvisionOS). Keep the core ",{"type":48,"tag":113,"props":2033,"children":2035},{"className":2034},[],[2036],{"type":62,"value":2037},"dsn",{"type":62,"value":2039},", environment, error monitoring, tracing, logs, and metrics settings that compile for the detected target.",{"type":48,"tag":53,"props":2041,"children":2042},{},[2043],{"type":48,"tag":141,"props":2044,"children":2045},{},[2046],{"type":62,"value":2047},"SwiftUI — App entry point:",{"type":48,"tag":174,"props":2049,"children":2051},{"className":1372,"code":2050,"language":1374,"meta":179,"style":179},"import SwiftUI\nimport Sentry\n\n@main\nstruct MyApp: App {\n    init() {\n        SentrySDK.start { options in\n            options.dsn = ProcessInfo.processInfo.environment[\"SENTRY_DSN\"]\n                ?? \"https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\"\n            options.environment = ProcessInfo.processInfo.environment[\"SENTRY_ENVIRONMENT\"]\n                ?? \"production\"\n            \u002F\u002F releaseName defaults to \"\u003Cbundle id>@\u003Cversion>+\u003Cbuild>\"; set only if you need a custom release.\n\n            \u002F\u002F Error monitoring (on by default — explicit for clarity)\n            options.enableCrashHandler = true\n            options.enableAppHangTracking = true\n            options.enableReportNonFullyBlockingAppHangs = true\n            options.enableWatchdogTerminationTracking = true\n            options.attachScreenshot = true\n            options.attachViewHierarchy = true\n            options.sendDefaultPii = true\n\n            \u002F\u002F Tracing\n            options.tracesSampleRate = 1.0          \u002F\u002F lower to 0.2 in high-traffic production\n\n            \u002F\u002F Profiling (SDK 9.0.0+ API)\n            options.configureProfiling = {\n                $0.sessionSampleRate = 1.0\n                $0.lifecycle = .trace\n            }\n\n            \u002F\u002F Session Replay. Keep production sampling conservative and verify masking on iOS 26+.\n            options.sessionReplay.sessionSampleRate = 0.1\n            options.sessionReplay.onErrorSampleRate = 1.0\n\n            \u002F\u002F Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)\n            options.enableLogs = true\n\n            \u002F\u002F Metrics are enabled by default in SDK 9.12+. Set false only to opt out.\n            options.enableMetrics = true\n        }\n    }\n\n    var body: some Scene {\n        WindowGroup { ContentView() }\n    }\n}\n",[2052],{"type":48,"tag":113,"props":2053,"children":2054},{"__ignoreMap":179},[2055,2063,2071,2078,2086,2094,2102,2110,2118,2126,2134,2142,2150,2157,2165,2173,2181,2189,2197,2205,2213,2222,2230,2239,2248,2256,2265,2274,2283,2292,2300,2308,2317,2326,2335,2343,2352,2361,2369,2378,2387,2396,2405,2413,2422,2431,2439],{"type":48,"tag":185,"props":2056,"children":2057},{"class":187,"line":188},[2058],{"type":48,"tag":185,"props":2059,"children":2060},{},[2061],{"type":62,"value":2062},"import SwiftUI\n",{"type":48,"tag":185,"props":2064,"children":2065},{"class":187,"line":198},[2066],{"type":48,"tag":185,"props":2067,"children":2068},{},[2069],{"type":62,"value":2070},"import Sentry\n",{"type":48,"tag":185,"props":2072,"children":2073},{"class":187,"line":236},[2074],{"type":48,"tag":185,"props":2075,"children":2076},{"emptyLinePlaceholder":43},[2077],{"type":62,"value":371},{"type":48,"tag":185,"props":2079,"children":2080},{"class":187,"line":297},[2081],{"type":48,"tag":185,"props":2082,"children":2083},{},[2084],{"type":62,"value":2085},"@main\n",{"type":48,"tag":185,"props":2087,"children":2088},{"class":187,"line":365},[2089],{"type":48,"tag":185,"props":2090,"children":2091},{},[2092],{"type":62,"value":2093},"struct MyApp: App {\n",{"type":48,"tag":185,"props":2095,"children":2096},{"class":187,"line":374},[2097],{"type":48,"tag":185,"props":2098,"children":2099},{},[2100],{"type":62,"value":2101},"    init() {\n",{"type":48,"tag":185,"props":2103,"children":2104},{"class":187,"line":383},[2105],{"type":48,"tag":185,"props":2106,"children":2107},{},[2108],{"type":62,"value":2109},"        SentrySDK.start { options in\n",{"type":48,"tag":185,"props":2111,"children":2112},{"class":187,"line":451},[2113],{"type":48,"tag":185,"props":2114,"children":2115},{},[2116],{"type":62,"value":2117},"            options.dsn = ProcessInfo.processInfo.environment[\"SENTRY_DSN\"]\n",{"type":48,"tag":185,"props":2119,"children":2120},{"class":187,"line":516},[2121],{"type":48,"tag":185,"props":2122,"children":2123},{},[2124],{"type":62,"value":2125},"                ?? \"https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\"\n",{"type":48,"tag":185,"props":2127,"children":2128},{"class":187,"line":524},[2129],{"type":48,"tag":185,"props":2130,"children":2131},{},[2132],{"type":62,"value":2133},"            options.environment = ProcessInfo.processInfo.environment[\"SENTRY_ENVIRONMENT\"]\n",{"type":48,"tag":185,"props":2135,"children":2136},{"class":187,"line":533},[2137],{"type":48,"tag":185,"props":2138,"children":2139},{},[2140],{"type":62,"value":2141},"                ?? \"production\"\n",{"type":48,"tag":185,"props":2143,"children":2144},{"class":187,"line":608},[2145],{"type":48,"tag":185,"props":2146,"children":2147},{},[2148],{"type":62,"value":2149},"            \u002F\u002F releaseName defaults to \"\u003Cbundle id>@\u003Cversion>+\u003Cbuild>\"; set only if you need a custom release.\n",{"type":48,"tag":185,"props":2151,"children":2152},{"class":187,"line":668},[2153],{"type":48,"tag":185,"props":2154,"children":2155},{"emptyLinePlaceholder":43},[2156],{"type":62,"value":371},{"type":48,"tag":185,"props":2158,"children":2159},{"class":187,"line":708},[2160],{"type":48,"tag":185,"props":2161,"children":2162},{},[2163],{"type":62,"value":2164},"            \u002F\u002F Error monitoring (on by default — explicit for clarity)\n",{"type":48,"tag":185,"props":2166,"children":2167},{"class":187,"line":716},[2168],{"type":48,"tag":185,"props":2169,"children":2170},{},[2171],{"type":62,"value":2172},"            options.enableCrashHandler = true\n",{"type":48,"tag":185,"props":2174,"children":2175},{"class":187,"line":725},[2176],{"type":48,"tag":185,"props":2177,"children":2178},{},[2179],{"type":62,"value":2180},"            options.enableAppHangTracking = true\n",{"type":48,"tag":185,"props":2182,"children":2183},{"class":187,"line":808},[2184],{"type":48,"tag":185,"props":2185,"children":2186},{},[2187],{"type":62,"value":2188},"            options.enableReportNonFullyBlockingAppHangs = true\n",{"type":48,"tag":185,"props":2190,"children":2191},{"class":187,"line":816},[2192],{"type":48,"tag":185,"props":2193,"children":2194},{},[2195],{"type":62,"value":2196},"            options.enableWatchdogTerminationTracking = true\n",{"type":48,"tag":185,"props":2198,"children":2199},{"class":187,"line":825},[2200],{"type":48,"tag":185,"props":2201,"children":2202},{},[2203],{"type":62,"value":2204},"            options.attachScreenshot = true\n",{"type":48,"tag":185,"props":2206,"children":2207},{"class":187,"line":857},[2208],{"type":48,"tag":185,"props":2209,"children":2210},{},[2211],{"type":62,"value":2212},"            options.attachViewHierarchy = true\n",{"type":48,"tag":185,"props":2214,"children":2216},{"class":187,"line":2215},21,[2217],{"type":48,"tag":185,"props":2218,"children":2219},{},[2220],{"type":62,"value":2221},"            options.sendDefaultPii = true\n",{"type":48,"tag":185,"props":2223,"children":2225},{"class":187,"line":2224},22,[2226],{"type":48,"tag":185,"props":2227,"children":2228},{"emptyLinePlaceholder":43},[2229],{"type":62,"value":371},{"type":48,"tag":185,"props":2231,"children":2233},{"class":187,"line":2232},23,[2234],{"type":48,"tag":185,"props":2235,"children":2236},{},[2237],{"type":62,"value":2238},"            \u002F\u002F Tracing\n",{"type":48,"tag":185,"props":2240,"children":2242},{"class":187,"line":2241},24,[2243],{"type":48,"tag":185,"props":2244,"children":2245},{},[2246],{"type":62,"value":2247},"            options.tracesSampleRate = 1.0          \u002F\u002F lower to 0.2 in high-traffic production\n",{"type":48,"tag":185,"props":2249,"children":2251},{"class":187,"line":2250},25,[2252],{"type":48,"tag":185,"props":2253,"children":2254},{"emptyLinePlaceholder":43},[2255],{"type":62,"value":371},{"type":48,"tag":185,"props":2257,"children":2259},{"class":187,"line":2258},26,[2260],{"type":48,"tag":185,"props":2261,"children":2262},{},[2263],{"type":62,"value":2264},"            \u002F\u002F Profiling (SDK 9.0.0+ API)\n",{"type":48,"tag":185,"props":2266,"children":2268},{"class":187,"line":2267},27,[2269],{"type":48,"tag":185,"props":2270,"children":2271},{},[2272],{"type":62,"value":2273},"            options.configureProfiling = {\n",{"type":48,"tag":185,"props":2275,"children":2277},{"class":187,"line":2276},28,[2278],{"type":48,"tag":185,"props":2279,"children":2280},{},[2281],{"type":62,"value":2282},"                $0.sessionSampleRate = 1.0\n",{"type":48,"tag":185,"props":2284,"children":2286},{"class":187,"line":2285},29,[2287],{"type":48,"tag":185,"props":2288,"children":2289},{},[2290],{"type":62,"value":2291},"                $0.lifecycle = .trace\n",{"type":48,"tag":185,"props":2293,"children":2294},{"class":187,"line":31},[2295],{"type":48,"tag":185,"props":2296,"children":2297},{},[2298],{"type":62,"value":2299},"            }\n",{"type":48,"tag":185,"props":2301,"children":2303},{"class":187,"line":2302},31,[2304],{"type":48,"tag":185,"props":2305,"children":2306},{"emptyLinePlaceholder":43},[2307],{"type":62,"value":371},{"type":48,"tag":185,"props":2309,"children":2311},{"class":187,"line":2310},32,[2312],{"type":48,"tag":185,"props":2313,"children":2314},{},[2315],{"type":62,"value":2316},"            \u002F\u002F Session Replay. Keep production sampling conservative and verify masking on iOS 26+.\n",{"type":48,"tag":185,"props":2318,"children":2320},{"class":187,"line":2319},33,[2321],{"type":48,"tag":185,"props":2322,"children":2323},{},[2324],{"type":62,"value":2325},"            options.sessionReplay.sessionSampleRate = 0.1\n",{"type":48,"tag":185,"props":2327,"children":2329},{"class":187,"line":2328},34,[2330],{"type":48,"tag":185,"props":2331,"children":2332},{},[2333],{"type":62,"value":2334},"            options.sessionReplay.onErrorSampleRate = 1.0\n",{"type":48,"tag":185,"props":2336,"children":2338},{"class":187,"line":2337},35,[2339],{"type":48,"tag":185,"props":2340,"children":2341},{"emptyLinePlaceholder":43},[2342],{"type":62,"value":371},{"type":48,"tag":185,"props":2344,"children":2346},{"class":187,"line":2345},36,[2347],{"type":48,"tag":185,"props":2348,"children":2349},{},[2350],{"type":62,"value":2351},"            \u002F\u002F Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)\n",{"type":48,"tag":185,"props":2353,"children":2355},{"class":187,"line":2354},37,[2356],{"type":48,"tag":185,"props":2357,"children":2358},{},[2359],{"type":62,"value":2360},"            options.enableLogs = true\n",{"type":48,"tag":185,"props":2362,"children":2364},{"class":187,"line":2363},38,[2365],{"type":48,"tag":185,"props":2366,"children":2367},{"emptyLinePlaceholder":43},[2368],{"type":62,"value":371},{"type":48,"tag":185,"props":2370,"children":2372},{"class":187,"line":2371},39,[2373],{"type":48,"tag":185,"props":2374,"children":2375},{},[2376],{"type":62,"value":2377},"            \u002F\u002F Metrics are enabled by default in SDK 9.12+. Set false only to opt out.\n",{"type":48,"tag":185,"props":2379,"children":2381},{"class":187,"line":2380},40,[2382],{"type":48,"tag":185,"props":2383,"children":2384},{},[2385],{"type":62,"value":2386},"            options.enableMetrics = true\n",{"type":48,"tag":185,"props":2388,"children":2390},{"class":187,"line":2389},41,[2391],{"type":48,"tag":185,"props":2392,"children":2393},{},[2394],{"type":62,"value":2395},"        }\n",{"type":48,"tag":185,"props":2397,"children":2399},{"class":187,"line":2398},42,[2400],{"type":48,"tag":185,"props":2401,"children":2402},{},[2403],{"type":62,"value":2404},"    }\n",{"type":48,"tag":185,"props":2406,"children":2408},{"class":187,"line":2407},43,[2409],{"type":48,"tag":185,"props":2410,"children":2411},{"emptyLinePlaceholder":43},[2412],{"type":62,"value":371},{"type":48,"tag":185,"props":2414,"children":2416},{"class":187,"line":2415},44,[2417],{"type":48,"tag":185,"props":2418,"children":2419},{},[2420],{"type":62,"value":2421},"    var body: some Scene {\n",{"type":48,"tag":185,"props":2423,"children":2425},{"class":187,"line":2424},45,[2426],{"type":48,"tag":185,"props":2427,"children":2428},{},[2429],{"type":62,"value":2430},"        WindowGroup { ContentView() }\n",{"type":48,"tag":185,"props":2432,"children":2434},{"class":187,"line":2433},46,[2435],{"type":48,"tag":185,"props":2436,"children":2437},{},[2438],{"type":62,"value":2404},{"type":48,"tag":185,"props":2440,"children":2442},{"class":187,"line":2441},47,[2443],{"type":48,"tag":185,"props":2444,"children":2445},{},[2446],{"type":62,"value":2447},"}\n",{"type":48,"tag":53,"props":2449,"children":2450},{},[2451],{"type":48,"tag":141,"props":2452,"children":2453},{},[2454],{"type":62,"value":2455},"UIKit — AppDelegate:",{"type":48,"tag":174,"props":2457,"children":2459},{"className":1372,"code":2458,"language":1374,"meta":179,"style":179},"import UIKit\nimport Sentry\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n    func application(\n        _ application: UIApplication,\n        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n    ) -> Bool {\n        SentrySDK.start { options in\n            options.dsn = ProcessInfo.processInfo.environment[\"SENTRY_DSN\"]\n                ?? \"https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\"\n            options.environment = ProcessInfo.processInfo.environment[\"SENTRY_ENVIRONMENT\"]\n                ?? \"production\"\n            \u002F\u002F releaseName defaults to \"\u003Cbundle id>@\u003Cversion>+\u003Cbuild>\"; set only if you need a custom release.\n\n            options.enableCrashHandler = true\n            options.enableAppHangTracking = true\n            options.enableReportNonFullyBlockingAppHangs = true\n            options.enableWatchdogTerminationTracking = true\n            options.attachScreenshot = true\n            options.attachViewHierarchy = true\n            options.sendDefaultPii = true\n\n            options.tracesSampleRate = 1.0\n\n            options.configureProfiling = {\n                $0.sessionSampleRate = 1.0\n                $0.lifecycle = .trace\n            }\n\n            options.sessionReplay.sessionSampleRate = 0.1\n            options.sessionReplay.onErrorSampleRate = 1.0\n\n            \u002F\u002F Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)\n            options.enableLogs = true\n\n            \u002F\u002F Metrics are enabled by default in SDK 9.12+. Set false only to opt out.\n            options.enableMetrics = true\n        }\n        return true\n    }\n}\n",[2460],{"type":48,"tag":113,"props":2461,"children":2462},{"__ignoreMap":179},[2463,2471,2478,2485,2493,2501,2509,2517,2525,2533,2540,2547,2554,2561,2568,2575,2582,2589,2596,2603,2610,2617,2624,2631,2638,2646,2653,2660,2667,2674,2681,2688,2695,2702,2709,2716,2723,2730,2737,2744,2751,2759,2766],{"type":48,"tag":185,"props":2464,"children":2465},{"class":187,"line":188},[2466],{"type":48,"tag":185,"props":2467,"children":2468},{},[2469],{"type":62,"value":2470},"import UIKit\n",{"type":48,"tag":185,"props":2472,"children":2473},{"class":187,"line":198},[2474],{"type":48,"tag":185,"props":2475,"children":2476},{},[2477],{"type":62,"value":2070},{"type":48,"tag":185,"props":2479,"children":2480},{"class":187,"line":236},[2481],{"type":48,"tag":185,"props":2482,"children":2483},{"emptyLinePlaceholder":43},[2484],{"type":62,"value":371},{"type":48,"tag":185,"props":2486,"children":2487},{"class":187,"line":297},[2488],{"type":48,"tag":185,"props":2489,"children":2490},{},[2491],{"type":62,"value":2492},"@UIApplicationMain\n",{"type":48,"tag":185,"props":2494,"children":2495},{"class":187,"line":365},[2496],{"type":48,"tag":185,"props":2497,"children":2498},{},[2499],{"type":62,"value":2500},"class AppDelegate: UIResponder, UIApplicationDelegate {\n",{"type":48,"tag":185,"props":2502,"children":2503},{"class":187,"line":374},[2504],{"type":48,"tag":185,"props":2505,"children":2506},{},[2507],{"type":62,"value":2508},"    func application(\n",{"type":48,"tag":185,"props":2510,"children":2511},{"class":187,"line":383},[2512],{"type":48,"tag":185,"props":2513,"children":2514},{},[2515],{"type":62,"value":2516},"        _ application: UIApplication,\n",{"type":48,"tag":185,"props":2518,"children":2519},{"class":187,"line":451},[2520],{"type":48,"tag":185,"props":2521,"children":2522},{},[2523],{"type":62,"value":2524},"        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n",{"type":48,"tag":185,"props":2526,"children":2527},{"class":187,"line":516},[2528],{"type":48,"tag":185,"props":2529,"children":2530},{},[2531],{"type":62,"value":2532},"    ) -> Bool {\n",{"type":48,"tag":185,"props":2534,"children":2535},{"class":187,"line":524},[2536],{"type":48,"tag":185,"props":2537,"children":2538},{},[2539],{"type":62,"value":2109},{"type":48,"tag":185,"props":2541,"children":2542},{"class":187,"line":533},[2543],{"type":48,"tag":185,"props":2544,"children":2545},{},[2546],{"type":62,"value":2117},{"type":48,"tag":185,"props":2548,"children":2549},{"class":187,"line":608},[2550],{"type":48,"tag":185,"props":2551,"children":2552},{},[2553],{"type":62,"value":2125},{"type":48,"tag":185,"props":2555,"children":2556},{"class":187,"line":668},[2557],{"type":48,"tag":185,"props":2558,"children":2559},{},[2560],{"type":62,"value":2133},{"type":48,"tag":185,"props":2562,"children":2563},{"class":187,"line":708},[2564],{"type":48,"tag":185,"props":2565,"children":2566},{},[2567],{"type":62,"value":2141},{"type":48,"tag":185,"props":2569,"children":2570},{"class":187,"line":716},[2571],{"type":48,"tag":185,"props":2572,"children":2573},{},[2574],{"type":62,"value":2149},{"type":48,"tag":185,"props":2576,"children":2577},{"class":187,"line":725},[2578],{"type":48,"tag":185,"props":2579,"children":2580},{"emptyLinePlaceholder":43},[2581],{"type":62,"value":371},{"type":48,"tag":185,"props":2583,"children":2584},{"class":187,"line":808},[2585],{"type":48,"tag":185,"props":2586,"children":2587},{},[2588],{"type":62,"value":2172},{"type":48,"tag":185,"props":2590,"children":2591},{"class":187,"line":816},[2592],{"type":48,"tag":185,"props":2593,"children":2594},{},[2595],{"type":62,"value":2180},{"type":48,"tag":185,"props":2597,"children":2598},{"class":187,"line":825},[2599],{"type":48,"tag":185,"props":2600,"children":2601},{},[2602],{"type":62,"value":2188},{"type":48,"tag":185,"props":2604,"children":2605},{"class":187,"line":857},[2606],{"type":48,"tag":185,"props":2607,"children":2608},{},[2609],{"type":62,"value":2196},{"type":48,"tag":185,"props":2611,"children":2612},{"class":187,"line":2215},[2613],{"type":48,"tag":185,"props":2614,"children":2615},{},[2616],{"type":62,"value":2204},{"type":48,"tag":185,"props":2618,"children":2619},{"class":187,"line":2224},[2620],{"type":48,"tag":185,"props":2621,"children":2622},{},[2623],{"type":62,"value":2212},{"type":48,"tag":185,"props":2625,"children":2626},{"class":187,"line":2232},[2627],{"type":48,"tag":185,"props":2628,"children":2629},{},[2630],{"type":62,"value":2221},{"type":48,"tag":185,"props":2632,"children":2633},{"class":187,"line":2241},[2634],{"type":48,"tag":185,"props":2635,"children":2636},{"emptyLinePlaceholder":43},[2637],{"type":62,"value":371},{"type":48,"tag":185,"props":2639,"children":2640},{"class":187,"line":2250},[2641],{"type":48,"tag":185,"props":2642,"children":2643},{},[2644],{"type":62,"value":2645},"            options.tracesSampleRate = 1.0\n",{"type":48,"tag":185,"props":2647,"children":2648},{"class":187,"line":2258},[2649],{"type":48,"tag":185,"props":2650,"children":2651},{"emptyLinePlaceholder":43},[2652],{"type":62,"value":371},{"type":48,"tag":185,"props":2654,"children":2655},{"class":187,"line":2267},[2656],{"type":48,"tag":185,"props":2657,"children":2658},{},[2659],{"type":62,"value":2273},{"type":48,"tag":185,"props":2661,"children":2662},{"class":187,"line":2276},[2663],{"type":48,"tag":185,"props":2664,"children":2665},{},[2666],{"type":62,"value":2282},{"type":48,"tag":185,"props":2668,"children":2669},{"class":187,"line":2285},[2670],{"type":48,"tag":185,"props":2671,"children":2672},{},[2673],{"type":62,"value":2291},{"type":48,"tag":185,"props":2675,"children":2676},{"class":187,"line":31},[2677],{"type":48,"tag":185,"props":2678,"children":2679},{},[2680],{"type":62,"value":2299},{"type":48,"tag":185,"props":2682,"children":2683},{"class":187,"line":2302},[2684],{"type":48,"tag":185,"props":2685,"children":2686},{"emptyLinePlaceholder":43},[2687],{"type":62,"value":371},{"type":48,"tag":185,"props":2689,"children":2690},{"class":187,"line":2310},[2691],{"type":48,"tag":185,"props":2692,"children":2693},{},[2694],{"type":62,"value":2325},{"type":48,"tag":185,"props":2696,"children":2697},{"class":187,"line":2319},[2698],{"type":48,"tag":185,"props":2699,"children":2700},{},[2701],{"type":62,"value":2334},{"type":48,"tag":185,"props":2703,"children":2704},{"class":187,"line":2328},[2705],{"type":48,"tag":185,"props":2706,"children":2707},{"emptyLinePlaceholder":43},[2708],{"type":62,"value":371},{"type":48,"tag":185,"props":2710,"children":2711},{"class":187,"line":2337},[2712],{"type":48,"tag":185,"props":2713,"children":2714},{},[2715],{"type":62,"value":2351},{"type":48,"tag":185,"props":2717,"children":2718},{"class":187,"line":2345},[2719],{"type":48,"tag":185,"props":2720,"children":2721},{},[2722],{"type":62,"value":2360},{"type":48,"tag":185,"props":2724,"children":2725},{"class":187,"line":2354},[2726],{"type":48,"tag":185,"props":2727,"children":2728},{"emptyLinePlaceholder":43},[2729],{"type":62,"value":371},{"type":48,"tag":185,"props":2731,"children":2732},{"class":187,"line":2363},[2733],{"type":48,"tag":185,"props":2734,"children":2735},{},[2736],{"type":62,"value":2377},{"type":48,"tag":185,"props":2738,"children":2739},{"class":187,"line":2371},[2740],{"type":48,"tag":185,"props":2741,"children":2742},{},[2743],{"type":62,"value":2386},{"type":48,"tag":185,"props":2745,"children":2746},{"class":187,"line":2380},[2747],{"type":48,"tag":185,"props":2748,"children":2749},{},[2750],{"type":62,"value":2395},{"type":48,"tag":185,"props":2752,"children":2753},{"class":187,"line":2389},[2754],{"type":48,"tag":185,"props":2755,"children":2756},{},[2757],{"type":62,"value":2758},"        return true\n",{"type":48,"tag":185,"props":2760,"children":2761},{"class":187,"line":2398},[2762],{"type":48,"tag":185,"props":2763,"children":2764},{},[2765],{"type":62,"value":2404},{"type":48,"tag":185,"props":2767,"children":2768},{"class":187,"line":2407},[2769],{"type":48,"tag":185,"props":2770,"children":2771},{},[2772],{"type":62,"value":2447},{"type":48,"tag":49,"props":2774,"children":2775},{},[2776],{"type":48,"tag":53,"props":2777,"children":2778},{},[2779,2781,2786],{"type":62,"value":2780},"Warning: SDK initialization must occur on the ",{"type":48,"tag":141,"props":2782,"children":2783},{},[2784],{"type":62,"value":2785},"main thread",{"type":62,"value":1333},{"type":48,"tag":159,"props":2788,"children":2789},{},[],{"type":48,"tag":1276,"props":2791,"children":2793},{"id":2792},"for-each-agreed-feature",[2794],{"type":62,"value":2795},"For Each Agreed Feature",{"type":48,"tag":53,"props":2797,"children":2798},{},[2799],{"type":62,"value":2800},"Walk through features one at a time. Load the reference file for each, follow its steps, and verify before moving to the next:",{"type":48,"tag":1126,"props":2802,"children":2803},{},[2804,2824],{"type":48,"tag":1130,"props":2805,"children":2806},{},[2807],{"type":48,"tag":1134,"props":2808,"children":2809},{},[2810,2814,2819],{"type":48,"tag":1138,"props":2811,"children":2812},{},[2813],{"type":62,"value":1142},{"type":48,"tag":1138,"props":2815,"children":2816},{},[2817],{"type":62,"value":2818},"Reference file",{"type":48,"tag":1138,"props":2820,"children":2821},{},[2822],{"type":62,"value":2823},"Load when...",{"type":48,"tag":1149,"props":2825,"children":2826},{},[2827,2848,2869,2890,2911,2932,2953],{"type":48,"tag":1134,"props":2828,"children":2829},{},[2830,2834,2843],{"type":48,"tag":1156,"props":2831,"children":2832},{},[2833],{"type":62,"value":1016},{"type":48,"tag":1156,"props":2835,"children":2836},{},[2837],{"type":48,"tag":113,"props":2838,"children":2840},{"className":2839},[],[2841],{"type":62,"value":2842},"${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md",{"type":48,"tag":1156,"props":2844,"children":2845},{},[2846],{"type":62,"value":2847},"Always (baseline)",{"type":48,"tag":1134,"props":2849,"children":2850},{},[2851,2855,2864],{"type":48,"tag":1156,"props":2852,"children":2853},{},[2854],{"type":62,"value":1026},{"type":48,"tag":1156,"props":2856,"children":2857},{},[2858],{"type":48,"tag":113,"props":2859,"children":2861},{"className":2860},[],[2862],{"type":62,"value":2863},"${SKILL_ROOT}\u002Freferences\u002Ftracing.md",{"type":48,"tag":1156,"props":2865,"children":2866},{},[2867],{"type":62,"value":2868},"App launch, network, UIViewController perf",{"type":48,"tag":1134,"props":2870,"children":2871},{},[2872,2876,2885],{"type":48,"tag":1156,"props":2873,"children":2874},{},[2875],{"type":62,"value":1036},{"type":48,"tag":1156,"props":2877,"children":2878},{},[2879],{"type":48,"tag":113,"props":2880,"children":2882},{"className":2881},[],[2883],{"type":62,"value":2884},"${SKILL_ROOT}\u002Freferences\u002Fprofiling.md",{"type":48,"tag":1156,"props":2886,"children":2887},{},[2888],{"type":62,"value":2889},"Production perf-sensitive apps",{"type":48,"tag":1134,"props":2891,"children":2892},{},[2893,2897,2906],{"type":48,"tag":1156,"props":2894,"children":2895},{},[2896],{"type":62,"value":1063},{"type":48,"tag":1156,"props":2898,"children":2899},{},[2900],{"type":48,"tag":113,"props":2901,"children":2903},{"className":2902},[],[2904],{"type":62,"value":2905},"${SKILL_ROOT}\u002Freferences\u002Fsession-replay.md",{"type":48,"tag":1156,"props":2907,"children":2908},{},[2909],{"type":62,"value":2910},"User-facing iOS apps; tvOS only with caveat",{"type":48,"tag":1134,"props":2912,"children":2913},{},[2914,2918,2927],{"type":48,"tag":1156,"props":2915,"children":2916},{},[2917],{"type":62,"value":1073},{"type":48,"tag":1156,"props":2919,"children":2920},{},[2921],{"type":48,"tag":113,"props":2922,"children":2924},{"className":2923},[],[2925],{"type":62,"value":2926},"${SKILL_ROOT}\u002Freferences\u002Flogging.md",{"type":48,"tag":1156,"props":2928,"children":2929},{},[2930],{"type":62,"value":2931},"Structured log capture needed",{"type":48,"tag":1134,"props":2933,"children":2934},{},[2935,2939,2948],{"type":48,"tag":1156,"props":2936,"children":2937},{},[2938],{"type":62,"value":1083},{"type":48,"tag":1156,"props":2940,"children":2941},{},[2942],{"type":48,"tag":113,"props":2943,"children":2945},{"className":2944},[],[2946],{"type":62,"value":2947},"${SKILL_ROOT}\u002Freferences\u002Fmetrics.md",{"type":48,"tag":1156,"props":2949,"children":2950},{},[2951],{"type":62,"value":2952},"Aggregate counters, gauges, distributions",{"type":48,"tag":1134,"props":2954,"children":2955},{},[2956,2960,2969],{"type":48,"tag":1156,"props":2957,"children":2958},{},[2959],{"type":62,"value":1093},{"type":48,"tag":1156,"props":2961,"children":2962},{},[2963],{"type":48,"tag":113,"props":2964,"children":2966},{"className":2965},[],[2967],{"type":62,"value":2968},"${SKILL_ROOT}\u002Freferences\u002Fuser-feedback.md",{"type":48,"tag":1156,"props":2970,"children":2971},{},[2972],{"type":62,"value":2973},"In-app bug reporting wanted",{"type":48,"tag":53,"props":2975,"children":2976},{},[2977,2979,2985],{"type":62,"value":2978},"For each feature: ",{"type":48,"tag":113,"props":2980,"children":2982},{"className":2981},[],[2983],{"type":62,"value":2984},"Read ${SKILL_ROOT}\u002Freferences\u002F\u003Cfeature>.md",{"type":62,"value":2986},", follow steps exactly, verify it works.",{"type":48,"tag":159,"props":2988,"children":2989},{},[],{"type":48,"tag":86,"props":2991,"children":2993},{"id":2992},"configuration-reference",[2994],{"type":62,"value":2995},"Configuration Reference",{"type":48,"tag":1276,"props":2997,"children":2999},{"id":2998},"key-sentryoptions-fields",[3000,3002,3007],{"type":62,"value":3001},"Key ",{"type":48,"tag":113,"props":3003,"children":3005},{"className":3004},[],[3006],{"type":62,"value":1964},{"type":62,"value":3008}," Fields",{"type":48,"tag":1126,"props":3010,"children":3011},{},[3012,3038],{"type":48,"tag":1130,"props":3013,"children":3014},{},[3015],{"type":48,"tag":1134,"props":3016,"children":3017},{},[3018,3023,3028,3033],{"type":48,"tag":1138,"props":3019,"children":3020},{},[3021],{"type":62,"value":3022},"Option",{"type":48,"tag":1138,"props":3024,"children":3025},{},[3026],{"type":62,"value":3027},"Type",{"type":48,"tag":1138,"props":3029,"children":3030},{},[3031],{"type":62,"value":3032},"Default",{"type":48,"tag":1138,"props":3034,"children":3035},{},[3036],{"type":62,"value":3037},"Purpose",{"type":48,"tag":1149,"props":3039,"children":3040},{},[3041,3083,3123,3159,3199,3232,3266,3299,3332,3367,3400,3433,3466,3528,3562,3595,3634,3667,3700,3727,3762,3796,3829,3862,3903,3951,3984],{"type":48,"tag":1134,"props":3042,"children":3043},{},[3044,3052,3061,3070],{"type":48,"tag":1156,"props":3045,"children":3046},{},[3047],{"type":48,"tag":113,"props":3048,"children":3050},{"className":3049},[],[3051],{"type":62,"value":2037},{"type":48,"tag":1156,"props":3053,"children":3054},{},[3055],{"type":48,"tag":113,"props":3056,"children":3058},{"className":3057},[],[3059],{"type":62,"value":3060},"String?",{"type":48,"tag":1156,"props":3062,"children":3063},{},[3064],{"type":48,"tag":113,"props":3065,"children":3067},{"className":3066},[],[3068],{"type":62,"value":3069},"nil",{"type":48,"tag":1156,"props":3071,"children":3072},{},[3073,3075,3081],{"type":62,"value":3074},"SDK disabled if empty; macOS can read ",{"type":48,"tag":113,"props":3076,"children":3078},{"className":3077},[],[3079],{"type":62,"value":3080},"SENTRY_DSN",{"type":62,"value":3082},", other Apple platforms must set explicitly",{"type":48,"tag":1134,"props":3084,"children":3085},{},[3086,3095,3104,3113],{"type":48,"tag":1156,"props":3087,"children":3088},{},[3089],{"type":48,"tag":113,"props":3090,"children":3092},{"className":3091},[],[3093],{"type":62,"value":3094},"environment",{"type":48,"tag":1156,"props":3096,"children":3097},{},[3098],{"type":48,"tag":113,"props":3099,"children":3101},{"className":3100},[],[3102],{"type":62,"value":3103},"String",{"type":48,"tag":1156,"props":3105,"children":3106},{},[3107],{"type":48,"tag":113,"props":3108,"children":3110},{"className":3109},[],[3111],{"type":62,"value":3112},"\"production\"",{"type":48,"tag":1156,"props":3114,"children":3115},{},[3116,3118],{"type":62,"value":3117},"e.g., ",{"type":48,"tag":113,"props":3119,"children":3121},{"className":3120},[],[3122],{"type":62,"value":3112},{"type":48,"tag":1134,"props":3124,"children":3125},{},[3126,3135,3143,3148],{"type":48,"tag":1156,"props":3127,"children":3128},{},[3129],{"type":48,"tag":113,"props":3130,"children":3132},{"className":3131},[],[3133],{"type":62,"value":3134},"releaseName",{"type":48,"tag":1156,"props":3136,"children":3137},{},[3138],{"type":48,"tag":113,"props":3139,"children":3141},{"className":3140},[],[3142],{"type":62,"value":3060},{"type":48,"tag":1156,"props":3144,"children":3145},{},[3146],{"type":62,"value":3147},"bundle-derived",{"type":48,"tag":1156,"props":3149,"children":3150},{},[3151,3153],{"type":62,"value":3152},"Defaults to ",{"type":48,"tag":113,"props":3154,"children":3156},{"className":3155},[],[3157],{"type":62,"value":3158},"\u003Cbundle id>@\u003Cversion>+\u003Cbuild>",{"type":48,"tag":1134,"props":3160,"children":3161},{},[3162,3171,3180,3189],{"type":48,"tag":1156,"props":3163,"children":3164},{},[3165],{"type":48,"tag":113,"props":3166,"children":3168},{"className":3167},[],[3169],{"type":62,"value":3170},"debug",{"type":48,"tag":1156,"props":3172,"children":3173},{},[3174],{"type":48,"tag":113,"props":3175,"children":3177},{"className":3176},[],[3178],{"type":62,"value":3179},"Bool",{"type":48,"tag":1156,"props":3181,"children":3182},{},[3183],{"type":48,"tag":113,"props":3184,"children":3186},{"className":3185},[],[3187],{"type":62,"value":3188},"false",{"type":48,"tag":1156,"props":3190,"children":3191},{},[3192,3194],{"type":62,"value":3193},"Verbose SDK output — ",{"type":48,"tag":141,"props":3195,"children":3196},{},[3197],{"type":62,"value":3198},"disable in production",{"type":48,"tag":1134,"props":3200,"children":3201},{},[3202,3211,3219,3227],{"type":48,"tag":1156,"props":3203,"children":3204},{},[3205],{"type":48,"tag":113,"props":3206,"children":3208},{"className":3207},[],[3209],{"type":62,"value":3210},"sendDefaultPii",{"type":48,"tag":1156,"props":3212,"children":3213},{},[3214],{"type":48,"tag":113,"props":3215,"children":3217},{"className":3216},[],[3218],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3220,"children":3221},{},[3222],{"type":48,"tag":113,"props":3223,"children":3225},{"className":3224},[],[3226],{"type":62,"value":3188},{"type":48,"tag":1156,"props":3228,"children":3229},{},[3230],{"type":62,"value":3231},"Include IP, user info from active integrations",{"type":48,"tag":1134,"props":3233,"children":3234},{},[3235,3244,3252,3261],{"type":48,"tag":1156,"props":3236,"children":3237},{},[3238],{"type":48,"tag":113,"props":3239,"children":3241},{"className":3240},[],[3242],{"type":62,"value":3243},"enableCrashHandler",{"type":48,"tag":1156,"props":3245,"children":3246},{},[3247],{"type":48,"tag":113,"props":3248,"children":3250},{"className":3249},[],[3251],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3253,"children":3254},{},[3255],{"type":48,"tag":113,"props":3256,"children":3258},{"className":3257},[],[3259],{"type":62,"value":3260},"true",{"type":48,"tag":1156,"props":3262,"children":3263},{},[3264],{"type":62,"value":3265},"Master switch for crash reporting",{"type":48,"tag":1134,"props":3267,"children":3268},{},[3269,3278,3286,3294],{"type":48,"tag":1156,"props":3270,"children":3271},{},[3272],{"type":48,"tag":113,"props":3273,"children":3275},{"className":3274},[],[3276],{"type":62,"value":3277},"enableAppHangTracking",{"type":48,"tag":1156,"props":3279,"children":3280},{},[3281],{"type":48,"tag":113,"props":3282,"children":3284},{"className":3283},[],[3285],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3287,"children":3288},{},[3289],{"type":48,"tag":113,"props":3290,"children":3292},{"className":3291},[],[3293],{"type":62,"value":3260},{"type":48,"tag":1156,"props":3295,"children":3296},{},[3297],{"type":62,"value":3298},"Master switch for app hang tracking",{"type":48,"tag":1134,"props":3300,"children":3301},{},[3302,3311,3319,3327],{"type":48,"tag":1156,"props":3303,"children":3304},{},[3305],{"type":48,"tag":113,"props":3306,"children":3308},{"className":3307},[],[3309],{"type":62,"value":3310},"enableReportNonFullyBlockingAppHangs",{"type":48,"tag":1156,"props":3312,"children":3313},{},[3314],{"type":48,"tag":113,"props":3315,"children":3317},{"className":3316},[],[3318],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3320,"children":3321},{},[3322],{"type":48,"tag":113,"props":3323,"children":3325},{"className":3324},[],[3326],{"type":62,"value":3260},{"type":48,"tag":1156,"props":3328,"children":3329},{},[3330],{"type":62,"value":3331},"Report non-fully-blocking hangs on supported UI platforms",{"type":48,"tag":1134,"props":3333,"children":3334},{},[3335,3344,3353,3362],{"type":48,"tag":1156,"props":3336,"children":3337},{},[3338],{"type":48,"tag":113,"props":3339,"children":3341},{"className":3340},[],[3342],{"type":62,"value":3343},"appHangTimeoutInterval",{"type":48,"tag":1156,"props":3345,"children":3346},{},[3347],{"type":48,"tag":113,"props":3348,"children":3350},{"className":3349},[],[3351],{"type":62,"value":3352},"Double",{"type":48,"tag":1156,"props":3354,"children":3355},{},[3356],{"type":48,"tag":113,"props":3357,"children":3359},{"className":3358},[],[3360],{"type":62,"value":3361},"2.0",{"type":48,"tag":1156,"props":3363,"children":3364},{},[3365],{"type":62,"value":3366},"Seconds before classifying as hang",{"type":48,"tag":1134,"props":3368,"children":3369},{},[3370,3379,3387,3395],{"type":48,"tag":1156,"props":3371,"children":3372},{},[3373],{"type":48,"tag":113,"props":3374,"children":3376},{"className":3375},[],[3377],{"type":62,"value":3378},"enableWatchdogTerminationTracking",{"type":48,"tag":1156,"props":3380,"children":3381},{},[3382],{"type":48,"tag":113,"props":3383,"children":3385},{"className":3384},[],[3386],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3388,"children":3389},{},[3390],{"type":48,"tag":113,"props":3391,"children":3393},{"className":3392},[],[3394],{"type":62,"value":3260},{"type":48,"tag":1156,"props":3396,"children":3397},{},[3398],{"type":62,"value":3399},"Track watchdog kills (iOS, tvOS, Mac Catalyst)",{"type":48,"tag":1134,"props":3401,"children":3402},{},[3403,3412,3420,3428],{"type":48,"tag":1156,"props":3404,"children":3405},{},[3406],{"type":48,"tag":113,"props":3407,"children":3409},{"className":3408},[],[3410],{"type":62,"value":3411},"attachScreenshot",{"type":48,"tag":1156,"props":3413,"children":3414},{},[3415],{"type":48,"tag":113,"props":3416,"children":3418},{"className":3417},[],[3419],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3421,"children":3422},{},[3423],{"type":48,"tag":113,"props":3424,"children":3426},{"className":3425},[],[3427],{"type":62,"value":3188},{"type":48,"tag":1156,"props":3429,"children":3430},{},[3431],{"type":62,"value":3432},"Capture screenshot on error",{"type":48,"tag":1134,"props":3434,"children":3435},{},[3436,3445,3453,3461],{"type":48,"tag":1156,"props":3437,"children":3438},{},[3439],{"type":48,"tag":113,"props":3440,"children":3442},{"className":3441},[],[3443],{"type":62,"value":3444},"attachViewHierarchy",{"type":48,"tag":1156,"props":3446,"children":3447},{},[3448],{"type":48,"tag":113,"props":3449,"children":3451},{"className":3450},[],[3452],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3454,"children":3455},{},[3456],{"type":48,"tag":113,"props":3457,"children":3459},{"className":3458},[],[3460],{"type":62,"value":3188},{"type":48,"tag":1156,"props":3462,"children":3463},{},[3464],{"type":62,"value":3465},"Capture view hierarchy on error",{"type":48,"tag":1134,"props":3467,"children":3468},{},[3469,3478,3487,3495],{"type":48,"tag":1156,"props":3470,"children":3471},{},[3472],{"type":48,"tag":113,"props":3473,"children":3475},{"className":3474},[],[3476],{"type":62,"value":3477},"tracesSampleRate",{"type":48,"tag":1156,"props":3479,"children":3480},{},[3481],{"type":48,"tag":113,"props":3482,"children":3484},{"className":3483},[],[3485],{"type":62,"value":3486},"NSNumber?",{"type":48,"tag":1156,"props":3488,"children":3489},{},[3490],{"type":48,"tag":113,"props":3491,"children":3493},{"className":3492},[],[3494],{"type":62,"value":3069},{"type":48,"tag":1156,"props":3496,"children":3497},{},[3498,3500,3505,3507,3512,3514,3520,3521,3527],{"type":62,"value":3499},"Transaction sample rate (",{"type":48,"tag":113,"props":3501,"children":3503},{"className":3502},[],[3504],{"type":62,"value":3069},{"type":62,"value":3506}," = tracing disabled); Swift auto-boxes ",{"type":48,"tag":113,"props":3508,"children":3510},{"className":3509},[],[3511],{"type":62,"value":3352},{"type":62,"value":3513}," literals (e.g. ",{"type":48,"tag":113,"props":3515,"children":3517},{"className":3516},[],[3518],{"type":62,"value":3519},"1.0",{"type":62,"value":1951},{"type":48,"tag":113,"props":3522,"children":3524},{"className":3523},[],[3525],{"type":62,"value":3526},"NSNumber",{"type":62,"value":1973},{"type":48,"tag":1134,"props":3529,"children":3530},{},[3531,3540,3549,3557],{"type":48,"tag":1156,"props":3532,"children":3533},{},[3534],{"type":48,"tag":113,"props":3535,"children":3537},{"className":3536},[],[3538],{"type":62,"value":3539},"tracesSampler",{"type":48,"tag":1156,"props":3541,"children":3542},{},[3543],{"type":48,"tag":113,"props":3544,"children":3546},{"className":3545},[],[3547],{"type":62,"value":3548},"Closure",{"type":48,"tag":1156,"props":3550,"children":3551},{},[3552],{"type":48,"tag":113,"props":3553,"children":3555},{"className":3554},[],[3556],{"type":62,"value":3069},{"type":48,"tag":1156,"props":3558,"children":3559},{},[3560],{"type":62,"value":3561},"Dynamic per-transaction sampling (overrides rate)",{"type":48,"tag":1134,"props":3563,"children":3564},{},[3565,3574,3582,3590],{"type":48,"tag":1156,"props":3566,"children":3567},{},[3568],{"type":48,"tag":113,"props":3569,"children":3571},{"className":3570},[],[3572],{"type":62,"value":3573},"enableAutoPerformanceTracing",{"type":48,"tag":1156,"props":3575,"children":3576},{},[3577],{"type":48,"tag":113,"props":3578,"children":3580},{"className":3579},[],[3581],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3583,"children":3584},{},[3585],{"type":48,"tag":113,"props":3586,"children":3588},{"className":3587},[],[3589],{"type":62,"value":3260},{"type":48,"tag":1156,"props":3591,"children":3592},{},[3593],{"type":62,"value":3594},"Master switch for auto-instrumentation",{"type":48,"tag":1134,"props":3596,"children":3597},{},[3598,3607,3616,3621],{"type":48,"tag":1156,"props":3599,"children":3600},{},[3601],{"type":48,"tag":113,"props":3602,"children":3604},{"className":3603},[],[3605],{"type":62,"value":3606},"tracePropagationTargets",{"type":48,"tag":1156,"props":3608,"children":3609},{},[3610],{"type":48,"tag":113,"props":3611,"children":3613},{"className":3612},[],[3614],{"type":62,"value":3615},"[Any]",{"type":48,"tag":1156,"props":3617,"children":3618},{},[3619],{"type":62,"value":3620},"all requests",{"type":48,"tag":1156,"props":3622,"children":3623},{},[3624,3626,3632],{"type":62,"value":3625},"Strings or ",{"type":48,"tag":113,"props":3627,"children":3629},{"className":3628},[],[3630],{"type":62,"value":3631},"NSRegularExpression",{"type":62,"value":3633}," values that receive distributed trace headers",{"type":48,"tag":1134,"props":3635,"children":3636},{},[3637,3646,3654,3662],{"type":48,"tag":1156,"props":3638,"children":3639},{},[3640],{"type":48,"tag":113,"props":3641,"children":3643},{"className":3642},[],[3644],{"type":62,"value":3645},"enableCaptureFailedRequests",{"type":48,"tag":1156,"props":3647,"children":3648},{},[3649],{"type":48,"tag":113,"props":3650,"children":3652},{"className":3651},[],[3653],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3655,"children":3656},{},[3657],{"type":48,"tag":113,"props":3658,"children":3660},{"className":3659},[],[3661],{"type":62,"value":3260},{"type":48,"tag":1156,"props":3663,"children":3664},{},[3665],{"type":62,"value":3666},"Auto-capture HTTP 5xx errors as events",{"type":48,"tag":1134,"props":3668,"children":3669},{},[3670,3679,3687,3695],{"type":48,"tag":1156,"props":3671,"children":3672},{},[3673],{"type":48,"tag":113,"props":3674,"children":3676},{"className":3675},[],[3677],{"type":62,"value":3678},"enableNetworkBreadcrumbs",{"type":48,"tag":1156,"props":3680,"children":3681},{},[3682],{"type":48,"tag":113,"props":3683,"children":3685},{"className":3684},[],[3686],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3688,"children":3689},{},[3690],{"type":48,"tag":113,"props":3691,"children":3693},{"className":3692},[],[3694],{"type":62,"value":3260},{"type":48,"tag":1156,"props":3696,"children":3697},{},[3698],{"type":62,"value":3699},"Breadcrumbs for outgoing HTTP requests",{"type":48,"tag":1134,"props":3701,"children":3702},{},[3703,3712,3717,3722],{"type":48,"tag":1156,"props":3704,"children":3705},{},[3706],{"type":48,"tag":113,"props":3707,"children":3709},{"className":3708},[],[3710],{"type":62,"value":3711},"add(inAppInclude:)",{"type":48,"tag":1156,"props":3713,"children":3714},{},[3715],{"type":62,"value":3716},"Method",{"type":48,"tag":1156,"props":3718,"children":3719},{},[3720],{"type":62,"value":3721},"bundle executable",{"type":48,"tag":1156,"props":3723,"children":3724},{},[3725],{"type":62,"value":3726},"Add module prefixes treated as \"in-app\" code",{"type":48,"tag":1134,"props":3728,"children":3729},{},[3730,3739,3748,3757],{"type":48,"tag":1156,"props":3731,"children":3732},{},[3733],{"type":48,"tag":113,"props":3734,"children":3736},{"className":3735},[],[3737],{"type":62,"value":3738},"maxBreadcrumbs",{"type":48,"tag":1156,"props":3740,"children":3741},{},[3742],{"type":48,"tag":113,"props":3743,"children":3745},{"className":3744},[],[3746],{"type":62,"value":3747},"Int",{"type":48,"tag":1156,"props":3749,"children":3750},{},[3751],{"type":48,"tag":113,"props":3752,"children":3754},{"className":3753},[],[3755],{"type":62,"value":3756},"100",{"type":48,"tag":1156,"props":3758,"children":3759},{},[3760],{"type":62,"value":3761},"Max breadcrumbs per event",{"type":48,"tag":1134,"props":3763,"children":3764},{},[3765,3774,3783,3791],{"type":48,"tag":1156,"props":3766,"children":3767},{},[3768],{"type":48,"tag":113,"props":3769,"children":3771},{"className":3770},[],[3772],{"type":62,"value":3773},"sampleRate",{"type":48,"tag":1156,"props":3775,"children":3776},{},[3777],{"type":48,"tag":113,"props":3778,"children":3780},{"className":3779},[],[3781],{"type":62,"value":3782},"Float",{"type":48,"tag":1156,"props":3784,"children":3785},{},[3786],{"type":48,"tag":113,"props":3787,"children":3789},{"className":3788},[],[3790],{"type":62,"value":3519},{"type":48,"tag":1156,"props":3792,"children":3793},{},[3794],{"type":62,"value":3795},"Error event sample rate",{"type":48,"tag":1134,"props":3797,"children":3798},{},[3799,3808,3816,3824],{"type":48,"tag":1156,"props":3800,"children":3801},{},[3802],{"type":48,"tag":113,"props":3803,"children":3805},{"className":3804},[],[3806],{"type":62,"value":3807},"beforeSend",{"type":48,"tag":1156,"props":3809,"children":3810},{},[3811],{"type":48,"tag":113,"props":3812,"children":3814},{"className":3813},[],[3815],{"type":62,"value":3548},{"type":48,"tag":1156,"props":3817,"children":3818},{},[3819],{"type":48,"tag":113,"props":3820,"children":3822},{"className":3821},[],[3823],{"type":62,"value":3069},{"type":48,"tag":1156,"props":3825,"children":3826},{},[3827],{"type":62,"value":3828},"Hook to mutate\u002Fdrop error events",{"type":48,"tag":1134,"props":3830,"children":3831},{},[3832,3841,3849,3857],{"type":48,"tag":1156,"props":3833,"children":3834},{},[3835],{"type":48,"tag":113,"props":3836,"children":3838},{"className":3837},[],[3839],{"type":62,"value":3840},"onLastRunStatusDetermined",{"type":48,"tag":1156,"props":3842,"children":3843},{},[3844],{"type":48,"tag":113,"props":3845,"children":3847},{"className":3846},[],[3848],{"type":62,"value":3548},{"type":48,"tag":1156,"props":3850,"children":3851},{},[3852],{"type":48,"tag":113,"props":3853,"children":3855},{"className":3854},[],[3856],{"type":62,"value":3069},{"type":48,"tag":1156,"props":3858,"children":3859},{},[3860],{"type":62,"value":3861},"Called after SDK determines previous launch crash status",{"type":48,"tag":1134,"props":3863,"children":3864},{},[3865,3874,3882,3890],{"type":48,"tag":1156,"props":3866,"children":3867},{},[3868],{"type":48,"tag":113,"props":3869,"children":3871},{"className":3870},[],[3872],{"type":62,"value":3873},"strictTraceContinuation",{"type":48,"tag":1156,"props":3875,"children":3876},{},[3877],{"type":48,"tag":113,"props":3878,"children":3880},{"className":3879},[],[3881],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3883,"children":3884},{},[3885],{"type":48,"tag":113,"props":3886,"children":3888},{"className":3887},[],[3889],{"type":62,"value":3188},{"type":48,"tag":1156,"props":3891,"children":3892},{},[3893,3895,3901],{"type":62,"value":3894},"Reject incoming traces from other orgs; validates ",{"type":48,"tag":113,"props":3896,"children":3898},{"className":3897},[],[3899],{"type":62,"value":3900},"sentry-org_id",{"type":62,"value":3902}," in baggage headers (sentry-cocoa ≥9.10.0)",{"type":48,"tag":1134,"props":3904,"children":3905},{},[3906,3915,3923,3931],{"type":48,"tag":1156,"props":3907,"children":3908},{},[3909],{"type":48,"tag":113,"props":3910,"children":3912},{"className":3911},[],[3913],{"type":62,"value":3914},"orgId",{"type":48,"tag":1156,"props":3916,"children":3917},{},[3918],{"type":48,"tag":113,"props":3919,"children":3921},{"className":3920},[],[3922],{"type":62,"value":3060},{"type":48,"tag":1156,"props":3924,"children":3925},{},[3926],{"type":48,"tag":113,"props":3927,"children":3929},{"className":3928},[],[3930],{"type":62,"value":3069},{"type":48,"tag":1156,"props":3932,"children":3933},{},[3934,3936,3942,3943,3949],{"type":62,"value":3935},"Organization ID for strict trace validation; auto-parsed from DSN host (e.g. ",{"type":48,"tag":113,"props":3937,"children":3939},{"className":3938},[],[3940],{"type":62,"value":3941},"o123.ingest.sentry.io",{"type":62,"value":1951},{"type":48,"tag":113,"props":3944,"children":3946},{"className":3945},[],[3947],{"type":62,"value":3948},"\"123\"",{"type":62,"value":3950},") if not set explicitly",{"type":48,"tag":1134,"props":3952,"children":3953},{},[3954,3963,3971,3979],{"type":48,"tag":1156,"props":3955,"children":3956},{},[3957],{"type":48,"tag":113,"props":3958,"children":3960},{"className":3959},[],[3961],{"type":62,"value":3962},"enableLogs",{"type":48,"tag":1156,"props":3964,"children":3965},{},[3966],{"type":48,"tag":113,"props":3967,"children":3969},{"className":3968},[],[3970],{"type":62,"value":3179},{"type":48,"tag":1156,"props":3972,"children":3973},{},[3974],{"type":48,"tag":113,"props":3975,"children":3977},{"className":3976},[],[3978],{"type":62,"value":3188},{"type":48,"tag":1156,"props":3980,"children":3981},{},[3982],{"type":62,"value":3983},"Enable structured logs",{"type":48,"tag":1134,"props":3985,"children":3986},{},[3987,3996,4004,4012],{"type":48,"tag":1156,"props":3988,"children":3989},{},[3990],{"type":48,"tag":113,"props":3991,"children":3993},{"className":3992},[],[3994],{"type":62,"value":3995},"enableMetrics",{"type":48,"tag":1156,"props":3997,"children":3998},{},[3999],{"type":48,"tag":113,"props":4000,"children":4002},{"className":4001},[],[4003],{"type":62,"value":3179},{"type":48,"tag":1156,"props":4005,"children":4006},{},[4007],{"type":48,"tag":113,"props":4008,"children":4010},{"className":4009},[],[4011],{"type":62,"value":3260},{"type":48,"tag":1156,"props":4013,"children":4014},{},[4015],{"type":62,"value":4016},"Enable Swift Metrics API (SDK 9.12+)",{"type":48,"tag":1276,"props":4018,"children":4020},{"id":4019},"environment-variables",[4021],{"type":62,"value":4022},"Environment Variables",{"type":48,"tag":1126,"props":4024,"children":4025},{},[4026,4046],{"type":48,"tag":1130,"props":4027,"children":4028},{},[4029],{"type":48,"tag":1134,"props":4030,"children":4031},{},[4032,4037,4042],{"type":48,"tag":1138,"props":4033,"children":4034},{},[4035],{"type":62,"value":4036},"Variable",{"type":48,"tag":1138,"props":4038,"children":4039},{},[4040],{"type":62,"value":4041},"Maps to",{"type":48,"tag":1138,"props":4043,"children":4044},{},[4045],{"type":62,"value":3037},{"type":48,"tag":1149,"props":4047,"children":4048},{},[4049,4073,4098],{"type":48,"tag":1134,"props":4050,"children":4051},{},[4052,4060,4068],{"type":48,"tag":1156,"props":4053,"children":4054},{},[4055],{"type":48,"tag":113,"props":4056,"children":4058},{"className":4057},[],[4059],{"type":62,"value":3080},{"type":48,"tag":1156,"props":4061,"children":4062},{},[4063],{"type":48,"tag":113,"props":4064,"children":4066},{"className":4065},[],[4067],{"type":62,"value":2037},{"type":48,"tag":1156,"props":4069,"children":4070},{},[4071],{"type":62,"value":4072},"macOS fallback only; set explicitly on iOS\u002FtvOS\u002FwatchOS\u002FvisionOS",{"type":48,"tag":1134,"props":4074,"children":4075},{},[4076,4085,4093],{"type":48,"tag":1156,"props":4077,"children":4078},{},[4079],{"type":48,"tag":113,"props":4080,"children":4082},{"className":4081},[],[4083],{"type":62,"value":4084},"SENTRY_RELEASE",{"type":48,"tag":1156,"props":4086,"children":4087},{},[4088],{"type":48,"tag":113,"props":4089,"children":4091},{"className":4090},[],[4092],{"type":62,"value":3134},{"type":48,"tag":1156,"props":4094,"children":4095},{},[4096],{"type":62,"value":4097},"Do not assume automatic Cocoa fallback; set explicitly if needed",{"type":48,"tag":1134,"props":4099,"children":4100},{},[4101,4110,4118],{"type":48,"tag":1156,"props":4102,"children":4103},{},[4104],{"type":48,"tag":113,"props":4105,"children":4107},{"className":4106},[],[4108],{"type":62,"value":4109},"SENTRY_ENVIRONMENT",{"type":48,"tag":1156,"props":4111,"children":4112},{},[4113],{"type":48,"tag":113,"props":4114,"children":4116},{"className":4115},[],[4117],{"type":62,"value":3094},{"type":48,"tag":1156,"props":4119,"children":4120},{},[4121],{"type":62,"value":4097},{"type":48,"tag":1276,"props":4123,"children":4125},{"id":4124},"platform-feature-support-matrix",[4126],{"type":62,"value":4127},"Platform Feature Support Matrix",{"type":48,"tag":1126,"props":4129,"children":4130},{},[4131,4164],{"type":48,"tag":1130,"props":4132,"children":4133},{},[4134],{"type":48,"tag":1134,"props":4135,"children":4136},{},[4137,4141,4145,4150,4154,4159],{"type":48,"tag":1138,"props":4138,"children":4139},{},[4140],{"type":62,"value":1142},{"type":48,"tag":1138,"props":4142,"children":4143},{},[4144],{"type":62,"value":21},{"type":48,"tag":1138,"props":4146,"children":4147},{},[4148],{"type":62,"value":4149},"tvOS",{"type":48,"tag":1138,"props":4151,"children":4152},{},[4153],{"type":62,"value":24},{"type":48,"tag":1138,"props":4155,"children":4156},{},[4157],{"type":62,"value":4158},"watchOS",{"type":48,"tag":1138,"props":4160,"children":4161},{},[4162],{"type":62,"value":4163},"visionOS",{"type":48,"tag":1149,"props":4165,"children":4166},{},[4167,4197,4225,4253,4281,4309,4337,4365,4392,4420,4450],{"type":48,"tag":1134,"props":4168,"children":4169},{},[4170,4175,4180,4184,4188,4193],{"type":48,"tag":1156,"props":4171,"children":4172},{},[4173],{"type":62,"value":4174},"Crash Reporting",{"type":48,"tag":1156,"props":4176,"children":4177},{},[4178],{"type":62,"value":4179},"Yes",{"type":48,"tag":1156,"props":4181,"children":4182},{},[4183],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4185,"children":4186},{},[4187],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4189,"children":4190},{},[4191],{"type":62,"value":4192},"No",{"type":48,"tag":1156,"props":4194,"children":4195},{},[4196],{"type":62,"value":4179},{"type":48,"tag":1134,"props":4198,"children":4199},{},[4200,4205,4209,4213,4217,4221],{"type":48,"tag":1156,"props":4201,"children":4202},{},[4203],{"type":62,"value":4204},"App Hangs",{"type":48,"tag":1156,"props":4206,"children":4207},{},[4208],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4210,"children":4211},{},[4212],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4214,"children":4215},{},[4216],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4218,"children":4219},{},[4220],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4222,"children":4223},{},[4224],{"type":62,"value":4179},{"type":48,"tag":1134,"props":4226,"children":4227},{},[4228,4233,4237,4241,4245,4249],{"type":48,"tag":1156,"props":4229,"children":4230},{},[4231],{"type":62,"value":4232},"Watchdog Termination",{"type":48,"tag":1156,"props":4234,"children":4235},{},[4236],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4238,"children":4239},{},[4240],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4242,"children":4243},{},[4244],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4246,"children":4247},{},[4248],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4250,"children":4251},{},[4252],{"type":62,"value":4179},{"type":48,"tag":1134,"props":4254,"children":4255},{},[4256,4261,4265,4269,4273,4277],{"type":48,"tag":1156,"props":4257,"children":4258},{},[4259],{"type":62,"value":4260},"App Start Tracing",{"type":48,"tag":1156,"props":4262,"children":4263},{},[4264],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4266,"children":4267},{},[4268],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4270,"children":4271},{},[4272],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4274,"children":4275},{},[4276],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4278,"children":4279},{},[4280],{"type":62,"value":4179},{"type":48,"tag":1134,"props":4282,"children":4283},{},[4284,4289,4293,4297,4301,4305],{"type":48,"tag":1156,"props":4285,"children":4286},{},[4287],{"type":62,"value":4288},"UIViewController Tracing",{"type":48,"tag":1156,"props":4290,"children":4291},{},[4292],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4294,"children":4295},{},[4296],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4298,"children":4299},{},[4300],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4302,"children":4303},{},[4304],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4306,"children":4307},{},[4308],{"type":62,"value":4179},{"type":48,"tag":1134,"props":4310,"children":4311},{},[4312,4317,4321,4325,4329,4333],{"type":48,"tag":1156,"props":4313,"children":4314},{},[4315],{"type":62,"value":4316},"SwiftUI Tracing",{"type":48,"tag":1156,"props":4318,"children":4319},{},[4320],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4322,"children":4323},{},[4324],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4326,"children":4327},{},[4328],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4330,"children":4331},{},[4332],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4334,"children":4335},{},[4336],{"type":62,"value":4179},{"type":48,"tag":1134,"props":4338,"children":4339},{},[4340,4345,4349,4353,4357,4361],{"type":48,"tag":1156,"props":4341,"children":4342},{},[4343],{"type":62,"value":4344},"Network Tracking",{"type":48,"tag":1156,"props":4346,"children":4347},{},[4348],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4350,"children":4351},{},[4352],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4354,"children":4355},{},[4356],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4358,"children":4359},{},[4360],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4362,"children":4363},{},[4364],{"type":62,"value":4179},{"type":48,"tag":1134,"props":4366,"children":4367},{},[4368,4372,4376,4380,4384,4388],{"type":48,"tag":1156,"props":4369,"children":4370},{},[4371],{"type":62,"value":1036},{"type":48,"tag":1156,"props":4373,"children":4374},{},[4375],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4377,"children":4378},{},[4379],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4381,"children":4382},{},[4383],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4385,"children":4386},{},[4387],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4389,"children":4390},{},[4391],{"type":62,"value":4192},{"type":48,"tag":1134,"props":4393,"children":4394},{},[4395,4399,4403,4408,4412,4416],{"type":48,"tag":1156,"props":4396,"children":4397},{},[4398],{"type":62,"value":1063},{"type":48,"tag":1156,"props":4400,"children":4401},{},[4402],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4404,"children":4405},{},[4406],{"type":62,"value":4407},"Unofficial",{"type":48,"tag":1156,"props":4409,"children":4410},{},[4411],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4413,"children":4414},{},[4415],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4417,"children":4418},{},[4419],{"type":62,"value":4192},{"type":48,"tag":1134,"props":4421,"children":4422},{},[4423,4428,4433,4437,4442,4446],{"type":48,"tag":1156,"props":4424,"children":4425},{},[4426],{"type":62,"value":4427},"MetricKit",{"type":48,"tag":1156,"props":4429,"children":4430},{},[4431],{"type":62,"value":4432},"Yes (15+)",{"type":48,"tag":1156,"props":4434,"children":4435},{},[4436],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4438,"children":4439},{},[4440],{"type":62,"value":4441},"Yes (12+)",{"type":48,"tag":1156,"props":4443,"children":4444},{},[4445],{"type":62,"value":4192},{"type":48,"tag":1156,"props":4447,"children":4448},{},[4449],{"type":62,"value":4192},{"type":48,"tag":1134,"props":4451,"children":4452},{},[4453,4458,4462,4466,4470,4475],{"type":48,"tag":1156,"props":4454,"children":4455},{},[4456],{"type":62,"value":4457},"Metrics API",{"type":48,"tag":1156,"props":4459,"children":4460},{},[4461],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4463,"children":4464},{},[4465],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4467,"children":4468},{},[4469],{"type":62,"value":4179},{"type":48,"tag":1156,"props":4471,"children":4472},{},[4473],{"type":62,"value":4474},"Verify",{"type":48,"tag":1156,"props":4476,"children":4477},{},[4478],{"type":62,"value":4179},{"type":48,"tag":1276,"props":4480,"children":4482},{"id":4481},"production-settings",[4483],{"type":62,"value":4484},"Production Settings",{"type":48,"tag":53,"props":4486,"children":4487},{},[4488],{"type":62,"value":4489},"Lower sample rates for production to control volume and cost:",{"type":48,"tag":174,"props":4491,"children":4493},{"className":1372,"code":4492,"language":1374,"meta":179,"style":179},"options.tracesSampleRate = 0.2          \u002F\u002F 20% of transactions\n\noptions.configureProfiling = {\n    $0.sessionSampleRate = 0.1          \u002F\u002F 10% of sessions\n    $0.lifecycle = .trace\n}\n\noptions.sessionReplay.sessionSampleRate = 0.1   \u002F\u002F 10% continuous\noptions.sessionReplay.onErrorSampleRate = 1.0   \u002F\u002F 100% on error (keep high)\n\noptions.enableLogs = true\noptions.enableMetrics = true             \u002F\u002F default true in SDK 9.12+\noptions.debug = false                   \u002F\u002F never in production\n",[4494],{"type":48,"tag":113,"props":4495,"children":4496},{"__ignoreMap":179},[4497,4505,4512,4520,4528,4536,4543,4550,4558,4566,4573,4581,4589],{"type":48,"tag":185,"props":4498,"children":4499},{"class":187,"line":188},[4500],{"type":48,"tag":185,"props":4501,"children":4502},{},[4503],{"type":62,"value":4504},"options.tracesSampleRate = 0.2          \u002F\u002F 20% of transactions\n",{"type":48,"tag":185,"props":4506,"children":4507},{"class":187,"line":198},[4508],{"type":48,"tag":185,"props":4509,"children":4510},{"emptyLinePlaceholder":43},[4511],{"type":62,"value":371},{"type":48,"tag":185,"props":4513,"children":4514},{"class":187,"line":236},[4515],{"type":48,"tag":185,"props":4516,"children":4517},{},[4518],{"type":62,"value":4519},"options.configureProfiling = {\n",{"type":48,"tag":185,"props":4521,"children":4522},{"class":187,"line":297},[4523],{"type":48,"tag":185,"props":4524,"children":4525},{},[4526],{"type":62,"value":4527},"    $0.sessionSampleRate = 0.1          \u002F\u002F 10% of sessions\n",{"type":48,"tag":185,"props":4529,"children":4530},{"class":187,"line":365},[4531],{"type":48,"tag":185,"props":4532,"children":4533},{},[4534],{"type":62,"value":4535},"    $0.lifecycle = .trace\n",{"type":48,"tag":185,"props":4537,"children":4538},{"class":187,"line":374},[4539],{"type":48,"tag":185,"props":4540,"children":4541},{},[4542],{"type":62,"value":2447},{"type":48,"tag":185,"props":4544,"children":4545},{"class":187,"line":383},[4546],{"type":48,"tag":185,"props":4547,"children":4548},{"emptyLinePlaceholder":43},[4549],{"type":62,"value":371},{"type":48,"tag":185,"props":4551,"children":4552},{"class":187,"line":451},[4553],{"type":48,"tag":185,"props":4554,"children":4555},{},[4556],{"type":62,"value":4557},"options.sessionReplay.sessionSampleRate = 0.1   \u002F\u002F 10% continuous\n",{"type":48,"tag":185,"props":4559,"children":4560},{"class":187,"line":516},[4561],{"type":48,"tag":185,"props":4562,"children":4563},{},[4564],{"type":62,"value":4565},"options.sessionReplay.onErrorSampleRate = 1.0   \u002F\u002F 100% on error (keep high)\n",{"type":48,"tag":185,"props":4567,"children":4568},{"class":187,"line":524},[4569],{"type":48,"tag":185,"props":4570,"children":4571},{"emptyLinePlaceholder":43},[4572],{"type":62,"value":371},{"type":48,"tag":185,"props":4574,"children":4575},{"class":187,"line":533},[4576],{"type":48,"tag":185,"props":4577,"children":4578},{},[4579],{"type":62,"value":4580},"options.enableLogs = true\n",{"type":48,"tag":185,"props":4582,"children":4583},{"class":187,"line":608},[4584],{"type":48,"tag":185,"props":4585,"children":4586},{},[4587],{"type":62,"value":4588},"options.enableMetrics = true             \u002F\u002F default true in SDK 9.12+\n",{"type":48,"tag":185,"props":4590,"children":4591},{"class":187,"line":668},[4592],{"type":48,"tag":185,"props":4593,"children":4594},{},[4595],{"type":62,"value":4596},"options.debug = false                   \u002F\u002F never in production\n",{"type":48,"tag":159,"props":4598,"children":4599},{},[],{"type":48,"tag":86,"props":4601,"children":4603},{"id":4602},"verification",[4604],{"type":62,"value":1331},{"type":48,"tag":53,"props":4606,"children":4607},{},[4608],{"type":62,"value":4609},"Test that Sentry is receiving events:",{"type":48,"tag":174,"props":4611,"children":4613},{"className":1372,"code":4612,"language":1374,"meta":179,"style":179},"\u002F\u002F Trigger a test error event:\nSentrySDK.capture(message: \"Sentry Cocoa SDK test\")\n\n\u002F\u002F Or test crash reporting (without debugger — crashes are intercepted by debugger):\n\u002F\u002F SentrySDK.crash()  \u002F\u002F uncomment, run without debugger, relaunch to see crash report\n",[4614],{"type":48,"tag":113,"props":4615,"children":4616},{"__ignoreMap":179},[4617,4625,4633,4640,4648],{"type":48,"tag":185,"props":4618,"children":4619},{"class":187,"line":188},[4620],{"type":48,"tag":185,"props":4621,"children":4622},{},[4623],{"type":62,"value":4624},"\u002F\u002F Trigger a test error event:\n",{"type":48,"tag":185,"props":4626,"children":4627},{"class":187,"line":198},[4628],{"type":48,"tag":185,"props":4629,"children":4630},{},[4631],{"type":62,"value":4632},"SentrySDK.capture(message: \"Sentry Cocoa SDK test\")\n",{"type":48,"tag":185,"props":4634,"children":4635},{"class":187,"line":236},[4636],{"type":48,"tag":185,"props":4637,"children":4638},{"emptyLinePlaceholder":43},[4639],{"type":62,"value":371},{"type":48,"tag":185,"props":4641,"children":4642},{"class":187,"line":297},[4643],{"type":48,"tag":185,"props":4644,"children":4645},{},[4646],{"type":62,"value":4647},"\u002F\u002F Or test crash reporting (without debugger — crashes are intercepted by debugger):\n",{"type":48,"tag":185,"props":4649,"children":4650},{"class":187,"line":365},[4651,4656],{"type":48,"tag":185,"props":4652,"children":4653},{},[4654],{"type":62,"value":4655},"\u002F\u002F SentrySDK.crash()",{"type":48,"tag":185,"props":4657,"children":4658},{},[4659],{"type":62,"value":4660},"  \u002F\u002F uncomment, run without debugger, relaunch to see crash report\n",{"type":48,"tag":53,"props":4662,"children":4663},{},[4664],{"type":62,"value":4665},"Check the Sentry dashboard within a few seconds. If nothing appears:",{"type":48,"tag":4667,"props":4668,"children":4669},"ol",{},[4670,4683,4688],{"type":48,"tag":97,"props":4671,"children":4672},{},[4673,4675,4681],{"type":62,"value":4674},"Set ",{"type":48,"tag":113,"props":4676,"children":4678},{"className":4677},[],[4679],{"type":62,"value":4680},"options.debug = true",{"type":62,"value":4682}," — prints SDK internals to Xcode console",{"type":48,"tag":97,"props":4684,"children":4685},{},[4686],{"type":62,"value":4687},"Verify the DSN is correct and the project exists",{"type":48,"tag":97,"props":4689,"children":4690},{},[4691,4693],{"type":62,"value":4692},"Ensure initialization is on the ",{"type":48,"tag":141,"props":4694,"children":4695},{},[4696],{"type":62,"value":2785},{"type":48,"tag":159,"props":4698,"children":4699},{},[],{"type":48,"tag":86,"props":4701,"children":4703},{"id":4702},"phase-4-cross-link",[4704],{"type":62,"value":4705},"Phase 4: Cross-Link",{"type":48,"tag":53,"props":4707,"children":4708},{},[4709],{"type":62,"value":4710},"After completing Apple setup, check for a companion backend missing Sentry coverage:",{"type":48,"tag":174,"props":4712,"children":4714},{"className":176,"code":4713,"language":178,"meta":179,"style":179},"# Detect companion backend\nls ..\u002Fbackend ..\u002Fserver ..\u002Fapi 2>\u002Fdev\u002Fnull\ncat ..\u002Fgo.mod 2>\u002Fdev\u002Fnull | head -5\ncat ..\u002Frequirements.txt ..\u002FPipfile 2>\u002Fdev\u002Fnull | head -5\ncat ..\u002FGemfile 2>\u002Fdev\u002Fnull | head -5\ncat ..\u002Fpackage.json 2>\u002Fdev\u002Fnull | grep -E '\"name\"|\"dependencies\"' | head -5\n",[4715],{"type":48,"tag":113,"props":4716,"children":4717},{"__ignoreMap":179},[4718,4725,4752,4784,4820,4851],{"type":48,"tag":185,"props":4719,"children":4720},{"class":187,"line":188},[4721],{"type":48,"tag":185,"props":4722,"children":4723},{"style":192},[4724],{"type":62,"value":822},{"type":48,"tag":185,"props":4726,"children":4727},{"class":187,"line":198},[4728,4732,4736,4740,4744,4748],{"type":48,"tag":185,"props":4729,"children":4730},{"style":202},[4731],{"type":62,"value":831},{"type":48,"tag":185,"props":4733,"children":4734},{"style":208},[4735],{"type":62,"value":836},{"type":48,"tag":185,"props":4737,"children":4738},{"style":208},[4739],{"type":62,"value":841},{"type":48,"tag":185,"props":4741,"children":4742},{"style":208},[4743],{"type":62,"value":846},{"type":48,"tag":185,"props":4745,"children":4746},{"style":214},[4747],{"type":62,"value":342},{"type":48,"tag":185,"props":4749,"children":4750},{"style":208},[4751],{"type":62,"value":705},{"type":48,"tag":185,"props":4753,"children":4754},{"class":187,"line":236},[4755,4760,4764,4768,4772,4776,4780],{"type":48,"tag":185,"props":4756,"children":4757},{"style":202},[4758],{"type":62,"value":4759},"cat",{"type":48,"tag":185,"props":4761,"children":4762},{"style":208},[4763],{"type":62,"value":867},{"type":48,"tag":185,"props":4765,"children":4766},{"style":214},[4767],{"type":62,"value":342},{"type":48,"tag":185,"props":4769,"children":4770},{"style":208},[4771],{"type":62,"value":347},{"type":48,"tag":185,"props":4773,"children":4774},{"style":214},[4775],{"type":62,"value":352},{"type":48,"tag":185,"props":4777,"children":4778},{"style":202},[4779],{"type":62,"value":357},{"type":48,"tag":185,"props":4781,"children":4782},{"style":208},[4783],{"type":62,"value":448},{"type":48,"tag":185,"props":4785,"children":4786},{"class":187,"line":297},[4787,4791,4795,4800,4804,4808,4812,4816],{"type":48,"tag":185,"props":4788,"children":4789},{"style":202},[4790],{"type":62,"value":4759},{"type":48,"tag":185,"props":4792,"children":4793},{"style":208},[4794],{"type":62,"value":872},{"type":48,"tag":185,"props":4796,"children":4797},{"style":208},[4798],{"type":62,"value":4799}," ..\u002FPipfile",{"type":48,"tag":185,"props":4801,"children":4802},{"style":214},[4803],{"type":62,"value":342},{"type":48,"tag":185,"props":4805,"children":4806},{"style":208},[4807],{"type":62,"value":347},{"type":48,"tag":185,"props":4809,"children":4810},{"style":214},[4811],{"type":62,"value":352},{"type":48,"tag":185,"props":4813,"children":4814},{"style":202},[4815],{"type":62,"value":357},{"type":48,"tag":185,"props":4817,"children":4818},{"style":208},[4819],{"type":62,"value":448},{"type":48,"tag":185,"props":4821,"children":4822},{"class":187,"line":365},[4823,4827,4831,4835,4839,4843,4847],{"type":48,"tag":185,"props":4824,"children":4825},{"style":202},[4826],{"type":62,"value":4759},{"type":48,"tag":185,"props":4828,"children":4829},{"style":208},[4830],{"type":62,"value":877},{"type":48,"tag":185,"props":4832,"children":4833},{"style":214},[4834],{"type":62,"value":342},{"type":48,"tag":185,"props":4836,"children":4837},{"style":208},[4838],{"type":62,"value":347},{"type":48,"tag":185,"props":4840,"children":4841},{"style":214},[4842],{"type":62,"value":352},{"type":48,"tag":185,"props":4844,"children":4845},{"style":202},[4846],{"type":62,"value":357},{"type":48,"tag":185,"props":4848,"children":4849},{"style":208},[4850],{"type":62,"value":448},{"type":48,"tag":185,"props":4852,"children":4853},{"class":187,"line":374},[4854,4858,4862,4866,4870,4874,4879,4883,4888,4893,4898,4902,4906],{"type":48,"tag":185,"props":4855,"children":4856},{"style":202},[4857],{"type":62,"value":4759},{"type":48,"tag":185,"props":4859,"children":4860},{"style":208},[4861],{"type":62,"value":882},{"type":48,"tag":185,"props":4863,"children":4864},{"style":214},[4865],{"type":62,"value":342},{"type":48,"tag":185,"props":4867,"children":4868},{"style":208},[4869],{"type":62,"value":347},{"type":48,"tag":185,"props":4871,"children":4872},{"style":214},[4873],{"type":62,"value":352},{"type":48,"tag":185,"props":4875,"children":4876},{"style":202},[4877],{"type":62,"value":4878}," grep",{"type":48,"tag":185,"props":4880,"children":4881},{"style":208},[4882],{"type":62,"value":678},{"type":48,"tag":185,"props":4884,"children":4885},{"style":214},[4886],{"type":62,"value":4887}," '",{"type":48,"tag":185,"props":4889,"children":4890},{"style":208},[4891],{"type":62,"value":4892},"\"name\"|\"dependencies\"",{"type":48,"tag":185,"props":4894,"children":4895},{"style":214},[4896],{"type":62,"value":4897},"'",{"type":48,"tag":185,"props":4899,"children":4900},{"style":214},[4901],{"type":62,"value":352},{"type":48,"tag":185,"props":4903,"children":4904},{"style":202},[4905],{"type":62,"value":357},{"type":48,"tag":185,"props":4907,"children":4908},{"style":208},[4909],{"type":62,"value":448},{"type":48,"tag":53,"props":4911,"children":4912},{},[4913,4915,4920],{"type":62,"value":4914},"If a backend is found, configure ",{"type":48,"tag":113,"props":4916,"children":4918},{"className":4917},[],[4919],{"type":62,"value":3606},{"type":62,"value":4921}," to enable distributed tracing end-to-end, and suggest the matching skill:",{"type":48,"tag":1126,"props":4923,"children":4924},{},[4925,4946],{"type":48,"tag":1130,"props":4926,"children":4927},{},[4928],{"type":48,"tag":1134,"props":4929,"children":4930},{},[4931,4936,4941],{"type":48,"tag":1138,"props":4932,"children":4933},{},[4934],{"type":62,"value":4935},"Backend detected",{"type":48,"tag":1138,"props":4937,"children":4938},{},[4939],{"type":62,"value":4940},"Suggest skill",{"type":48,"tag":1138,"props":4942,"children":4943},{},[4944],{"type":62,"value":4945},"Trace header support",{"type":48,"tag":1149,"props":4947,"children":4948},{},[4949,4978,5006,5034],{"type":48,"tag":1134,"props":4950,"children":4951},{},[4952,4964,4973],{"type":48,"tag":1156,"props":4953,"children":4954},{},[4955,4957,4963],{"type":62,"value":4956},"Go (",{"type":48,"tag":113,"props":4958,"children":4960},{"className":4959},[],[4961],{"type":62,"value":4962},"go.mod",{"type":62,"value":1973},{"type":48,"tag":1156,"props":4965,"children":4966},{},[4967],{"type":48,"tag":113,"props":4968,"children":4970},{"className":4969},[],[4971],{"type":62,"value":4972},"sentry-go-sdk",{"type":48,"tag":1156,"props":4974,"children":4975},{},[4976],{"type":62,"value":4977},"Automatic",{"type":48,"tag":1134,"props":4979,"children":4980},{},[4981,4993,5002],{"type":48,"tag":1156,"props":4982,"children":4983},{},[4984,4986,4992],{"type":62,"value":4985},"Python (",{"type":48,"tag":113,"props":4987,"children":4989},{"className":4988},[],[4990],{"type":62,"value":4991},"requirements.txt",{"type":62,"value":1973},{"type":48,"tag":1156,"props":4994,"children":4995},{},[4996],{"type":48,"tag":113,"props":4997,"children":4999},{"className":4998},[],[5000],{"type":62,"value":5001},"sentry-python-sdk",{"type":48,"tag":1156,"props":5003,"children":5004},{},[5005],{"type":62,"value":4977},{"type":48,"tag":1134,"props":5007,"children":5008},{},[5009,5021,5030],{"type":48,"tag":1156,"props":5010,"children":5011},{},[5012,5014,5020],{"type":62,"value":5013},"Ruby (",{"type":48,"tag":113,"props":5015,"children":5017},{"className":5016},[],[5018],{"type":62,"value":5019},"Gemfile",{"type":62,"value":1973},{"type":48,"tag":1156,"props":5022,"children":5023},{},[5024],{"type":48,"tag":113,"props":5025,"children":5027},{"className":5026},[],[5028],{"type":62,"value":5029},"sentry-ruby-sdk",{"type":48,"tag":1156,"props":5031,"children":5032},{},[5033],{"type":62,"value":4977},{"type":48,"tag":1134,"props":5035,"children":5036},{},[5037,5049,5067],{"type":48,"tag":1156,"props":5038,"children":5039},{},[5040,5042,5048],{"type":62,"value":5041},"Node.js backend (",{"type":48,"tag":113,"props":5043,"children":5045},{"className":5044},[],[5046],{"type":62,"value":5047},"package.json",{"type":62,"value":1973},{"type":48,"tag":1156,"props":5050,"children":5051},{},[5052,5058,5060,5066],{"type":48,"tag":113,"props":5053,"children":5055},{"className":5054},[],[5056],{"type":62,"value":5057},"sentry-node-sdk",{"type":62,"value":5059}," (or ",{"type":48,"tag":113,"props":5061,"children":5063},{"className":5062},[],[5064],{"type":62,"value":5065},"sentry-express-sdk",{"type":62,"value":1973},{"type":48,"tag":1156,"props":5068,"children":5069},{},[5070],{"type":62,"value":4977},{"type":48,"tag":159,"props":5072,"children":5073},{},[],{"type":48,"tag":86,"props":5075,"children":5077},{"id":5076},"troubleshooting",[5078],{"type":62,"value":5079},"Troubleshooting",{"type":48,"tag":1126,"props":5081,"children":5082},{},[5083,5099],{"type":48,"tag":1130,"props":5084,"children":5085},{},[5086],{"type":48,"tag":1134,"props":5087,"children":5088},{},[5089,5094],{"type":48,"tag":1138,"props":5090,"children":5091},{},[5092],{"type":62,"value":5093},"Issue",{"type":48,"tag":1138,"props":5095,"children":5096},{},[5097],{"type":62,"value":5098},"Solution",{"type":48,"tag":1149,"props":5100,"children":5101},{},[5102,5122,5140,5158,5186,5213,5247,5270,5329,5354,5378,5399,5418],{"type":48,"tag":1134,"props":5103,"children":5104},{},[5105,5110],{"type":48,"tag":1156,"props":5106,"children":5107},{},[5108],{"type":62,"value":5109},"Events not appearing",{"type":48,"tag":1156,"props":5111,"children":5112},{},[5113,5114,5120],{"type":62,"value":4674},{"type":48,"tag":113,"props":5115,"children":5117},{"className":5116},[],[5118],{"type":62,"value":5119},"debug: true",{"type":62,"value":5121},", verify DSN format, ensure init is on main thread",{"type":48,"tag":1134,"props":5123,"children":5124},{},[5125,5130],{"type":48,"tag":1156,"props":5126,"children":5127},{},[5128],{"type":62,"value":5129},"Crashes not captured",{"type":48,"tag":1156,"props":5131,"children":5132},{},[5133,5138],{"type":48,"tag":141,"props":5134,"children":5135},{},[5136],{"type":62,"value":5137},"Run without debugger attached",{"type":62,"value":5139}," — debugger intercepts signals",{"type":48,"tag":1134,"props":5141,"children":5142},{},[5143,5148],{"type":48,"tag":1156,"props":5144,"children":5145},{},[5146],{"type":62,"value":5147},"App hangs not reported",{"type":48,"tag":1156,"props":5149,"children":5150},{},[5151,5153],{"type":62,"value":5152},"Auto-disabled when debugger attached; check ",{"type":48,"tag":113,"props":5154,"children":5156},{"className":5155},[],[5157],{"type":62,"value":3343},{"type":48,"tag":1134,"props":5159,"children":5160},{},[5161,5166],{"type":48,"tag":1156,"props":5162,"children":5163},{},[5164],{"type":62,"value":5165},"Session Replay not recording",{"type":48,"tag":1156,"props":5167,"children":5168},{},[5169,5171,5177,5178,5184],{"type":62,"value":5170},"Verify ",{"type":48,"tag":113,"props":5172,"children":5174},{"className":5173},[],[5175],{"type":62,"value":5176},"sessionSampleRate > 0",{"type":62,"value":920},{"type":48,"tag":113,"props":5179,"children":5181},{"className":5180},[],[5182],{"type":62,"value":5183},"onErrorSampleRate > 0",{"type":62,"value":5185},"; on iOS 26+ verify masking and any manual Liquid Glass gating",{"type":48,"tag":1134,"props":5187,"children":5188},{},[5189,5194],{"type":48,"tag":1156,"props":5190,"children":5191},{},[5192],{"type":62,"value":5193},"Tracing data missing",{"type":48,"tag":1156,"props":5195,"children":5196},{},[5197,5199,5205,5207],{"type":62,"value":5198},"Confirm ",{"type":48,"tag":113,"props":5200,"children":5202},{"className":5201},[],[5203],{"type":62,"value":5204},"tracesSampleRate > 0",{"type":62,"value":5206},"; check ",{"type":48,"tag":113,"props":5208,"children":5210},{"className":5209},[],[5211],{"type":62,"value":5212},"enableAutoPerformanceTracing = true",{"type":48,"tag":1134,"props":5214,"children":5215},{},[5216,5221],{"type":48,"tag":1156,"props":5217,"children":5218},{},[5219],{"type":62,"value":5220},"Profiling data missing",{"type":48,"tag":1156,"props":5222,"children":5223},{},[5224,5225,5230,5232,5237,5239,5245],{"type":62,"value":5170},{"type":48,"tag":113,"props":5226,"children":5228},{"className":5227},[],[5229],{"type":62,"value":5176},{"type":62,"value":5231}," in ",{"type":48,"tag":113,"props":5233,"children":5235},{"className":5234},[],[5236],{"type":62,"value":1044},{"type":62,"value":5238},"; for ",{"type":48,"tag":113,"props":5240,"children":5242},{"className":5241},[],[5243],{"type":62,"value":5244},".trace",{"type":62,"value":5246}," lifecycle, tracing must be enabled",{"type":48,"tag":1134,"props":5248,"children":5249},{},[5250,5260],{"type":48,"tag":1156,"props":5251,"children":5252},{},[5253,5258],{"type":48,"tag":113,"props":5254,"children":5256},{"className":5255},[],[5257],{"type":62,"value":1792},{"type":62,"value":5259}," build error (CocoaPods)",{"type":48,"tag":1156,"props":5261,"children":5262},{},[5263,5265],{"type":62,"value":5264},"Target Settings → \"Enable User Script Sandbox\" → ",{"type":48,"tag":113,"props":5266,"children":5268},{"className":5267},[],[5269],{"type":62,"value":1800},{"type":48,"tag":1134,"props":5271,"children":5272},{},[5273,5278],{"type":48,"tag":1156,"props":5274,"children":5275},{},[5276],{"type":62,"value":5277},"Multiple SPM products selected",{"type":48,"tag":1156,"props":5279,"children":5280},{},[5281,5283,5288,5290,5295,5296,5301,5302,5307,5308,5313,5315,5320,5322,5327],{"type":62,"value":5282},"Choose ",{"type":48,"tag":141,"props":5284,"children":5285},{},[5286],{"type":62,"value":5287},"only one",{"type":62,"value":5289}," of ",{"type":48,"tag":113,"props":5291,"children":5293},{"className":5292},[],[5294],{"type":62,"value":9},{"type":62,"value":120},{"type":48,"tag":113,"props":5297,"children":5299},{"className":5298},[],[5300],{"type":62,"value":1457},{"type":62,"value":120},{"type":48,"tag":113,"props":5303,"children":5305},{"className":5304},[],[5306],{"type":62,"value":969},{"type":62,"value":120},{"type":48,"tag":113,"props":5309,"children":5311},{"className":5310},[],[5312],{"type":62,"value":1490},{"type":62,"value":5314},", or ",{"type":48,"tag":113,"props":5316,"children":5318},{"className":5317},[],[5319],{"type":62,"value":1507},{"type":62,"value":5321}," (with ",{"type":48,"tag":113,"props":5323,"children":5325},{"className":5324},[],[5326],{"type":62,"value":1515},{"type":62,"value":5328}," trait on Swift 6.1+)",{"type":48,"tag":1134,"props":5330,"children":5331},{},[5332,5343],{"type":48,"tag":1156,"props":5333,"children":5334},{},[5335,5341],{"type":48,"tag":113,"props":5336,"children":5338},{"className":5337},[],[5339],{"type":62,"value":5340},"inAppExclude",{"type":62,"value":5342}," compile error",{"type":48,"tag":1156,"props":5344,"children":5345},{},[5346,5348],{"type":62,"value":5347},"Removed in SDK 9.0.0 — use ",{"type":48,"tag":113,"props":5349,"children":5351},{"className":5350},[],[5352],{"type":62,"value":5353},"options.add(inAppInclude:)",{"type":48,"tag":1134,"props":5355,"children":5356},{},[5357,5367],{"type":48,"tag":1156,"props":5358,"children":5359},{},[5360,5366],{"type":48,"tag":113,"props":5361,"children":5363},{"className":5362},[],[5364],{"type":62,"value":5365},"enableAppHangTrackingV2",{"type":62,"value":5342},{"type":48,"tag":1156,"props":5368,"children":5369},{},[5370,5371,5376],{"type":62,"value":5347},{"type":48,"tag":113,"props":5372,"children":5374},{"className":5373},[],[5375],{"type":62,"value":3277},{"type":62,"value":5377},"; V2 behavior is default where supported",{"type":48,"tag":1134,"props":5379,"children":5380},{},[5381,5386],{"type":48,"tag":1156,"props":5382,"children":5383},{},[5384],{"type":62,"value":5385},"Watchdog termination not tracked",{"type":48,"tag":1156,"props":5387,"children":5388},{},[5389,5391,5397],{"type":62,"value":5390},"Requires ",{"type":48,"tag":113,"props":5392,"children":5394},{"className":5393},[],[5395],{"type":62,"value":5396},"enableCrashHandler = true",{"type":62,"value":5398}," (it is by default)",{"type":48,"tag":1134,"props":5400,"children":5401},{},[5402,5407],{"type":48,"tag":1156,"props":5403,"children":5404},{},[5405],{"type":62,"value":5406},"Network breadcrumbs missing",{"type":48,"tag":1156,"props":5408,"children":5409},{},[5410,5411,5417],{"type":62,"value":5390},{"type":48,"tag":113,"props":5412,"children":5414},{"className":5413},[],[5415],{"type":62,"value":5416},"enableSwizzling = true",{"type":62,"value":5398},{"type":48,"tag":1134,"props":5419,"children":5420},{},[5421,5431],{"type":48,"tag":1156,"props":5422,"children":5423},{},[5424,5430],{"type":48,"tag":113,"props":5425,"children":5427},{"className":5426},[],[5428],{"type":62,"value":5429},"profilesSampleRate",{"type":62,"value":5342},{"type":48,"tag":1156,"props":5432,"children":5433},{},[5434,5435,5440],{"type":62,"value":5347},{"type":48,"tag":113,"props":5436,"children":5438},{"className":5437},[],[5439],{"type":62,"value":1044},{"type":62,"value":5441}," closure instead",{"type":48,"tag":5443,"props":5444,"children":5445},"style",{},[5446],{"type":62,"value":5447},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":5449,"total":5623},[5450,5471,5485,5500,5514,5531,5547,5561,5571,5582,5592,5610],{"slug":5451,"name":5451,"fn":5452,"description":5453,"org":5454,"tags":5455,"stars":5468,"repoUrl":5469,"updatedAt":5470},"xcodebuildmcp","build and test Apple apps with XcodeBuildMCP","Official skill for XcodeBuildMCP. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5456,5459,5460,5461,5462,5465],{"name":5457,"slug":5458,"type":16},"Debugging","debugging",{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":9,"slug":8,"type":16},{"name":5463,"slug":5464,"type":16},"Testing","testing",{"name":5466,"slug":5467,"type":16},"Xcode","xcode",6176,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002FXcodeBuildMCP","2026-04-06T18:13:34.8719",{"slug":5472,"name":5472,"fn":5473,"description":5474,"org":5475,"tags":5476,"stars":5468,"repoUrl":5469,"updatedAt":5484},"xcodebuildmcp-cli","build and test Apple apps via CLI","Official skill for the XcodeBuildMCP CLI. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5477,5480,5481,5482,5483],{"name":5478,"slug":5479,"type":16},"CLI","cli",{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":5463,"slug":5464,"type":16},{"name":5466,"slug":5467,"type":16},"2026-04-06T18:13:36.13414",{"slug":5486,"name":5486,"fn":5487,"description":5488,"org":5489,"tags":5490,"stars":5497,"repoUrl":5498,"updatedAt":5499},"agents-md","maintain project instruction files","Creates and maintains concise AGENTS.md and CLAUDE.md project instruction files. Use when asked to create AGENTS.md, update AGENTS.md, maintain agent docs, set up CLAUDE.md, document repository agent conventions, or keep coding-agent instructions minimal and reference-backed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5491,5494],{"name":5492,"slug":5493,"type":16},"Documentation","documentation",{"name":5495,"slug":5496,"type":16},"Engineering","engineering",861,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills","2026-05-15T06:16:29.695991",{"slug":5501,"name":5501,"fn":5502,"description":5503,"org":5504,"tags":5505,"stars":5497,"repoUrl":5498,"updatedAt":5513},"blog-writing-guide","write and review engineering blog posts","Write, review, and improve blog posts for the Sentry engineering blog following Sentry's specific writing standards, voice, and quality bar. Use this skill whenever someone asks to write a blog post, draft a technical article, review blog content, improve a draft, write a product announcement, create an engineering deep-dive, or produce any written content destined for the Sentry blog or developer audience. Also trigger when the user mentions \"blog post,\" \"blog draft,\" \"write-up,\" \"announcement post,\" \"engineering post,\" \"deep dive,\" \"postmortem,\" or asks for help with technical writing for Sentry. Even if the user just says \"help me write about [feature\u002Ftopic]\" — if it sounds like it could become a Sentry blog post, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5506,5509,5510],{"name":5507,"slug":5508,"type":16},"Communications","communications",{"name":9,"slug":8,"type":16},{"name":5511,"slug":5512,"type":16},"Technical Writing","technical-writing","2026-05-15T06:16:33.38217",{"slug":5515,"name":5515,"fn":5516,"description":5517,"org":5518,"tags":5519,"stars":5497,"repoUrl":5498,"updatedAt":5530},"brand-guidelines","write copy following Sentry brand guidelines","Write copy following Sentry brand guidelines. Use when writing UI text, error messages, empty states, onboarding flows, 404 pages, documentation, marketing copy, or any user-facing content. Covers both Plain Speech (default) and Sentry Voice tones.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5520,5523,5526,5527],{"name":5521,"slug":5522,"type":16},"Branding","branding",{"name":5524,"slug":5525,"type":16},"Content Creation","content-creation",{"name":9,"slug":8,"type":16},{"name":5528,"slug":5529,"type":16},"UX Copy","ux-copy","2026-05-15T06:16:22.395707",{"slug":5532,"name":5532,"fn":5533,"description":5534,"org":5535,"tags":5536,"stars":5497,"repoUrl":5498,"updatedAt":5546},"claude-settings-audit","generate Claude Code settings permissions","Analyze a repository to generate recommended Claude Code settings.json permissions. Use when setting up a new project, auditing existing settings, or determining which read-only bash commands to allow. Detects tech stack, build tools, and monorepo structure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5537,5540,5543],{"name":5538,"slug":5539,"type":16},"Claude Code","claude-code",{"name":5541,"slug":5542,"type":16},"Configuration","configuration",{"name":5544,"slug":5545,"type":16},"Security","security","2026-05-15T06:16:44.335977",{"slug":5548,"name":5548,"fn":5549,"description":5550,"org":5551,"tags":5552,"stars":5497,"repoUrl":5498,"updatedAt":5560},"code-review","perform code reviews for Sentry projects","Perform code reviews following Sentry engineering practices. Use when reviewing pull requests, examining code changes, or providing feedback on code quality. Covers security, performance, testing, and design review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5553,5555,5556,5559],{"name":5554,"slug":5548,"type":16},"Code Review",{"name":5495,"slug":5496,"type":16},{"name":5557,"slug":5558,"type":16},"Performance","performance",{"name":5544,"slug":5545,"type":16},"2026-05-15T06:16:35.824864",{"slug":5562,"name":5562,"fn":5563,"description":5564,"org":5565,"tags":5566,"stars":5497,"repoUrl":5498,"updatedAt":5570},"code-simplifier","simplify and refine source code","Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when asked to \"simplify code\", \"clean up code\", \"refactor for clarity\", \"improve readability\", or review recently modified code for elegance. Focuses on project-specific best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5567],{"name":5568,"slug":5569,"type":16},"Code Analysis","code-analysis","2026-05-15T06:16:32.127981",{"slug":5572,"name":5572,"fn":5573,"description":5574,"org":5575,"tags":5576,"stars":5497,"repoUrl":5498,"updatedAt":5581},"commit","create commits with Sentry conventions","Use for every request to commit changes or draft a commit message. Creates Sentry-style conventional commits with issue references.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5577,5580],{"name":5578,"slug":5579,"type":16},"Git","git",{"name":9,"slug":8,"type":16},"2026-07-18T05:15:10.723937",{"slug":5583,"name":5583,"fn":5584,"description":5585,"org":5586,"tags":5587,"stars":5497,"repoUrl":5498,"updatedAt":5591},"create-branch","create git branches for Sentry workflows","Create a git branch following Sentry naming conventions. Use when asked to \"create a branch\", \"new branch\", \"start a branch\", \"make a branch\", \"switch to a new branch\", or when starting new work on the default branch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5588,5589,5590],{"name":5495,"slug":5496,"type":16},{"name":5578,"slug":5579,"type":16},{"name":9,"slug":8,"type":16},"2026-05-15T06:16:39.458431",{"slug":5593,"name":5593,"fn":5594,"description":5595,"org":5596,"tags":5597,"stars":5497,"repoUrl":5498,"updatedAt":5609},"django-access-review","review Django access control and IDOR","Django access control and IDOR security review. Use when reviewing Django views, DRF viewsets, ORM queries, or any Python\u002FDjango code handling user authorization. Trigger keywords: \"IDOR\", \"access control\", \"authorization\", \"Django permissions\", \"object permissions\", \"tenant isolation\", \"broken access\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5598,5601,5602,5605,5608],{"name":5599,"slug":5600,"type":16},"Access Control","access-control",{"name":5568,"slug":5569,"type":16},{"name":5603,"slug":5604,"type":16},"Django","django",{"name":5606,"slug":5607,"type":16},"Python","python",{"name":5544,"slug":5545,"type":16},"2026-05-15T06:16:43.098698",{"slug":5611,"name":5611,"fn":5612,"description":5613,"org":5614,"tags":5615,"stars":5497,"repoUrl":5498,"updatedAt":5622},"django-perf-review","review and optimize Django performance","Django performance code review. Use when asked to \"review Django performance\", \"find N+1 queries\", \"optimize Django\", \"check queryset performance\", \"database performance\", \"Django ORM issues\", or audit Django code for performance problems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5616,5617,5620,5621],{"name":5554,"slug":5548,"type":16},{"name":5618,"slug":5619,"type":16},"Database","database",{"name":5603,"slug":5604,"type":16},{"name":5557,"slug":5558,"type":16},"2026-05-15T06:16:24.832813",88,{"items":5625,"total":2267},[5626,5642,5655,5671,5679,5693,5708],{"slug":5627,"name":5627,"fn":5628,"description":5629,"org":5630,"tags":5631,"stars":27,"repoUrl":28,"updatedAt":5641},"sentry-android-sdk","setup Sentry SDK for Android","Full Sentry SDK setup for Android. Use when asked to \"add Sentry to Android\", \"install sentry-android\", \"setup Sentry in Android\", or configure error monitoring, tracing, profiling, session replay, or logging for Android applications. Supports Kotlin and Java codebases.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5632,5635,5636,5637,5640],{"name":5633,"slug":5634,"type":16},"Android","android",{"name":5457,"slug":5458,"type":16},{"name":14,"slug":15,"type":16},{"name":5638,"slug":5639,"type":16},"SDK","sdk",{"name":9,"slug":8,"type":16},"2026-07-12T06:08:32.396344",{"slug":5643,"name":5643,"fn":5644,"description":5645,"org":5646,"tags":5647,"stars":27,"repoUrl":28,"updatedAt":5654},"sentry-browser-sdk","setup Sentry error monitoring for browser applications","Full Sentry SDK setup for browser JavaScript. Use when asked to \"add Sentry to a website\", \"install @sentry\u002Fbrowser\", or configure error monitoring, tracing, session replay, or logging for vanilla JavaScript, jQuery, static sites, or WordPress.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5648,5649,5652,5653],{"name":5457,"slug":5458,"type":16},{"name":5650,"slug":5651,"type":16},"JavaScript","javascript",{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:47:44.437436",{"slug":5656,"name":5656,"fn":5657,"description":5658,"org":5659,"tags":5660,"stars":27,"repoUrl":28,"updatedAt":5670},"sentry-cloudflare-sdk","setup Sentry monitoring for Cloudflare","Full Sentry SDK setup for Cloudflare Workers and Pages. Use when asked to \"add Sentry to Cloudflare Workers\", \"install @sentry\u002Fcloudflare\", or configure error monitoring, tracing, logging, crons, or AI monitoring for Cloudflare Workers, Pages, Durable Objects, Queues, Workflows, or Hono on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5661,5664,5667,5668,5669],{"name":5662,"slug":5663,"type":16},"Cloudflare","cloudflare",{"name":5665,"slug":5666,"type":16},"Edge Functions","edge-functions",{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:25.361175",{"slug":4,"name":4,"fn":5,"description":6,"org":5672,"tags":5673,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5674,5675,5676,5677,5678],{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},{"slug":5680,"name":5680,"fn":5681,"description":5682,"org":5683,"tags":5684,"stars":27,"repoUrl":28,"updatedAt":5692},"sentry-dotnet-sdk","setup Sentry SDK for .NET","Full Sentry SDK setup for .NET. Use when asked to \"add Sentry to .NET\", \"install Sentry for C#\", or configure error monitoring, tracing, profiling, logging, or crons for ASP.NET Core, MAUI, WPF, WinForms, Blazor, Azure Functions, or any other .NET application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5685,5688,5689,5690,5691],{"name":5686,"slug":5687,"type":16},".NET","net",{"name":5457,"slug":5458,"type":16},{"name":14,"slug":15,"type":16},{"name":5638,"slug":5639,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T06:08:33.793148",{"slug":5694,"name":5694,"fn":5695,"description":5696,"org":5697,"tags":5698,"stars":27,"repoUrl":28,"updatedAt":5707},"sentry-elixir-sdk","setup Sentry SDK for Elixir","Full Sentry SDK setup for Elixir. Use when asked to \"add Sentry to Elixir\", \"install sentry for Elixir\", or configure error monitoring, tracing, logging, or crons for Elixir, Phoenix, or Plug applications. Supports Phoenix, Plug, LiveView, Oban, and Quantum.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5699,5702,5705,5706],{"name":5700,"slug":5701,"type":16},"Backend","backend",{"name":5703,"slug":5704,"type":16},"Elixir","elixir",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:11.69581",{"slug":5709,"name":5709,"fn":5710,"description":5711,"org":5712,"tags":5713,"stars":27,"repoUrl":28,"updatedAt":5720},"sentry-fix-issues","fix production issues with Sentry","Find and fix issues from Sentry using MCP. Use when asked to fix Sentry errors, debug production issues, investigate exceptions, or resolve bugs reported in Sentry. Methodically analyzes stack traces, breadcrumbs, traces, and context to identify root causes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5714,5715,5718,5719],{"name":5457,"slug":5458,"type":16},{"name":5716,"slug":5717,"type":16},"Incident Response","incident-response",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T06:08:35.550824"]