@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,257 @@
|
|
|
1
|
+
# Session Replay — Sentry Cocoa SDK
|
|
2
|
+
|
|
3
|
+
> Minimum SDK: `sentry-cocoa` v8.31.1+ View Renderer V2 (default): v8.50.0+ Official
|
|
4
|
+
> support: iOS 16+ with UIKit and SwiftUI. tvOS 16+ may work but is not officially
|
|
5
|
+
> supported. SDK 9.12.0+ runs on iOS 26 Liquid Glass; verify masking for your app.
|
|
6
|
+
|
|
7
|
+
## Configuration
|
|
8
|
+
|
|
9
|
+
| Option | Type | Default | Description |
|
|
10
|
+
| -------------------------------------------------- | ---------------------- | -------------------- | ---------------------------------------------------------------- |
|
|
11
|
+
| `sessionReplay.sessionSampleRate` | `Float` (0.0–1.0) | `0` | Continuous recording sample rate |
|
|
12
|
+
| `sessionReplay.onErrorSampleRate` | `Float` (0.0–1.0) | `0` | Buffered recording sample rate (uploads on error) |
|
|
13
|
+
| `sessionReplay.maskAllText` | `Bool` | `true` | Mask all text content |
|
|
14
|
+
| `sessionReplay.maskAllImages` | `Bool` | `true` | Mask all images |
|
|
15
|
+
| `sessionReplay.maskedViewClasses` | `[AnyClass]` | `[]` | Additional view classes to always mask |
|
|
16
|
+
| `sessionReplay.unmaskedViewClasses` | `[AnyClass]` | `[]` | View classes to always unmask |
|
|
17
|
+
| `sessionReplay.quality` | `SentryReplayQuality` | `.medium` | Video quality (bitrate and resolution) |
|
|
18
|
+
| `sessionReplay.enableViewRendererV2` | `Bool` | `true` | Faster renderer (default since v8.50.0) |
|
|
19
|
+
| `sessionReplay.enableFastViewRendering` | `Bool` | `false` | Experimental CALayer renderer (faster, less accurate) |
|
|
20
|
+
| `sessionReplay.frameRate` | `UInt` | `1` | Frames per second |
|
|
21
|
+
| `sessionReplay.errorReplayDuration` | `TimeInterval` | `30` | Seconds of buffer kept before an error |
|
|
22
|
+
| `sessionReplay.sessionSegmentDuration` | `TimeInterval` | `5` | Seconds per upload segment |
|
|
23
|
+
| `sessionReplay.maximumDuration` | `TimeInterval` | `3600` | Maximum session duration (60 min) |
|
|
24
|
+
| `experimental.enableReplayNetworkDetailsCapturing` | `Bool` | `false` | Capture request/response details in replays (SDK 9.12+) |
|
|
25
|
+
| `sessionReplay.networkDetailAllowUrls` | `[SentryUrlMatchable]` | `[]` | URL allowlist for replay network details |
|
|
26
|
+
| `sessionReplay.networkDetailDenyUrls` | `[SentryUrlMatchable]` | `[]` | URL denylist for replay network details |
|
|
27
|
+
| `sessionReplay.networkCaptureBodies` | `Bool` | `true` | Capture bodies for allowed URLs when network details are enabled |
|
|
28
|
+
| `sessionReplay.networkRequestHeaders` | `[String]` | default safe headers | Request headers to capture for allowed URLs |
|
|
29
|
+
| `sessionReplay.networkResponseHeaders` | `[String]` | default safe headers | Response headers to capture for allowed URLs |
|
|
30
|
+
|
|
31
|
+
## Code Examples
|
|
32
|
+
|
|
33
|
+
### Basic setup
|
|
34
|
+
|
|
35
|
+
```swift
|
|
36
|
+
import Sentry
|
|
37
|
+
|
|
38
|
+
SentrySDK.start { options in
|
|
39
|
+
options.dsn = "___PUBLIC_DSN___"
|
|
40
|
+
|
|
41
|
+
// Continuously record 10% of sessions
|
|
42
|
+
options.sessionReplay.sessionSampleRate = 0.1
|
|
43
|
+
|
|
44
|
+
// Buffer and upload on error for all other sessions
|
|
45
|
+
options.sessionReplay.onErrorSampleRate = 1.0
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Sampling logic:** `sessionSampleRate` is evaluated first.
|
|
50
|
+
If not selected for continuous recording, the SDK switches to buffered mode and
|
|
51
|
+
evaluates `onErrorSampleRate` — keeping a rolling buffer that is uploaded only when an
|
|
52
|
+
error fires.
|
|
53
|
+
|
|
54
|
+
### Session lifecycle
|
|
55
|
+
|
|
56
|
+
- **Starts:** SDK init or app foreground
|
|
57
|
+
- **Ends:** 30+ seconds in background, or 60-minute maximum
|
|
58
|
+
- **Buffer mode:** Keeps a rolling 30-second window; uploaded on error capture
|
|
59
|
+
- **Segments:** Chunked into 5-second segments for upload
|
|
60
|
+
- **Resumes:** Within 30 seconds of foreground using the same `replay_id`
|
|
61
|
+
|
|
62
|
+
### Privacy masking defaults
|
|
63
|
+
|
|
64
|
+
What is masked by default:
|
|
65
|
+
|
|
66
|
+
- Masked: all text content (`maskAllText = true`)
|
|
67
|
+
- Masked: all images (`maskAllImages = true`)
|
|
68
|
+
- Masked: user input fields (always masked, regardless of settings)
|
|
69
|
+
- Masked: video players
|
|
70
|
+
- Masked: WebViews
|
|
71
|
+
- Not masked by default: bundled image assets (considered low PII risk; shown in replay)
|
|
72
|
+
|
|
73
|
+
### SwiftUI view modifiers
|
|
74
|
+
|
|
75
|
+
```swift
|
|
76
|
+
import Sentry
|
|
77
|
+
|
|
78
|
+
// UNMASK a specific view (show in replay despite global maskAllText/maskAllImages)
|
|
79
|
+
Text("Public promotion text")
|
|
80
|
+
.sentryReplayUnmask()
|
|
81
|
+
|
|
82
|
+
// MASK a specific view (hide in replay even if global masking is off)
|
|
83
|
+
Text("\(user.creditCardNumber)")
|
|
84
|
+
.sentryReplayMask()
|
|
85
|
+
|
|
86
|
+
// Visualize masking overlay in DEBUG builds / Xcode Previews
|
|
87
|
+
ContentView()
|
|
88
|
+
.sentryReplayPreviewMask()
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### UIKit view instance masking
|
|
92
|
+
|
|
93
|
+
```swift
|
|
94
|
+
// Mask a single UIView instance
|
|
95
|
+
myView.sentryReplayMask()
|
|
96
|
+
// equivalent:
|
|
97
|
+
SentrySDK.replay.maskView(view: myView)
|
|
98
|
+
|
|
99
|
+
// Unmask a single UIView instance
|
|
100
|
+
myLabel.sentryReplayUnmask()
|
|
101
|
+
// equivalent:
|
|
102
|
+
SentrySDK.replay.unmaskView(view: myLabel)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
> Note: Masking targets `UIView` subclasses only.
|
|
106
|
+
> You **cannot** target `UIViewController` types directly.
|
|
107
|
+
|
|
108
|
+
### Class-level masking (all instances of a class)
|
|
109
|
+
|
|
110
|
+
```swift
|
|
111
|
+
SentrySDK.start { options in
|
|
112
|
+
options.sessionReplay.maskedViewClasses = [MySecretView.self, CreditCardField.self]
|
|
113
|
+
options.sessionReplay.unmaskedViewClasses = [MyPublicBanner.self]
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Debug — visualize the masking overlay live
|
|
118
|
+
|
|
119
|
+
```swift
|
|
120
|
+
#if DEBUG
|
|
121
|
+
SentrySDK.replay.showMaskPreview() // full opacity
|
|
122
|
+
SentrySDK.replay.showMaskPreview(0.5) // 50% opacity
|
|
123
|
+
#endif
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Network details in replays (SDK 9.12+)
|
|
127
|
+
|
|
128
|
+
Network details are opt-in and require both the experimental flag and an allowlist:
|
|
129
|
+
|
|
130
|
+
```swift
|
|
131
|
+
SentrySDK.start { options in
|
|
132
|
+
options.experimental.enableReplayNetworkDetailsCapturing = true
|
|
133
|
+
options.sessionReplay.networkDetailAllowUrls = [
|
|
134
|
+
"api.myapp.com",
|
|
135
|
+
".*\\.myapp\\.com"
|
|
136
|
+
]
|
|
137
|
+
options.sessionReplay.networkDetailDenyUrls = [
|
|
138
|
+
"api.myapp.com/oauth",
|
|
139
|
+
"api.myapp.com/payment"
|
|
140
|
+
]
|
|
141
|
+
options.sessionReplay.networkCaptureBodies = false
|
|
142
|
+
options.sessionReplay.networkRequestHeaders = ["Content-Type", "X-Request-ID"]
|
|
143
|
+
options.sessionReplay.networkResponseHeaders = ["Content-Type", "X-Request-ID"]
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Keep request and response bodies disabled unless you have explicitly reviewed them for
|
|
148
|
+
sensitive data.
|
|
149
|
+
|
|
150
|
+
### Exclude views from subtree traversal
|
|
151
|
+
|
|
152
|
+
For views that cause crashes or performance issues during replay capture:
|
|
153
|
+
|
|
154
|
+
```swift
|
|
155
|
+
options.sessionReplay.excludeViewTypeFromSubtreeTraversal("MyProblematicView")
|
|
156
|
+
// Force-include a system view normally excluded:
|
|
157
|
+
options.sessionReplay.includeViewTypeInSubtreeTraversal("CameraUI.ChromeSwiftUIView")
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Reducing performance overhead
|
|
161
|
+
|
|
162
|
+
```swift
|
|
163
|
+
SentrySDK.start { options in
|
|
164
|
+
options.sessionReplay.quality = .low // lower bitrate/resolution
|
|
165
|
+
options.sessionReplay.enableFastViewRendering = true // CALayer renderer (faster, less accurate)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Disable entirely on low-power / low-end devices:
|
|
169
|
+
if ProcessInfo.processInfo.isLowPowerModeEnabled {
|
|
170
|
+
options.sessionReplay.sessionSampleRate = 0.0
|
|
171
|
+
options.sessionReplay.onErrorSampleRate = 0.0
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Quality enum values
|
|
176
|
+
|
|
177
|
+
| Value | Bit Rate | Resolution |
|
|
178
|
+
| --------- | -------- | ---------- |
|
|
179
|
+
| `.low` | ~50 kbps | Reduced |
|
|
180
|
+
| `.medium` | Default | Default |
|
|
181
|
+
| `.high` | Higher | Full |
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## iOS 26 / Xcode 26 / Liquid Glass
|
|
186
|
+
|
|
187
|
+
There is version-specific behavior here:
|
|
188
|
+
|
|
189
|
+
- SDK 8.57.0 through 9.11.x auto-disabled Session Replay on iOS 26 Liquid Glass builds
|
|
190
|
+
to avoid masking risks.
|
|
191
|
+
- SDK 9.12.0+ removed that safeguard after redaction fixes; Session Replay records on
|
|
192
|
+
iOS 26 again.
|
|
193
|
+
- If your app needs to keep replay disabled for Liquid Glass, gate `sessionSampleRate`
|
|
194
|
+
and `onErrorSampleRate` yourself.
|
|
195
|
+
|
|
196
|
+
Example manual gate:
|
|
197
|
+
|
|
198
|
+
```swift
|
|
199
|
+
var sessionRate: Float = 0.1
|
|
200
|
+
var errorRate: Float = 1.0
|
|
201
|
+
|
|
202
|
+
if #available(iOS 26.0, *) {
|
|
203
|
+
let compatibilityMode = Bundle.main.object(forInfoDictionaryKey: "UIDesignRequiresCompatibility") as? Bool ?? false
|
|
204
|
+
let xcodeVersion = Int(Bundle.main.object(forInfoDictionaryKey: "DTXcode") as? String ?? "") ?? 0
|
|
205
|
+
let liquidGlassActive = xcodeVersion >= 2600 && !compatibilityMode
|
|
206
|
+
if liquidGlassActive {
|
|
207
|
+
sessionRate = 0
|
|
208
|
+
errorRate = 0
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
options.sessionReplay.sessionSampleRate = sessionRate
|
|
213
|
+
options.sessionReplay.onErrorSampleRate = errorRate
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Performance Overhead (iPhone 14 Pro benchmarks)
|
|
219
|
+
|
|
220
|
+
| Metric | Without Replay | With Replay |
|
|
221
|
+
| ----------------------- | -------------- | ----------- |
|
|
222
|
+
| FPS | 55 | 53 |
|
|
223
|
+
| Memory | 102 MB | 121 MB |
|
|
224
|
+
| CPU | 4% | 13% |
|
|
225
|
+
| Main thread per capture | — | ~25 ms |
|
|
226
|
+
| Network bandwidth | — | ~10 KB/s |
|
|
227
|
+
|
|
228
|
+
> iPhone 8 and older: The ~25 ms capture time exceeds the 16.7 ms frame budget, causing
|
|
229
|
+
> scrolling jank. View Renderer V2 (default since v8.50.0) improved from ~155 ms to ~25
|
|
230
|
+
> ms per capture.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Best Practices
|
|
235
|
+
|
|
236
|
+
- Set `maskAllText = true` and `maskAllImages = true` (both default) — only unmask
|
|
237
|
+
content that is explicitly safe to show
|
|
238
|
+
- Use `.sentryReplayUnmask()` sparingly on known-safe content rather than globally
|
|
239
|
+
disabling masking
|
|
240
|
+
- Start with `onErrorSampleRate = 1.0` and `sessionSampleRate = 0` to capture replays
|
|
241
|
+
only on errors (lowest overhead)
|
|
242
|
+
- Test masking on real devices — use `SentrySDK.replay.showMaskPreview()` in DEBUG
|
|
243
|
+
builds to verify
|
|
244
|
+
- Re-test masking on iOS 26+ Liquid Glass after every SDK or Xcode upgrade
|
|
245
|
+
|
|
246
|
+
## Troubleshooting
|
|
247
|
+
|
|
248
|
+
| Issue | Solution |
|
|
249
|
+
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
250
|
+
| No replays appearing | Verify `sessionSampleRate > 0` or `onErrorSampleRate > 0`; both default to `0` |
|
|
251
|
+
| Replay disabled on iOS 26 | SDK 8.57.0–9.11.x auto-disabled Liquid Glass builds; SDK 9.12+ records again unless you gate sample rates yourself |
|
|
252
|
+
| PII visible in replay | Verify `maskAllText = true` and `maskAllImages = true`; check `.sentryReplayUnmask()` isn’t applied too broadly |
|
|
253
|
+
| Scrolling jank during replay | Enable `enableFastViewRendering = true`; switch to `quality = .low`; consider disabling on low-end devices |
|
|
254
|
+
| Replay stops after 60 minutes | Expected — `maximumDuration = 3600` seconds is the default cap |
|
|
255
|
+
| Error buffer not uploading | Verify `onErrorSampleRate > 0`; buffer is only uploaded when `SentrySDK.capture(error:)` is called |
|
|
256
|
+
| App crash during replay capture | Use `excludeViewTypeFromSubtreeTraversal` for the problematic view type |
|
|
257
|
+
| Texture/AsyncDisplayKit views not masked | Access `.view` on the node: `SentrySDK.replay.maskView(view: myNode.view)` |
|