@danieljvdm/dev-kit 1.0.1 → 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 +6 -29
- package/skill-sources.lock.json +23 -109
- 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 +11 -115
- package/skills/open-pull-request/agents/openai.yaml +3 -3
- 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,524 @@
|
|
|
1
|
+
# Tracing — Sentry Cocoa SDK
|
|
2
|
+
|
|
3
|
+
> Minimum SDK: `sentry-cocoa` v7.0.0+ SwiftUI instrumentation stable: v8.17.0+ File I/O
|
|
4
|
+
> manual tracing extensions: v8.48.0+
|
|
5
|
+
|
|
6
|
+
## Configuration
|
|
7
|
+
|
|
8
|
+
| Option | Type | Default | Description |
|
|
9
|
+
| -------------------------------- | ------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
10
|
+
| `tracesSampleRate` | `Double` (0.0–1.0) | `nil` | Uniform sample rate; mutually exclusive with `tracesSampler` |
|
|
11
|
+
| `tracesSampler` | `(SentrySamplingContext) -> NSNumber` | `nil` | Dynamic per-transaction sampling; overrides `tracesSampleRate` |
|
|
12
|
+
| `enableAutoPerformanceTracing` | `Bool` | `true` | Master switch for all automatic instrumentation |
|
|
13
|
+
| `enableUIViewControllerTracing` | `Bool` | `true` | UIViewController lifecycle spans |
|
|
14
|
+
| `enableUserInteractionTracing` | `Bool` | `true` | Transactions for UIControl tap/click events |
|
|
15
|
+
| `enableNetworkTracking` | `Bool` | `true` | URLSession HTTP request spans |
|
|
16
|
+
| `enableFileIOTracing` | `Bool` | `true` | NSData / FileManager file I/O spans |
|
|
17
|
+
| `enableCoreDataTracing` | `Bool` | `true` | Core Data fetch/save spans |
|
|
18
|
+
| `enableTimeToFullDisplayTracing` | `Bool` | `false` | TTFD span; requires `SentrySDK.reportFullyDisplayed()` |
|
|
19
|
+
| `enablePreWarmedAppStartTracing` | `Bool` | `true` | Prewarmed cold/warm start tracing (iOS 15+) |
|
|
20
|
+
| `enableDataSwizzling` | `Bool` | `true` | NSData swizzling for automatic file I/O tracing |
|
|
21
|
+
| `enableFileManagerSwizzling` | `Bool` | `false` | NSFileManager swizzling (experimental; needed for iOS 18+) |
|
|
22
|
+
| `tracePropagationTargets` | `[Any]` | all requests | Strings or `NSRegularExpression` values for outgoing distributed trace headers |
|
|
23
|
+
| `enableSwizzling` | `Bool` | `true` | Master switch for method swizzling (required by several auto-instrumentation features) |
|
|
24
|
+
| `strictTraceContinuation` | `Bool` | `false` | Only continue an incoming trace when `orgId` matches; prevents cross-org trace continuation (SDK 9.x+) |
|
|
25
|
+
| `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 |
|
|
26
|
+
|
|
27
|
+
## Code Examples
|
|
28
|
+
|
|
29
|
+
### Basic tracing setup
|
|
30
|
+
|
|
31
|
+
```swift
|
|
32
|
+
import Sentry
|
|
33
|
+
|
|
34
|
+
SentrySDK.start { options in
|
|
35
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
36
|
+
options.tracesSampleRate = 1.0 // 100% in dev; lower for production (e.g., 0.2)
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Dynamic sampling with tracesSampler
|
|
41
|
+
|
|
42
|
+
```swift
|
|
43
|
+
SentrySDK.start { options in
|
|
44
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
45
|
+
options.tracesSampler = { context in
|
|
46
|
+
// Never sample next-launch transactions
|
|
47
|
+
if context.isForNextAppLaunch { return 0 }
|
|
48
|
+
// Always sample checkout
|
|
49
|
+
if context.customSamplingContext?["flow"] as? String == "checkout" { return 1.0 }
|
|
50
|
+
// Default: 25%
|
|
51
|
+
return 0.25
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Custom transaction with child spans
|
|
57
|
+
|
|
58
|
+
```swift
|
|
59
|
+
import Sentry
|
|
60
|
+
|
|
61
|
+
func performCheckout() {
|
|
62
|
+
let transaction = SentrySDK.startTransaction(
|
|
63
|
+
name: "checkout",
|
|
64
|
+
operation: "perform-checkout",
|
|
65
|
+
bindToScope: true // makes it accessible via SentrySDK.span
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
let validationSpan = transaction.startChild(
|
|
69
|
+
operation: "validation",
|
|
70
|
+
description: "validating shopping cart"
|
|
71
|
+
)
|
|
72
|
+
validateShoppingCart()
|
|
73
|
+
validationSpan.finish()
|
|
74
|
+
|
|
75
|
+
let processSpan = transaction.startChild(
|
|
76
|
+
operation: "process",
|
|
77
|
+
description: "processing payment"
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
do {
|
|
81
|
+
try processPayment()
|
|
82
|
+
processSpan.finish()
|
|
83
|
+
transaction.finish()
|
|
84
|
+
} catch {
|
|
85
|
+
SentrySDK.capture(error: error)
|
|
86
|
+
processSpan.finish(status: .internalError)
|
|
87
|
+
transaction.finish(status: .internalError)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Accessing the scope-bound span from a called function
|
|
93
|
+
|
|
94
|
+
```swift
|
|
95
|
+
func processPayment() {
|
|
96
|
+
// Grab the transaction bound to scope (or start a standalone one)
|
|
97
|
+
let span = SentrySDK.span ?? SentrySDK.startTransaction(
|
|
98
|
+
name: "processPayment",
|
|
99
|
+
operation: "task"
|
|
100
|
+
)
|
|
101
|
+
let child = span.startChild(operation: "payment.gateway")
|
|
102
|
+
defer { child.finish() }
|
|
103
|
+
|
|
104
|
+
// payment logic...
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Setting data attributes on transactions and spans
|
|
109
|
+
|
|
110
|
+
```swift
|
|
111
|
+
let transaction = SentrySDK.startTransaction(name: "sync", operation: "task")
|
|
112
|
+
transaction.setData(value: "incremental", key: "sync.type")
|
|
113
|
+
transaction.setData(value: 42, key: "sync.item_count")
|
|
114
|
+
transaction.setData(value: true, key: "sync.force")
|
|
115
|
+
transaction.setData(value: ["a", "b"], key: "sync.queues")
|
|
116
|
+
|
|
117
|
+
let span = transaction.startChild(operation: "db.fetch")
|
|
118
|
+
span.setData(value: "orders", key: "db.table")
|
|
119
|
+
span.finish()
|
|
120
|
+
transaction.finish()
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Custom performance measurements
|
|
124
|
+
|
|
125
|
+
```swift
|
|
126
|
+
let span = SentrySDK.span
|
|
127
|
+
|
|
128
|
+
span?.setMeasurement(name: "memory_used",
|
|
129
|
+
value: 64,
|
|
130
|
+
unit: MeasurementUnitInformation.megabyte)
|
|
131
|
+
|
|
132
|
+
span?.setMeasurement(name: "profile_load_time",
|
|
133
|
+
value: 1.3,
|
|
134
|
+
unit: MeasurementUnitDuration.second)
|
|
135
|
+
|
|
136
|
+
span?.setMeasurement(name: "items_processed", value: 128)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Automatic Instrumentation
|
|
142
|
+
|
|
143
|
+
All features are enabled once `tracesSampleRate > 0` (or `tracesSampler` is set).
|
|
144
|
+
Disable all at once with `enableAutoPerformanceTracing = false`.
|
|
145
|
+
|
|
146
|
+
### App Start Tracing
|
|
147
|
+
|
|
148
|
+
**Platforms:** iOS, tvOS, Mac Catalyst
|
|
149
|
+
|
|
150
|
+
Measures process creation → first rendered frame.
|
|
151
|
+
Start type classifications:
|
|
152
|
+
|
|
153
|
+
| Type | Description |
|
|
154
|
+
| ---------------- | ----------------------------------------- |
|
|
155
|
+
| `cold` | First launch, post-reboot, or post-update |
|
|
156
|
+
| `warm` | Any other process creation |
|
|
157
|
+
| `cold.prewarmed` | Cold start with OS pre-warm (iOS 15+) |
|
|
158
|
+
| `warm.prewarmed` | Warm start with OS pre-warm (iOS 15+) |
|
|
159
|
+
|
|
160
|
+
Child spans produced (sequential):
|
|
161
|
+
|
|
162
|
+
| Span | Measures |
|
|
163
|
+
| ------------------------------------- | --------------------------------------------------------------------- |
|
|
164
|
+
| Pre Runtime Init | Process start → runtime init |
|
|
165
|
+
| Runtime Init to Pre Main Initializers | Runtime init → pre-main setup |
|
|
166
|
+
| UIKit Init | Pre-main → Sentry SDK startup |
|
|
167
|
+
| Application Init | SDK startup → `didFinishLaunchingNotification` |
|
|
168
|
+
| Initial Frame Render | `didFinishLaunchingNotification` → first CADisplayLink callback (v9+) |
|
|
169
|
+
|
|
170
|
+
> Warning: If more than **180 seconds** (3 minutes) elapse between transaction start and
|
|
171
|
+
> app-start end, app start spans are **not attached** to avoid misassociation.
|
|
172
|
+
> This limit is skipped when standalone app start tracing is enabled.
|
|
173
|
+
|
|
174
|
+
#### Standalone App Start Tracing (Experimental, 9.15.0+)
|
|
175
|
+
|
|
176
|
+
**Platforms:** iOS, tvOS, visionOS
|
|
177
|
+
|
|
178
|
+
By default, app start transactions are attached to the first UIViewController
|
|
179
|
+
transaction. Standalone app start tracing creates a dedicated transaction just for app
|
|
180
|
+
launch, independent of any UIViewController.
|
|
181
|
+
|
|
182
|
+
```swift
|
|
183
|
+
SentrySDK.start { options in
|
|
184
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
185
|
+
options.tracesSampleRate = 1.0
|
|
186
|
+
options.experimental.enableStandaloneAppStartTracing = true
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Extending app launch beyond the default end point (9.15.0+):**
|
|
191
|
+
|
|
192
|
+
For apps with initial data loading or authentication flows, you can extend the app start
|
|
193
|
+
measurement:
|
|
194
|
+
|
|
195
|
+
```swift
|
|
196
|
+
// UIKit — in AppDelegate
|
|
197
|
+
func application(
|
|
198
|
+
_ application: UIApplication,
|
|
199
|
+
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
|
200
|
+
) -> Bool {
|
|
201
|
+
SentrySDK.start { options in
|
|
202
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
203
|
+
options.tracesSampleRate = 1.0
|
|
204
|
+
options.experimental.enableStandaloneAppStartTracing = true
|
|
205
|
+
}
|
|
206
|
+
SentrySDK.extendAppLaunch() // call before didFinishLaunchingNotification is posted
|
|
207
|
+
return true
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Later, when your app is fully ready:
|
|
211
|
+
func onInitialDataLoaded() {
|
|
212
|
+
SentrySDK.finishExtendedAppLaunch()
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
```swift
|
|
217
|
+
// SwiftUI — in App constructor
|
|
218
|
+
@main
|
|
219
|
+
struct MyApp: App {
|
|
220
|
+
init() {
|
|
221
|
+
SentrySDK.start { options in
|
|
222
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
223
|
+
options.tracesSampleRate = 1.0
|
|
224
|
+
options.experimental.enableStandaloneAppStartTracing = true
|
|
225
|
+
}
|
|
226
|
+
SentrySDK.extendAppLaunch()
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
var body: some Scene {
|
|
230
|
+
WindowGroup {
|
|
231
|
+
ContentView()
|
|
232
|
+
.onAppear {
|
|
233
|
+
// After initial data loads:
|
|
234
|
+
SentrySDK.finishExtendedAppLaunch()
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
> **Note:** `extendAppLaunch()` must be called after `SentrySDK.start()` but before the
|
|
242
|
+
> `didFinishLaunchingNotification` is posted.
|
|
243
|
+
> If not called, or if the extended launch was already finished,
|
|
244
|
+
> `finishExtendedAppLaunch()` does nothing.
|
|
245
|
+
|
|
246
|
+
### URLSession Network Tracking
|
|
247
|
+
|
|
248
|
+
**Platforms:** All **Note:** `NSURLConnection` is **not** supported — only
|
|
249
|
+
`NSURLSession`.
|
|
250
|
+
|
|
251
|
+
Automatically adds HTTP spans to any active scope-bound transaction.
|
|
252
|
+
|
|
253
|
+
```swift
|
|
254
|
+
// Disable
|
|
255
|
+
options.enableNetworkTracking = false
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### UIViewController Lifecycle Tracing
|
|
259
|
+
|
|
260
|
+
**Platforms:** iOS, tvOS, Mac Catalyst **Not available for:** SwiftUI (use
|
|
261
|
+
`SentryTracedView` instead)
|
|
262
|
+
|
|
263
|
+
- Transaction operation: `ui.load`
|
|
264
|
+
- Transaction name: `Your_App.MainViewController`
|
|
265
|
+
- Auto-generated child spans: `loadView`, `viewDidLoad`, `viewWillAppear`,
|
|
266
|
+
`viewDidAppear`
|
|
267
|
+
- Time to Initial Display (TTID) span: `ui.load.initial-display`
|
|
268
|
+
|
|
269
|
+
```swift
|
|
270
|
+
// Include framework view controllers
|
|
271
|
+
options.add(inAppInclude: "MyFramework")
|
|
272
|
+
|
|
273
|
+
// Exclude specific view controllers
|
|
274
|
+
options.swizzleClassNameExcludes = ["MyModalViewController"]
|
|
275
|
+
|
|
276
|
+
// Disable entirely
|
|
277
|
+
options.enableUIViewControllerTracing = false
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Time to Full Display (TTFD)
|
|
281
|
+
|
|
282
|
+
```swift
|
|
283
|
+
// Enable globally
|
|
284
|
+
options.enableTimeToFullDisplayTracing = true
|
|
285
|
+
|
|
286
|
+
// In your view controller, signal when async content is fully loaded:
|
|
287
|
+
SentrySDK.reportFullyDisplayed()
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
TTFD span status:
|
|
291
|
+
|
|
292
|
+
| Scenario | Status |
|
|
293
|
+
| ------------------------------- | --------------------------------------------- |
|
|
294
|
+
| `reportFullyDisplayed()` called | `.ok` |
|
|
295
|
+
| Not finished within 30 seconds | `.deadlineExceeded`; duration = TTID duration |
|
|
296
|
+
| Called before view appears | Reported time = TTID time |
|
|
297
|
+
|
|
298
|
+
### SwiftUI Instrumentation
|
|
299
|
+
|
|
300
|
+
For SDK 9.4.1+, SwiftUI tracing APIs are available from the main `Sentry` module.
|
|
301
|
+
The `SentrySwiftUI` product/module still exists as a deprecated re-export for older
|
|
302
|
+
setups.
|
|
303
|
+
|
|
304
|
+
```swift
|
|
305
|
+
import Sentry
|
|
306
|
+
|
|
307
|
+
// Option 1: wrapper
|
|
308
|
+
var body: some View {
|
|
309
|
+
SentryTracedView("My Awesome Screen") {
|
|
310
|
+
List { /* content */ }
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Option 2: modifier
|
|
315
|
+
var body: some View {
|
|
316
|
+
List { /* content */ }
|
|
317
|
+
.sentryTrace("My Awesome Screen")
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// With TTFD (v8.44.0+)
|
|
321
|
+
SentryTracedView("Content", waitForFullDisplay: true) {
|
|
322
|
+
VStack { /* async content */ }
|
|
323
|
+
.onAppear {
|
|
324
|
+
Task {
|
|
325
|
+
data = await loadData()
|
|
326
|
+
SentrySDK.reportFullyDisplayed()
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
If maintaining an older project that already uses the `SentrySwiftUI` product,
|
|
333
|
+
`import SentrySwiftUI` still works in SDK 9.x but should be migrated to `import Sentry`
|
|
334
|
+
before the next major version.
|
|
335
|
+
Source-build `SentrySPM` projects may expose the module as `SentrySwift`; verify imports
|
|
336
|
+
against the selected product.
|
|
337
|
+
|
|
338
|
+
### Slow & Frozen Frames
|
|
339
|
+
|
|
340
|
+
**Platforms:** iOS, tvOS, Mac Catalyst Tracked automatically during any active
|
|
341
|
+
transaction. Appears as Mobile Vitals in the Sentry Performance UI.
|
|
342
|
+
|
|
343
|
+
| Threshold | Classification |
|
|
344
|
+
| ------------------ | -------------- |
|
|
345
|
+
| > 16 ms per frame | Slow frame |
|
|
346
|
+
| > 700 ms per frame | Frozen frame |
|
|
347
|
+
|
|
348
|
+
### User Interaction Tracing
|
|
349
|
+
|
|
350
|
+
**Platforms:** iOS, tvOS, Mac Catalyst **Not available for:** SwiftUI
|
|
351
|
+
|
|
352
|
+
Creates a transaction for every UIControl tap/click.
|
|
353
|
+
|
|
354
|
+
- Transaction operation: `ui.action` or `ui.action.click`
|
|
355
|
+
- Transaction name: `YourApp_LoginViewController.loginButton`
|
|
356
|
+
- `idleTimeout`: 3000 ms — transaction finishes if no child spans within 3 seconds
|
|
357
|
+
- Transactions with **no child spans** are dropped
|
|
358
|
+
|
|
359
|
+
```swift
|
|
360
|
+
// Create child spans inside a tap handler:
|
|
361
|
+
func onLoginTapped() {
|
|
362
|
+
let span = SentrySDK.span
|
|
363
|
+
let child = span?.startChild(operation: "loadUserProfile")
|
|
364
|
+
// ... work ...
|
|
365
|
+
child?.finish()
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// Disable
|
|
369
|
+
options.enableUserInteractionTracing = false
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### File I/O Tracing (NSData)
|
|
373
|
+
|
|
374
|
+
**Platforms:** All Tracks `NSData` read/write operations as spans.
|
|
375
|
+
|
|
376
|
+
```swift
|
|
377
|
+
options.enableFileIOTracing = true // default
|
|
378
|
+
|
|
379
|
+
// iOS 18+ / macOS 15+: NSFileManager no longer backed by NSData
|
|
380
|
+
// Enable experimental NSFileManager swizzling:
|
|
381
|
+
options.enableFileManagerSwizzling = true // experimental, v9.0.0+
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
**Manual tracing extensions (v8.48.0+)** — only create spans when an active transaction
|
|
385
|
+
exists:
|
|
386
|
+
|
|
387
|
+
```swift
|
|
388
|
+
// Data read/write
|
|
389
|
+
let data = try Data(contentsOfWithSentryTracing: url)
|
|
390
|
+
try data.writeWithSentryTracing(to: url)
|
|
391
|
+
|
|
392
|
+
// FileManager
|
|
393
|
+
let fm = FileManager.default
|
|
394
|
+
fm.createFileWithSentryTracing(atPath: path, contents: data)
|
|
395
|
+
try fm.moveItemWithSentryTracing(at: src, to: dst)
|
|
396
|
+
try fm.copyItemWithSentryTracing(at: src, to: dst)
|
|
397
|
+
try fm.removeItemWithSentryTracing(at: url)
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
Span operations created:
|
|
401
|
+
|
|
402
|
+
| Method | Span Op |
|
|
403
|
+
| -------------------------------- | ------------- |
|
|
404
|
+
| `Data.init(contentsOf:)` | `file.read` |
|
|
405
|
+
| `data.write(to:)` / `createFile` | `file.write` |
|
|
406
|
+
| `moveItem` | `file.rename` |
|
|
407
|
+
| `copyItem` | `file.copy` |
|
|
408
|
+
| `removeItem` | `file.delete` |
|
|
409
|
+
|
|
410
|
+
### Core Data Tracing
|
|
411
|
+
|
|
412
|
+
**Platforms:** All Instruments `NSManagedObjectContext` fetch and save operations.
|
|
413
|
+
|
|
414
|
+
```swift
|
|
415
|
+
options.enableCoreDataTracing = true // default
|
|
416
|
+
|
|
417
|
+
// Disable
|
|
418
|
+
options.enableCoreDataTracing = false
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## Distributed Tracing
|
|
424
|
+
|
|
425
|
+
Sentry injects two headers into outgoing `NSURLSession` requests when the host matches
|
|
426
|
+
`tracePropagationTargets`:
|
|
427
|
+
|
|
428
|
+
| Header | Purpose |
|
|
429
|
+
| -------------- | ------------------------------------------------ |
|
|
430
|
+
| `sentry-trace` | Carries trace ID, span ID, and sampled flag |
|
|
431
|
+
| `baggage` | Carries Dynamic Sampling Context key-value pairs |
|
|
432
|
+
|
|
433
|
+
```swift
|
|
434
|
+
SentrySDK.start { options in
|
|
435
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
436
|
+
options.tracesSampleRate = 1.0
|
|
437
|
+
|
|
438
|
+
// Only propagate to your own backend (default: all requests).
|
|
439
|
+
// Plain strings are matched as substrings ("contains"); wrap a
|
|
440
|
+
// pattern in NSRegularExpression for it to be evaluated as a regex.
|
|
441
|
+
var targets: [Any] = ["api.myapp.com"] // substring match
|
|
442
|
+
if let subdomainRegex = try? NSRegularExpression(pattern: ".*\\.myapp\\.com") {
|
|
443
|
+
targets.append(subdomainRegex) // regex match
|
|
444
|
+
}
|
|
445
|
+
options.tracePropagationTargets = targets
|
|
446
|
+
|
|
447
|
+
// Also add W3C traceparent header (requires sentry-cocoa 9.0.0+)
|
|
448
|
+
options.enablePropagateTraceparent = true
|
|
449
|
+
}
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
> **`enablePropagateTraceparent` requires sentry-cocoa 9.0.0+.** It is not available in
|
|
453
|
+
> 8.x.
|
|
454
|
+
>
|
|
455
|
+
> Warning: Both headers must be included in CORS allowlists and must not be blocked by
|
|
456
|
+
> proxies or firewalls.
|
|
457
|
+
|
|
458
|
+
### Strict Trace Continuation (SDK 9.x+)
|
|
459
|
+
|
|
460
|
+
Enable `strictTraceContinuation` to reject incoming traces from other Sentry
|
|
461
|
+
organizations. When enabled, the SDK validates that the `sentry-trace` header’s
|
|
462
|
+
organization ID matches your DSN’s organization before continuing the trace:
|
|
463
|
+
|
|
464
|
+
```swift
|
|
465
|
+
SentrySDK.start { options in
|
|
466
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
467
|
+
options.tracesSampleRate = 1.0
|
|
468
|
+
|
|
469
|
+
// Only accept traces from your own Sentry organization
|
|
470
|
+
options.strictTraceContinuation = true
|
|
471
|
+
// orgId is auto-parsed from DSN host; override only if needed:
|
|
472
|
+
// options.orgId = "12345"
|
|
473
|
+
}
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## Platform Support Matrix
|
|
479
|
+
|
|
480
|
+
| Feature | iOS | tvOS | macOS | Mac Catalyst |
|
|
481
|
+
| ----------------------------- | --------- | --------- | --------- | ------------ |
|
|
482
|
+
| `tracesSampleRate` | Yes | Yes | Yes | Yes |
|
|
483
|
+
| App Start Tracing | Yes | Yes | No | Yes |
|
|
484
|
+
| UIViewController Lifecycle | Yes | Yes | No | Yes |
|
|
485
|
+
| TTID / TTFD | Yes | Yes | No | Yes |
|
|
486
|
+
| Slow & Frozen Frames | Yes | Yes | No | Yes |
|
|
487
|
+
| Network Tracking (URLSession) | Yes | Yes | Yes | Yes |
|
|
488
|
+
| File I/O Tracing | Yes | Yes | Yes | Yes |
|
|
489
|
+
| Core Data Tracing | Yes | Yes | Yes | Yes |
|
|
490
|
+
| User Interaction Tracing | Yes | Yes | No | Yes |
|
|
491
|
+
| SwiftUI (`SentryTracedView`) | Yes (13+) | Yes | Yes | Yes |
|
|
492
|
+
| Prewarmed App Start | Yes (15+) | No | No | No |
|
|
493
|
+
| NSFileManager Swizzling | Yes (18+) | Yes (18+) | Yes (15+) | Yes |
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
## Best Practices
|
|
498
|
+
|
|
499
|
+
- Start with `tracesSampleRate = 1.0` in development; lower to `0.1`–`0.2` in production
|
|
500
|
+
- Use `tracesSampler` (not `tracesSampleRate`) for route-specific or user-tier-based
|
|
501
|
+
sampling
|
|
502
|
+
- Use `bindToScope: true` when starting a transaction so child spans created anywhere in
|
|
503
|
+
the call stack are automatically linked
|
|
504
|
+
- Always `finish()` spans — unfinished spans are silently dropped
|
|
505
|
+
- Use `SentryTracedView` or `.sentryTrace()` from the main `Sentry` module for SwiftUI
|
|
506
|
+
screens on SDK 9.4.1+ (UIViewController tracing doesn’t apply)
|
|
507
|
+
- Call `SentrySDK.reportFullyDisplayed()` only after your async data has been rendered —
|
|
508
|
+
not just loaded
|
|
509
|
+
- Avoid setting `tracePropagationTargets = [".*"]` in production if you make requests to
|
|
510
|
+
third-party services not using Sentry
|
|
511
|
+
|
|
512
|
+
## Troubleshooting
|
|
513
|
+
|
|
514
|
+
| Issue | Solution |
|
|
515
|
+
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
516
|
+
| No transactions appearing | Ensure `tracesSampleRate > 0` or `tracesSampler` returns `> 0` |
|
|
517
|
+
| Spans missing from transactions | Ensure `span.finish()` is called; check `bindToScope: true` for cross-function spans |
|
|
518
|
+
| App start spans not attached | Gap between transaction start and app-start end exceeded 180 seconds; check slow initialization or enable standalone app start tracing |
|
|
519
|
+
| UIViewController tracing missing | Verify `enableSwizzling = true`; check class is not in `swizzleClassNameExcludes` |
|
|
520
|
+
| Network spans not appearing | Requires active scope-bound transaction; verify `enableNetworkTracking = true` and `enableSwizzling = true` |
|
|
521
|
+
| Distributed trace not linking to backend | Propagate both `sentry-trace` AND `baggage` headers; add them to CORS allowlist |
|
|
522
|
+
| File I/O spans missing on iOS 18+ | Enable `enableFileManagerSwizzling = true` (experimental) or use manual `WithSentryTracing` extensions |
|
|
523
|
+
| `SentryTracedView` not available | SDK 9.4.1+: use `import Sentry` with the `Sentry` product; older/deprecated setups may need the `SentrySwiftUI` product |
|
|
524
|
+
| High-cardinality transaction names | UIViewController transactions use class name — expected; custom transactions should use stable names |
|