@danieljvdm/dev-kit 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +2 -33
- package/skill-sources.lock.json +15 -117
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +10 -70
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
# Sentry Cocoa SDK
|
|
2
|
+
|
|
3
|
+
Opinionated wizard that scans your Apple project and guides you through complete Sentry
|
|
4
|
+
setup.
|
|
5
|
+
|
|
6
|
+
> **Note:** SDK versions and APIs below reflect Sentry docs at time of writing
|
|
7
|
+
> (sentry-cocoa 9.15.0). Always verify against
|
|
8
|
+
> [docs.sentry.io/platforms/apple/](https://docs.sentry.io/platforms/apple/) before
|
|
9
|
+
> implementing.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Phase 1: Detect
|
|
14
|
+
|
|
15
|
+
Run these commands to understand the project before making any recommendations:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Check existing Sentry dependency
|
|
19
|
+
grep -rEi "sentry|sentry-cocoa|SentrySPM|SentrySwiftUI" \
|
|
20
|
+
--include="Package.swift" --include="Podfile" --include="Cartfile" \
|
|
21
|
+
--include="Package.resolved" --include="project.pbxproj" . 2>/dev/null | head -20
|
|
22
|
+
|
|
23
|
+
# Detect UI framework (SwiftUI vs UIKit)
|
|
24
|
+
grep -rE "@main|struct .*: App" --include="*.swift" . 2>/dev/null | head -5
|
|
25
|
+
grep -rE "AppDelegate|UIApplicationMain|@UIApplicationDelegateAdaptor" --include="*.swift" . 2>/dev/null | head -5
|
|
26
|
+
|
|
27
|
+
# Detect platform and deployment targets
|
|
28
|
+
grep -rE "platforms:|\\.iOS|\\.macOS|\\.tvOS|\\.watchOS|\\.visionOS|IPHONEOS_DEPLOYMENT_TARGET|MACOSX_DEPLOYMENT_TARGET|TVOS_DEPLOYMENT_TARGET|WATCHOS_DEPLOYMENT_TARGET|XROS_DEPLOYMENT_TARGET" \
|
|
29
|
+
--include="Package.swift" --include="project.pbxproj" . 2>/dev/null | head -20
|
|
30
|
+
grep -E "platform :ios|platform :osx|platform :tvos|platform :watchos" Podfile 2>/dev/null
|
|
31
|
+
|
|
32
|
+
# Detect logging
|
|
33
|
+
grep -rE "import OSLog|import os\\.log|Logger\\(|CocoaLumberjack|DDLog" --include="*.swift" . 2>/dev/null | head -5
|
|
34
|
+
|
|
35
|
+
# Detect companion backend
|
|
36
|
+
ls ../backend ../server ../api 2>/dev/null
|
|
37
|
+
ls ../go.mod ../requirements.txt ../Gemfile ../package.json 2>/dev/null
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**What to note:**
|
|
41
|
+
|
|
42
|
+
- Is `sentry-cocoa` already in `Package.swift` or `Podfile`? If yes, skip to Phase 2
|
|
43
|
+
(configure features).
|
|
44
|
+
- SwiftUI (`@main App` struct) or UIKit (`AppDelegate`)? Determines init pattern.
|
|
45
|
+
- Which Apple platforms?
|
|
46
|
+
(Affects which features are available — see Platform Support Matrix.)
|
|
47
|
+
- Existing logging library?
|
|
48
|
+
(Enables structured log capture.)
|
|
49
|
+
- SwiftUI tracing import/product?
|
|
50
|
+
`SentrySwiftUI` still exists but is deprecated in SDK 9.4.1+; prefer the main `Sentry`
|
|
51
|
+
module for released binary products.
|
|
52
|
+
- Companion backend? (Triggers Phase 4 cross-link for distributed tracing.)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Phase 2: Recommend
|
|
57
|
+
|
|
58
|
+
Based on what you found, present a concrete recommendation.
|
|
59
|
+
Don’t ask open-ended questions — lead with a proposal:
|
|
60
|
+
|
|
61
|
+
**Recommended (core coverage):**
|
|
62
|
+
|
|
63
|
+
- **Error Monitoring** — always; crash reporting, app hangs, watchdog terminations,
|
|
64
|
+
NSError/Swift errors
|
|
65
|
+
- **Tracing** — always for apps; auto-instruments app launch, network, UIViewController,
|
|
66
|
+
file I/O, Core Data
|
|
67
|
+
- **Profiling** — production iOS/macOS apps; UI profiling via `configureProfiling`
|
|
68
|
+
|
|
69
|
+
**Optional (enhanced observability):**
|
|
70
|
+
|
|
71
|
+
- **Session Replay** — user-facing iOS apps; verify masking on iOS 26+ / Liquid Glass
|
|
72
|
+
builds
|
|
73
|
+
- **Logging** — when structured log capture is needed
|
|
74
|
+
- **Metrics** — Swift apps needing aggregate counters, gauges, or distributions
|
|
75
|
+
- **User Feedback** — apps that want crash/error feedback forms from users
|
|
76
|
+
|
|
77
|
+
**Not available for Cocoa:**
|
|
78
|
+
|
|
79
|
+
- Crons — backend only
|
|
80
|
+
- AI Monitoring — JS/Python only
|
|
81
|
+
|
|
82
|
+
**Recommendation logic:**
|
|
83
|
+
|
|
84
|
+
| Feature | Recommend when … |
|
|
85
|
+
| ---------------- | ---------------------------------------------------------------------------------------- |
|
|
86
|
+
| Error Monitoring | **Always** — non-negotiable baseline |
|
|
87
|
+
| Tracing | **Always for apps** — rich auto-instrumentation out of the box |
|
|
88
|
+
| Profiling | iOS/macOS production apps where performance matters (not tvOS/watchOS/visionOS) |
|
|
89
|
+
| Session Replay | User-facing iOS apps; tvOS may work but is not officially supported |
|
|
90
|
+
| Logging | Existing `os.log` / CocoaLumberjack usage, or structured logs needed |
|
|
91
|
+
| Metrics | Aggregate product or health signals that should not create issues; Swift only, SDK 9.12+ |
|
|
92
|
+
| User Feedback | Apps wanting in-app bug reports with screenshots |
|
|
93
|
+
|
|
94
|
+
Propose: _“I recommend Error Monitoring + Tracing + Profiling.
|
|
95
|
+
Want me to also add Session Replay and Logging?”_
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Phase 3: Guide
|
|
100
|
+
|
|
101
|
+
### Install
|
|
102
|
+
|
|
103
|
+
**Option 1 — Sentry Wizard (recommended):**
|
|
104
|
+
|
|
105
|
+
> **You need to run this yourself** — the wizard opens a browser for login and requires
|
|
106
|
+
> interactive input that the agent can’t handle.
|
|
107
|
+
> Copy-paste into your terminal:
|
|
108
|
+
>
|
|
109
|
+
> ```
|
|
110
|
+
> brew install getsentry/tools/sentry-wizard && sentry-wizard -i ios
|
|
111
|
+
> ```
|
|
112
|
+
>
|
|
113
|
+
> It handles login, org/project selection, auth token setup, SDK installation,
|
|
114
|
+
> AppDelegate updates, and dSYM/debug symbol upload build phases.
|
|
115
|
+
>
|
|
116
|
+
> **Once it finishes, come back and skip to [Verification](#verification).**
|
|
117
|
+
|
|
118
|
+
If the user skips the wizard, proceed with Option 2 (SPM/CocoaPods) and manual setup
|
|
119
|
+
below.
|
|
120
|
+
|
|
121
|
+
**Option 2 — Swift Package Manager:** File → Add Packages → enter:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
https://github.com/getsentry/sentry-cocoa.git
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Or in `Package.swift`:
|
|
128
|
+
|
|
129
|
+
```swift
|
|
130
|
+
.package(url: "https://github.com/getsentry/sentry-cocoa", from: "9.15.0"),
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**SPM Products** — choose **exactly one** per target:
|
|
134
|
+
|
|
135
|
+
| Product | Use Case |
|
|
136
|
+
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
137
|
+
| `Sentry` | **Recommended** — static framework, fast app start; includes SwiftUI APIs in SDK 9.4.1+ |
|
|
138
|
+
| `Sentry-Dynamic` | Dynamic framework alternative |
|
|
139
|
+
| `SentrySwiftUI` | Legacy/deprecated re-export for SwiftUI APIs; use only when maintaining older setup |
|
|
140
|
+
| `Sentry-WithoutUIKitOrAppKit` | watchOS, app extensions, CLI tools (Swift < 6.1) |
|
|
141
|
+
| `SentrySPM` + `NoUIFramework` trait | Source build without UIKit/AppKit for CLI/headless targets (**SDK 9.7+ / Swift 6.1+ / Xcode 26.4+** for Xcode UI) |
|
|
142
|
+
|
|
143
|
+
> Warning: Xcode allows selecting multiple products — choose only one.
|
|
144
|
+
>
|
|
145
|
+
> If using `SentrySPM` from source, current source-build projects may import
|
|
146
|
+
> `SentrySwift` instead of `Sentry`; verify the module name in the target.
|
|
147
|
+
> Released binary products use `import Sentry`.
|
|
148
|
+
|
|
149
|
+
**Swift 6.1+ trait-based opt-out of UIKit/AppKit** (requires `Package@swift-6.1.swift`
|
|
150
|
+
manifest):
|
|
151
|
+
|
|
152
|
+
```swift
|
|
153
|
+
// Package.swift (Swift 6.1+)
|
|
154
|
+
.package(
|
|
155
|
+
url: "https://github.com/getsentry/sentry-cocoa",
|
|
156
|
+
from: "9.15.0",
|
|
157
|
+
traits: ["NoUIFramework"]
|
|
158
|
+
),
|
|
159
|
+
|
|
160
|
+
// In your target's dependencies:
|
|
161
|
+
.product(name: "SentrySPM", package: "sentry-cocoa")
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
This is the preferred opt-out path for command-line/headless targets on Swift 6.1+. It
|
|
165
|
+
compiles the SDK from source so the trait can remove UIKit/AppKit/SwiftUI linkage.
|
|
166
|
+
For Swift < 6.1 continue using `Sentry-WithoutUIKitOrAppKit`.
|
|
167
|
+
|
|
168
|
+
> **Note:** Package traits are visible in the Xcode UI starting with **Xcode 26.4+**. On
|
|
169
|
+
> older Xcode versions, traits still work when declared in `Package.swift` but won’t
|
|
170
|
+
> appear in the GUI.
|
|
171
|
+
|
|
172
|
+
**Option 3 — CocoaPods (deprecated; prefer SPM):**
|
|
173
|
+
|
|
174
|
+
```ruby
|
|
175
|
+
platform :ios, '15.0'
|
|
176
|
+
use_frameworks!
|
|
177
|
+
|
|
178
|
+
target 'YourApp' do
|
|
179
|
+
pod 'Sentry', :git => 'https://github.com/getsentry/sentry-cocoa.git', :tag => '9.15.0'
|
|
180
|
+
end
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Sentry plans to stop publishing CocoaPods releases at the end of June 2026; use this
|
|
184
|
+
only for existing CocoaPods projects.
|
|
185
|
+
|
|
186
|
+
> **Known issue (Xcode 14+):** Sandbox `rsync.samba` error → Target Settings → “Enable
|
|
187
|
+
> User Script Sandbox” → `NO`.
|
|
188
|
+
|
|
189
|
+
**Option 4 — SentryObjC (for pure Objective-C/C++ projects):**
|
|
190
|
+
|
|
191
|
+
For pure Objective-C or Objective-C++ projects that **cannot enable Clang modules**
|
|
192
|
+
(e.g., `-fmodules=NO`), use the SentryObjC wrapper SDK. It provides the same
|
|
193
|
+
functionality as the main SDK but with pure Objective-C headers that don’t require Swift
|
|
194
|
+
module imports.
|
|
195
|
+
|
|
196
|
+
**SPM:**
|
|
197
|
+
|
|
198
|
+
```swift
|
|
199
|
+
.package(url: "https://github.com/getsentry/sentry-cocoa", from: "9.17.1"),
|
|
200
|
+
|
|
201
|
+
// In your target's dependencies:
|
|
202
|
+
.product(name: "SentryObjC", package: "sentry-cocoa")
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Or download `SentryObjC-Dynamic.xcframework.zip` from the
|
|
206
|
+
[releases page](https://github.com/getsentry/sentry-cocoa/releases).
|
|
207
|
+
|
|
208
|
+
**Migration from regular Sentry to SentryObjC:**
|
|
209
|
+
|
|
210
|
+
- Change `#import <Sentry/Sentry.h>` to `#import <SentryObjC/SentryObjC.h>`
|
|
211
|
+
- Rename `Sentry`-prefixed types to `SentryObjC` (e.g., `SentrySDK` → `SentryObjCSDK`,
|
|
212
|
+
`SentryOptions` → `SentryObjCOptions`)
|
|
213
|
+
- The API surface is otherwise identical
|
|
214
|
+
|
|
215
|
+
Most users should use the standard `Sentry` product (Option 2). Only use `SentryObjC` if
|
|
216
|
+
you have a specific requirement preventing Clang modules.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### Quick Start — Recommended Init
|
|
221
|
+
|
|
222
|
+
Full iOS app config enabling the most common features with sensible defaults.
|
|
223
|
+
Add before any other code at app startup.
|
|
224
|
+
|
|
225
|
+
For macOS, watchOS, app extensions, or `NoUIFramework` builds, omit options that are
|
|
226
|
+
unavailable for that platform (`sessionReplay`, screenshots/view hierarchy,
|
|
227
|
+
user-feedback UI, UIKit tracing, and profiling on tvOS/watchOS/visionOS). Keep the core
|
|
228
|
+
`dsn`, environment, error monitoring, tracing, logs, and metrics settings that compile
|
|
229
|
+
for the detected target.
|
|
230
|
+
|
|
231
|
+
**SwiftUI — App entry point:**
|
|
232
|
+
|
|
233
|
+
```swift
|
|
234
|
+
import SwiftUI
|
|
235
|
+
import Sentry
|
|
236
|
+
|
|
237
|
+
@main
|
|
238
|
+
struct MyApp: App {
|
|
239
|
+
init() {
|
|
240
|
+
SentrySDK.start { options in
|
|
241
|
+
options.dsn = ProcessInfo.processInfo.environment["SENTRY_DSN"]
|
|
242
|
+
?? "https://examplePublicKey@o0.ingest.sentry.io/0"
|
|
243
|
+
options.environment = ProcessInfo.processInfo.environment["SENTRY_ENVIRONMENT"]
|
|
244
|
+
?? "production"
|
|
245
|
+
// releaseName defaults to "<bundle id>@<version>+<build>"; set only if you need a custom release.
|
|
246
|
+
|
|
247
|
+
// Error monitoring (on by default — explicit for clarity)
|
|
248
|
+
options.enableCrashHandler = true
|
|
249
|
+
options.enableAppHangTracking = true
|
|
250
|
+
options.enableReportNonFullyBlockingAppHangs = true
|
|
251
|
+
options.enableWatchdogTerminationTracking = true
|
|
252
|
+
options.attachScreenshot = true
|
|
253
|
+
options.attachViewHierarchy = true
|
|
254
|
+
options.sendDefaultPii = true
|
|
255
|
+
|
|
256
|
+
// Tracing
|
|
257
|
+
options.tracesSampleRate = 1.0 // lower to 0.2 in high-traffic production
|
|
258
|
+
|
|
259
|
+
// Profiling (SDK 9.0.0+ API)
|
|
260
|
+
options.configureProfiling = {
|
|
261
|
+
$0.sessionSampleRate = 1.0
|
|
262
|
+
$0.lifecycle = .trace
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Session Replay. Keep production sampling conservative and verify masking on iOS 26+.
|
|
266
|
+
options.sessionReplay.sessionSampleRate = 0.1
|
|
267
|
+
options.sessionReplay.onErrorSampleRate = 1.0
|
|
268
|
+
|
|
269
|
+
// Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)
|
|
270
|
+
options.enableLogs = true
|
|
271
|
+
|
|
272
|
+
// Metrics are enabled by default in SDK 9.12+. Set false only to opt out.
|
|
273
|
+
options.enableMetrics = true
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
var body: some Scene {
|
|
278
|
+
WindowGroup { ContentView() }
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**UIKit — AppDelegate:**
|
|
284
|
+
|
|
285
|
+
```swift
|
|
286
|
+
import UIKit
|
|
287
|
+
import Sentry
|
|
288
|
+
|
|
289
|
+
@UIApplicationMain
|
|
290
|
+
class AppDelegate: UIResponder, UIApplicationDelegate {
|
|
291
|
+
func application(
|
|
292
|
+
_ application: UIApplication,
|
|
293
|
+
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
|
294
|
+
) -> Bool {
|
|
295
|
+
SentrySDK.start { options in
|
|
296
|
+
options.dsn = ProcessInfo.processInfo.environment["SENTRY_DSN"]
|
|
297
|
+
?? "https://examplePublicKey@o0.ingest.sentry.io/0"
|
|
298
|
+
options.environment = ProcessInfo.processInfo.environment["SENTRY_ENVIRONMENT"]
|
|
299
|
+
?? "production"
|
|
300
|
+
// releaseName defaults to "<bundle id>@<version>+<build>"; set only if you need a custom release.
|
|
301
|
+
|
|
302
|
+
options.enableCrashHandler = true
|
|
303
|
+
options.enableAppHangTracking = true
|
|
304
|
+
options.enableReportNonFullyBlockingAppHangs = true
|
|
305
|
+
options.enableWatchdogTerminationTracking = true
|
|
306
|
+
options.attachScreenshot = true
|
|
307
|
+
options.attachViewHierarchy = true
|
|
308
|
+
options.sendDefaultPii = true
|
|
309
|
+
|
|
310
|
+
options.tracesSampleRate = 1.0
|
|
311
|
+
|
|
312
|
+
options.configureProfiling = {
|
|
313
|
+
$0.sessionSampleRate = 1.0
|
|
314
|
+
$0.lifecycle = .trace
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
options.sessionReplay.sessionSampleRate = 0.1
|
|
318
|
+
options.sessionReplay.onErrorSampleRate = 1.0
|
|
319
|
+
|
|
320
|
+
// Logging (SDK 9.0.0+ top-level; use options.experimental.enableLogs in 8.x)
|
|
321
|
+
options.enableLogs = true
|
|
322
|
+
|
|
323
|
+
// Metrics are enabled by default in SDK 9.12+. Set false only to opt out.
|
|
324
|
+
options.enableMetrics = true
|
|
325
|
+
}
|
|
326
|
+
return true
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
> Warning: SDK initialization must occur on the **main thread**.
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
### For Each Agreed Feature
|
|
336
|
+
|
|
337
|
+
Walk through features one at a time.
|
|
338
|
+
Load the reference file for each, follow its steps, and verify before moving to the
|
|
339
|
+
next:
|
|
340
|
+
|
|
341
|
+
| Feature | Reference file | Load when … |
|
|
342
|
+
| ---------------- | ----------------------- | ------------------------------------------- |
|
|
343
|
+
| Error Monitoring | `./error-monitoring.md` | Always (baseline) |
|
|
344
|
+
| Tracing | `./tracing.md` | App launch, network, UIViewController perf |
|
|
345
|
+
| Profiling | `./profiling.md` | Production perf-sensitive apps |
|
|
346
|
+
| Session Replay | `./session-replay.md` | User-facing iOS apps; tvOS only with caveat |
|
|
347
|
+
| Logging | `./logging.md` | Structured log capture needed |
|
|
348
|
+
| Metrics | `./metrics.md` | Aggregate counters, gauges, distributions |
|
|
349
|
+
| User Feedback | `./user-feedback.md` | In-app bug reporting wanted |
|
|
350
|
+
|
|
351
|
+
For each feature: `Read ./<feature>.md`, follow steps exactly, verify it works.
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Configuration Reference
|
|
356
|
+
|
|
357
|
+
### Key `SentryOptions` Fields
|
|
358
|
+
|
|
359
|
+
| Option | Type | Default | Purpose |
|
|
360
|
+
| -------------------------------------- | ----------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
361
|
+
| `dsn` | `String?` | `nil` | SDK disabled if empty; macOS can read `SENTRY_DSN`, other Apple platforms must set explicitly |
|
|
362
|
+
| `environment` | `String` | `"production"` | e.g., `"production"` |
|
|
363
|
+
| `releaseName` | `String?` | bundle-derived | Defaults to `<bundle id>@<version>+<build>` |
|
|
364
|
+
| `debug` | `Bool` | `false` | Verbose SDK output — **disable in production** |
|
|
365
|
+
| `sendDefaultPii` | `Bool` | `false` | Include IP, user info from active integrations |
|
|
366
|
+
| `enableCrashHandler` | `Bool` | `true` | Master switch for crash reporting |
|
|
367
|
+
| `enableAppHangTracking` | `Bool` | `true` | Master switch for app hang tracking |
|
|
368
|
+
| `enableReportNonFullyBlockingAppHangs` | `Bool` | `true` | Report non-fully-blocking hangs on supported UI platforms |
|
|
369
|
+
| `appHangTimeoutInterval` | `Double` | `2.0` | Seconds before classifying as hang |
|
|
370
|
+
| `enableWatchdogTerminationTracking` | `Bool` | `true` | Track watchdog kills (iOS, tvOS, Mac Catalyst) |
|
|
371
|
+
| `attachScreenshot` | `Bool` | `false` | Capture screenshot on error |
|
|
372
|
+
| `attachViewHierarchy` | `Bool` | `false` | Capture view hierarchy on error |
|
|
373
|
+
| `tracesSampleRate` | `NSNumber?` | `nil` | Transaction sample rate (`nil` = tracing disabled); Swift auto-boxes `Double` literals (e.g. `1.0` → `NSNumber`) |
|
|
374
|
+
| `tracesSampler` | `Closure` | `nil` | Dynamic per-transaction sampling (overrides rate) |
|
|
375
|
+
| `enableAutoPerformanceTracing` | `Bool` | `true` | Master switch for auto-instrumentation |
|
|
376
|
+
| `tracePropagationTargets` | `[Any]` | all requests | Strings or `NSRegularExpression` values that receive distributed trace headers |
|
|
377
|
+
| `enableCaptureFailedRequests` | `Bool` | `true` | Auto-capture HTTP 5xx errors as events |
|
|
378
|
+
| `enableNetworkBreadcrumbs` | `Bool` | `true` | Breadcrumbs for outgoing HTTP requests |
|
|
379
|
+
| `add(inAppInclude:)` | Method | bundle executable | Add module prefixes treated as “in-app” code |
|
|
380
|
+
| `maxBreadcrumbs` | `Int` | `100` | Max breadcrumbs per event |
|
|
381
|
+
| `sampleRate` | `Float` | `1.0` | Error event sample rate |
|
|
382
|
+
| `beforeSend` | `Closure` | `nil` | Hook to mutate/drop error events |
|
|
383
|
+
| `onLastRunStatusDetermined` | `Closure` | `nil` | Called after SDK determines previous launch crash status |
|
|
384
|
+
| `strictTraceContinuation` | `Bool` | `false` | Reject incoming traces from other orgs; validates `sentry-org_id` in baggage headers (sentry-cocoa ≥9.10.0) |
|
|
385
|
+
| `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 |
|
|
386
|
+
| `enableLogs` | `Bool` | `false` | Enable structured logs |
|
|
387
|
+
| `enableMetrics` | `Bool` | `true` | Enable Swift Metrics API (SDK 9.12+) |
|
|
388
|
+
|
|
389
|
+
### Environment Variables
|
|
390
|
+
|
|
391
|
+
| Variable | Maps to | Purpose |
|
|
392
|
+
| -------------------- | ------------- | ---------------------------------------------------------------- |
|
|
393
|
+
| `SENTRY_DSN` | `dsn` | macOS fallback only; set explicitly on iOS/tvOS/watchOS/visionOS |
|
|
394
|
+
| `SENTRY_RELEASE` | `releaseName` | Do not assume automatic Cocoa fallback; set explicitly if needed |
|
|
395
|
+
| `SENTRY_ENVIRONMENT` | `environment` | Do not assume automatic Cocoa fallback; set explicitly if needed |
|
|
396
|
+
|
|
397
|
+
### Platform Feature Support Matrix
|
|
398
|
+
|
|
399
|
+
| Feature | iOS | tvOS | macOS | watchOS | visionOS |
|
|
400
|
+
| ------------------------ | --------- | ---------- | --------- | ------- | -------- |
|
|
401
|
+
| Crash Reporting | Yes | Yes | Yes | No | Yes |
|
|
402
|
+
| App Hangs | Yes | Yes | Yes | No | Yes |
|
|
403
|
+
| Watchdog Termination | Yes | Yes | No | No | Yes |
|
|
404
|
+
| App Start Tracing | Yes | Yes | No | No | Yes |
|
|
405
|
+
| UIViewController Tracing | Yes | Yes | No | No | Yes |
|
|
406
|
+
| SwiftUI Tracing | Yes | Yes | Yes | No | Yes |
|
|
407
|
+
| Network Tracking | Yes | Yes | Yes | No | Yes |
|
|
408
|
+
| Profiling | Yes | No | Yes | No | No |
|
|
409
|
+
| Session Replay | Yes | Unofficial | No | No | No |
|
|
410
|
+
| MetricKit | Yes (15+) | No | Yes (12+) | No | No |
|
|
411
|
+
| Metrics API | Yes | Yes | Yes | Verify | Yes |
|
|
412
|
+
|
|
413
|
+
### Production Settings
|
|
414
|
+
|
|
415
|
+
Lower sample rates for production to control volume and cost:
|
|
416
|
+
|
|
417
|
+
```swift
|
|
418
|
+
options.tracesSampleRate = 0.2 // 20% of transactions
|
|
419
|
+
|
|
420
|
+
options.configureProfiling = {
|
|
421
|
+
$0.sessionSampleRate = 0.1 // 10% of sessions
|
|
422
|
+
$0.lifecycle = .trace
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
options.sessionReplay.sessionSampleRate = 0.1 // 10% continuous
|
|
426
|
+
options.sessionReplay.onErrorSampleRate = 1.0 // 100% on error (keep high)
|
|
427
|
+
|
|
428
|
+
options.enableLogs = true
|
|
429
|
+
options.enableMetrics = true // default true in SDK 9.12+
|
|
430
|
+
options.debug = false // never in production
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
## Verification
|
|
436
|
+
|
|
437
|
+
Test that Sentry is receiving events:
|
|
438
|
+
|
|
439
|
+
```swift
|
|
440
|
+
// Trigger a test error event:
|
|
441
|
+
SentrySDK.capture(message: "Sentry Cocoa SDK test")
|
|
442
|
+
|
|
443
|
+
// Or test crash reporting (without debugger — crashes are intercepted by debugger):
|
|
444
|
+
// SentrySDK.crash() // uncomment, run without debugger, relaunch to see crash report
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
Check the Sentry dashboard within a few seconds.
|
|
448
|
+
If nothing appears:
|
|
449
|
+
|
|
450
|
+
1. Set `options.debug = true` — prints SDK internals to Xcode console
|
|
451
|
+
2. Verify the DSN is correct and the project exists
|
|
452
|
+
3. Ensure initialization is on the **main thread**
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## Phase 4: Cross-Link
|
|
457
|
+
|
|
458
|
+
After completing Apple setup, check for a companion backend missing Sentry coverage:
|
|
459
|
+
|
|
460
|
+
```bash
|
|
461
|
+
# Detect companion backend
|
|
462
|
+
ls ../backend ../server ../api 2>/dev/null
|
|
463
|
+
cat ../go.mod 2>/dev/null | head -5
|
|
464
|
+
cat ../requirements.txt ../Pipfile 2>/dev/null | head -5
|
|
465
|
+
cat ../Gemfile 2>/dev/null | head -5
|
|
466
|
+
cat ../package.json 2>/dev/null | grep -E '"name"|"dependencies"' | head -5
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
If a backend is found, configure `tracePropagationTargets` to enable distributed tracing
|
|
470
|
+
end-to-end, and suggest the matching skill:
|
|
471
|
+
|
|
472
|
+
| Backend detected | Suggest skill | Trace header support |
|
|
473
|
+
| -------------------------------- | ------------------------------ | -------------------- |
|
|
474
|
+
| Go (`go.mod`) | [`go`](../go/index.md) | Automatic |
|
|
475
|
+
| Python (`requirements.txt`) | [`python`](../python/index.md) | Automatic |
|
|
476
|
+
| Ruby (`Gemfile`) | [`ruby`](../ruby/index.md) | Automatic |
|
|
477
|
+
| Node.js backend (`package.json`) | [`node`](../node/index.md) | Automatic |
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## Troubleshooting
|
|
482
|
+
|
|
483
|
+
| Issue | Solution |
|
|
484
|
+
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
485
|
+
| Events not appearing | Set `debug: true`, verify DSN format, ensure init is on main thread |
|
|
486
|
+
| Crashes not captured | **Run without debugger attached** — debugger intercepts signals |
|
|
487
|
+
| App hangs not reported | Auto-disabled when debugger attached; check `appHangTimeoutInterval` |
|
|
488
|
+
| Session Replay not recording | Verify `sessionSampleRate > 0` or `onErrorSampleRate > 0`; on iOS 26+ verify masking and any manual Liquid Glass gating |
|
|
489
|
+
| Tracing data missing | Confirm `tracesSampleRate > 0`; check `enableAutoPerformanceTracing = true` |
|
|
490
|
+
| Profiling data missing | Verify `sessionSampleRate > 0` in `configureProfiling`; for `.trace` lifecycle, tracing must be enabled |
|
|
491
|
+
| `rsync.samba` build error (CocoaPods) | Target Settings → “Enable User Script Sandbox” → `NO` |
|
|
492
|
+
| Multiple SPM products selected | Choose **only one** of `Sentry`, `Sentry-Dynamic`, `SentrySwiftUI`, `Sentry-WithoutUIKitOrAppKit`, or `SentrySPM` (with `NoUIFramework` trait on Swift 6.1+) |
|
|
493
|
+
| `inAppExclude` compile error | Removed in SDK 9.0.0 — use `options.add(inAppInclude:)` |
|
|
494
|
+
| `enableAppHangTrackingV2` compile error | Removed in SDK 9.0.0 — use `enableAppHangTracking`; V2 behavior is default where supported |
|
|
495
|
+
| Watchdog termination not tracked | Requires `enableCrashHandler = true` (it is by default) |
|
|
496
|
+
| Network breadcrumbs missing | Requires `enableSwizzling = true` (it is by default) |
|
|
497
|
+
| `profilesSampleRate` compile error | Removed in SDK 9.0.0 — use `configureProfiling` closure instead |
|