@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,369 @@
|
|
|
1
|
+
# Session Replay — Sentry Svelte/SvelteKit SDK
|
|
2
|
+
|
|
3
|
+
> Minimum SDK: `@sentry/sveltekit` ≥7.27.0+ / `@sentry/svelte` ≥7.27.0+\
|
|
4
|
+
> `replayCanvasIntegration()`: requires `@sentry/sveltekit` ≥7.48.0+
|
|
5
|
+
|
|
6
|
+
> ⚠️ **Client-only feature.** Never add `replayIntegration()` to `hooks.server.ts` or
|
|
7
|
+
> `instrumentation.server.ts`.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Setup
|
|
12
|
+
|
|
13
|
+
Session Replay is bundled in `@sentry/sveltekit` and `@sentry/svelte` — no separate
|
|
14
|
+
package needed.
|
|
15
|
+
|
|
16
|
+
### SvelteKit — hooks.client.ts
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import * as Sentry from "@sentry/sveltekit";
|
|
20
|
+
|
|
21
|
+
Sentry.init({
|
|
22
|
+
dsn: import.meta.env.PUBLIC_SENTRY_DSN ?? import.meta.env.VITE_SENTRY_DSN,
|
|
23
|
+
|
|
24
|
+
// Sample rates live on init, NOT on the integration
|
|
25
|
+
replaysSessionSampleRate: 0.1, // record 10% of all sessions
|
|
26
|
+
replaysOnErrorSampleRate: 1.0, // record 100% of sessions that encounter an error
|
|
27
|
+
|
|
28
|
+
integrations: [
|
|
29
|
+
Sentry.replayIntegration({
|
|
30
|
+
maskAllText: true, // default: true
|
|
31
|
+
blockAllMedia: true, // default: true
|
|
32
|
+
}),
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export const handleError = Sentry.handleErrorWithSentry();
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Standalone Svelte — main.ts
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import * as Sentry from "@sentry/svelte";
|
|
43
|
+
import App from "./App.svelte";
|
|
44
|
+
|
|
45
|
+
Sentry.init({
|
|
46
|
+
dsn: import.meta.env.VITE_SENTRY_DSN,
|
|
47
|
+
|
|
48
|
+
replaysSessionSampleRate: 0.1,
|
|
49
|
+
replaysOnErrorSampleRate: 1.0,
|
|
50
|
+
|
|
51
|
+
integrations: [
|
|
52
|
+
Sentry.browserTracingIntegration(),
|
|
53
|
+
Sentry.replayIntegration({
|
|
54
|
+
maskAllText: true,
|
|
55
|
+
blockAllMedia: true,
|
|
56
|
+
}),
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
const app = new App({ target: document.getElementById("app")! });
|
|
61
|
+
export default app;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Sample Rates
|
|
67
|
+
|
|
68
|
+
| Option | Location | Behavior |
|
|
69
|
+
| -------------------------- | ----------------- | --------------------------------------------------------------------- |
|
|
70
|
+
| `replaysSessionSampleRate` | `Sentry.init({})` | Fraction of all sessions recorded from start |
|
|
71
|
+
| `replaysOnErrorSampleRate` | `Sentry.init({})` | Fraction of error sessions — includes ~60s of replay before the error |
|
|
72
|
+
|
|
73
|
+
Recommended values by traffic volume:
|
|
74
|
+
|
|
75
|
+
| Volume | `replaysSessionSampleRate` | `replaysOnErrorSampleRate` |
|
|
76
|
+
| ------------------------- | -------------------------- | -------------------------- |
|
|
77
|
+
| High (100k+ sessions/day) | `0.01` | `1.0` |
|
|
78
|
+
| Medium (10k–100k/day) | `0.1` | `1.0` |
|
|
79
|
+
| Low (<10k/day) | `0.25` | `1.0` |
|
|
80
|
+
| Errors-only strategy | `0` | `1.0` |
|
|
81
|
+
|
|
82
|
+
“Errors-only” (`replaysSessionSampleRate: 0`, `replaysOnErrorSampleRate: 1.0`) minimizes
|
|
83
|
+
overhead by not recording sessions unless an error occurs.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Core `replayIntegration()` Options
|
|
88
|
+
|
|
89
|
+
### Recording Control
|
|
90
|
+
|
|
91
|
+
| Option | Type | Default | Description |
|
|
92
|
+
| ------------------- | --------- | --------- | -------------------------------------------- |
|
|
93
|
+
| `stickySession` | `boolean` | `true` | Persist session across page refreshes |
|
|
94
|
+
| `minReplayDuration` | `number` | `5000` | Min ms before a session-based replay is sent |
|
|
95
|
+
| `maxReplayDuration` | `number` | `3600000` | Max replay length (1 hour hard cap) |
|
|
96
|
+
| `workerUrl` | `string` | — | Self-host the compression Web Worker |
|
|
97
|
+
|
|
98
|
+
### Mutation Limits (DOM thrash protection)
|
|
99
|
+
|
|
100
|
+
| Option | Type | Default | Description |
|
|
101
|
+
| ------------------------- | -------- | ------- | ------------------------------------------- |
|
|
102
|
+
| `mutationLimit` | `number` | `10000` | Stop recording after N DOM mutations |
|
|
103
|
+
| `mutationBreadcrumbLimit` | `number` | `750` | Emit a warning breadcrumb after N mutations |
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
Sentry.replayIntegration({
|
|
107
|
+
mutationBreadcrumbLimit: 1000,
|
|
108
|
+
mutationLimit: 1500,
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Privacy and Masking
|
|
115
|
+
|
|
116
|
+
Replay defaults to **privacy-first**: all text is masked and all media is blocked before
|
|
117
|
+
a single line of config is written.
|
|
118
|
+
|
|
119
|
+
### Default behavior
|
|
120
|
+
|
|
121
|
+
| Element type | Default action |
|
|
122
|
+
| ------------------------------------------------------------------- | --------------------------------------- |
|
|
123
|
+
| All text content | Replaced with `*` (length-preserving) |
|
|
124
|
+
| All inputs | Values replaced with `*` |
|
|
125
|
+
| `img`, `svg`, `video`, `audio`, `picture`, `embed`, `map`, `object` | Replaced with same-size placeholder box |
|
|
126
|
+
|
|
127
|
+
### Global masking overrides
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
Sentry.replayIntegration({
|
|
131
|
+
maskAllText: true, // default: true — set false to unmask everything
|
|
132
|
+
maskAllInputs: true, // default: true
|
|
133
|
+
blockAllMedia: true, // default: true
|
|
134
|
+
|
|
135
|
+
// Custom masking function (override default * replacement)
|
|
136
|
+
maskFn: (text) => "█".repeat(text.length),
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Selector-based fine-grained control
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
Sentry.replayIntegration({
|
|
144
|
+
// Additional selectors to mask/block (additive to defaults)
|
|
145
|
+
mask: [".sensitive-field", "[data-pii]"],
|
|
146
|
+
block: [".payment-widget", "#credit-card-iframe"],
|
|
147
|
+
ignore: ["#search-input"], // ignore input value changes for this field
|
|
148
|
+
|
|
149
|
+
// UNBLOCK specific elements from maskAllText=true
|
|
150
|
+
unmask: [".username-display", ".public-label"],
|
|
151
|
+
|
|
152
|
+
// UNBLOCK specific elements from blockAllMedia=true
|
|
153
|
+
unblock: [".product-thumbnail", ".avatar-image"],
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### HTML attribute approach (zero-config)
|
|
158
|
+
|
|
159
|
+
Apply directly in Svelte markup — no JS config change needed:
|
|
160
|
+
|
|
161
|
+
```svelte
|
|
162
|
+
<!-- Mask text content -->
|
|
163
|
+
<p data-sentry-mask>Sensitive content</p>
|
|
164
|
+
<p class="sentry-mask">Also masked</p>
|
|
165
|
+
|
|
166
|
+
<!-- Block entire element (replaced with placeholder) -->
|
|
167
|
+
<div data-sentry-block>Payment widget</div>
|
|
168
|
+
<div class="sentry-block">Also blocked</div>
|
|
169
|
+
|
|
170
|
+
<!-- Ignore input value changes -->
|
|
171
|
+
<input data-sentry-ignore type="text" />
|
|
172
|
+
<input class="sentry-ignore" />
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Attribute selectors (`data-sentry-*`) are automatically recognized by the SDK. CSS
|
|
176
|
+
classes require these to be listed in the integration options for SDK v8+:
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
Sentry.replayIntegration({
|
|
180
|
+
unmask: [".sentry-unmask, [data-sentry-unmask]"],
|
|
181
|
+
unblock: [".sentry-unblock, [data-sentry-unblock]"],
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Network Capture
|
|
188
|
+
|
|
189
|
+
By default, only URL, method, status code, and response size are recorded for network
|
|
190
|
+
requests. To capture headers and bodies, opt in per URL:
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
Sentry.replayIntegration({
|
|
194
|
+
networkDetailAllowUrls: [
|
|
195
|
+
window.location.origin, // same-origin requests
|
|
196
|
+
"api.example.com", // substring match
|
|
197
|
+
/^https:\/\/api\.example\.com/, // regex match
|
|
198
|
+
],
|
|
199
|
+
networkDetailDenyUrls: [
|
|
200
|
+
"https://analytics.third-party.com", // takes precedence over allow
|
|
201
|
+
],
|
|
202
|
+
|
|
203
|
+
networkCaptureBodies: true, // capture req/res bodies (default: true when URLs allowed)
|
|
204
|
+
networkRequestHeaders: ["Cache-Control", "X-Request-ID"],
|
|
205
|
+
networkResponseHeaders: ["Referrer-Policy", "X-Response-Time"],
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Constraints:
|
|
210
|
+
|
|
211
|
+
- Body truncation limit: **150,000 characters** max
|
|
212
|
+
- Default captured headers: `Content-Type`, `Content-Length`, `Accept`
|
|
213
|
+
- No bodies/extra headers captured unless URLs are in `networkDetailAllowUrls`
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Canvas Recording
|
|
218
|
+
|
|
219
|
+
Requires a second integration:
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
Sentry.init({
|
|
223
|
+
integrations: [Sentry.replayIntegration(), Sentry.replayCanvasIntegration()],
|
|
224
|
+
});
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Manual snapshot mode
|
|
228
|
+
|
|
229
|
+
Use when canvas content changes outside normal render cycles:
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
Sentry.init({
|
|
233
|
+
integrations: [
|
|
234
|
+
Sentry.replayIntegration(),
|
|
235
|
+
Sentry.replayCanvasIntegration({ enableManualSnapshot: true }),
|
|
236
|
+
],
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// Trigger snapshot manually when needed
|
|
240
|
+
const canvasIntegration = Sentry.getClient()?.getIntegrationByName("ReplayCanvas");
|
|
241
|
+
canvasIntegration?.snapshot(canvasElement);
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Lazy Loading Replay
|
|
247
|
+
|
|
248
|
+
Defer loading the replay bundle to improve initial page load performance:
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
// Initialize without replay
|
|
252
|
+
Sentry.init({
|
|
253
|
+
dsn: import.meta.env.PUBLIC_SENTRY_DSN ?? import.meta.env.VITE_SENTRY_DSN,
|
|
254
|
+
integrations: [],
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
// Load on demand (e.g., after login, or on idle)
|
|
258
|
+
async function enableReplay() {
|
|
259
|
+
const { replayIntegration } = await import("@sentry/sveltekit");
|
|
260
|
+
Sentry.addIntegration(
|
|
261
|
+
replayIntegration({
|
|
262
|
+
maskAllText: true,
|
|
263
|
+
blockAllMedia: true,
|
|
264
|
+
}),
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Event Filtering
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
Sentry.replayIntegration({
|
|
275
|
+
// Filter/drop individual recording events before they are buffered
|
|
276
|
+
beforeAddRecordingEvent: (event) => {
|
|
277
|
+
// Drop debug console entries from replay
|
|
278
|
+
if (event.data?.payload?.level === "debug") return null;
|
|
279
|
+
return event;
|
|
280
|
+
},
|
|
281
|
+
|
|
282
|
+
// Control which errors trigger error-rate sampling
|
|
283
|
+
beforeErrorSampling: (event) => {
|
|
284
|
+
// Don't start replay for NetworkErrors
|
|
285
|
+
return event.exception?.values?.[0]?.type !== "NetworkError";
|
|
286
|
+
},
|
|
287
|
+
|
|
288
|
+
// Disable slow/rage-click detection on noisy elements
|
|
289
|
+
slowClickIgnoreSelectors: [".loading-spinner", "#carousel"],
|
|
290
|
+
});
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## SvelteKit-Specific Considerations
|
|
296
|
+
|
|
297
|
+
| Topic | Note |
|
|
298
|
+
| --------------------- | -------------------------------------------------------------------------------- |
|
|
299
|
+
| Server-side rendering | Replay records the **browser DOM** after hydration, not the raw SSR HTML |
|
|
300
|
+
| Navigation tracking | SvelteKit client-side navigations are recorded as replay navigation breadcrumbs |
|
|
301
|
+
| `+error.svelte` pages | Errors triggering error pages are captured; replay buffers the preceding session |
|
|
302
|
+
| Ad-blocker bypass | Set `tunnel: "/sentry-tunnel"` to prevent replay data from being blocked |
|
|
303
|
+
| Cloudflare adapter | Replay is client-only; no adapter-specific concerns |
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## CSP Requirements
|
|
308
|
+
|
|
309
|
+
If using a strict Content Security Policy, add:
|
|
310
|
+
|
|
311
|
+
```
|
|
312
|
+
worker-src 'self' blob:;
|
|
313
|
+
child-src 'self' blob:;
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
The SDK uses a Web Worker (`blob:` URL) for compression.
|
|
317
|
+
|
|
318
|
+
### Self-hosting the worker
|
|
319
|
+
|
|
320
|
+
```typescript
|
|
321
|
+
Sentry.replayIntegration({
|
|
322
|
+
workerUrl: "/assets/sentry-replay-worker.min.js",
|
|
323
|
+
});
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Download the worker from the `@sentry/replay` package `worker/` directory and serve it
|
|
327
|
+
from your own origin.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Performance Considerations
|
|
332
|
+
|
|
333
|
+
- Compression runs in a **Web Worker** — minimal main-thread impact
|
|
334
|
+
- `mutationLimit` protects against DOM-heavy frameworks that trigger thousands of
|
|
335
|
+
mutations
|
|
336
|
+
- Network body capture is opt-in per URL — no performance cost without
|
|
337
|
+
`networkDetailAllowUrls`
|
|
338
|
+
- Lazy loading (`Sentry.addIntegration()`) reduces initial bundle size by ~50KB gzipped
|
|
339
|
+
- “Errors-only” strategy (`replaysSessionSampleRate: 0`) has near-zero overhead when no
|
|
340
|
+
error occurs
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Best Practices
|
|
345
|
+
|
|
346
|
+
- Keep `maskAllText: true` and `blockAllMedia: true` as defaults — opt individual
|
|
347
|
+
elements out via `unmask`/`unblock` or `data-sentry-unmask`/`data-sentry-unblock`
|
|
348
|
+
- Use `networkDetailAllowUrls` with your own API domains only — never include
|
|
349
|
+
third-party analytics or payment processors
|
|
350
|
+
- Set `replaysOnErrorSampleRate: 1.0` so you never miss replay for an error session
|
|
351
|
+
- Lazy-load replay for unauthenticated pages where user consent or performance is
|
|
352
|
+
critical
|
|
353
|
+
- Add `slowClickIgnoreSelectors` for loading states to avoid false rage-click detection
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Troubleshooting
|
|
358
|
+
|
|
359
|
+
| Issue | Solution |
|
|
360
|
+
| --------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
361
|
+
| Replay not recording | Confirm `replayIntegration()` is in `hooks.client.ts` — never in `hooks.server.ts` |
|
|
362
|
+
| All text shown as `*` | Expected with `maskAllText: true`; add `data-sentry-unmask` to elements that are safe to show |
|
|
363
|
+
| Replay missing after error | Check `replaysOnErrorSampleRate` is > 0; verify `replaysSessionSampleRate` is not overriding |
|
|
364
|
+
| Network requests missing in replay | Add your API domains to `networkDetailAllowUrls` |
|
|
365
|
+
| Worker CSP errors in browser console | Add `worker-src 'self' blob:;` to your CSP headers |
|
|
366
|
+
| Canvas not recording | Add `replayCanvasIntegration()` alongside `replayIntegration()` |
|
|
367
|
+
| High bandwidth usage | Lower `replaysSessionSampleRate`; enable `mutationLimit`; disable network body capture |
|
|
368
|
+
| Replay blocked by ad-blocker | Set `tunnel: "/sentry-tunnel"` in `Sentry.init()` and implement server relay |
|
|
369
|
+
| `beforeAddRecordingEvent` not filtering | Ensure the function returns `null` (not `undefined`) to drop events |
|