@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,411 @@
|
|
|
1
|
+
# Metrics — Sentry Next.js SDK
|
|
2
|
+
|
|
3
|
+
> Minimum SDK: `@sentry/nextjs` ≥10.25.0 (stable `Sentry.metrics.*` API)\
|
|
4
|
+
> `enableMetrics` top-level option: ≥10.24.0 (default: `true`)\
|
|
5
|
+
> `beforeSendMetric` hook: ≥10.24.0\
|
|
6
|
+
> Scope attributes on metrics: ≥10.33.0
|
|
7
|
+
>
|
|
8
|
+
> Available in **all three runtimes**: browser, Node.js server, and Edge.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Sentry Metrics let you track counters, current values, and value distributions.
|
|
15
|
+
They appear in Sentry alongside related errors and can be correlated with traces.
|
|
16
|
+
|
|
17
|
+
Key characteristics:
|
|
18
|
+
|
|
19
|
+
- Metrics are **enabled by default** — no configuration required for basic use
|
|
20
|
+
- Work across all three Next.js runtimes: browser, Node.js server, and Edge
|
|
21
|
+
- Buffered in memory (max 1000 entries) and sent periodically
|
|
22
|
+
- High-cardinality attributes **degrade backend performance** — keep attribute
|
|
23
|
+
cardinality low
|
|
24
|
+
- Use `Sentry.logger.*` (not metrics) when you need per-user or per-request detail
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Initialization
|
|
29
|
+
|
|
30
|
+
Metrics are on by default in all three runtime config files.
|
|
31
|
+
No additional configuration is needed.
|
|
32
|
+
`enableMetrics`, `beforeSendMetric`, and all `Sentry.metrics.*` calls work identically
|
|
33
|
+
in every runtime.
|
|
34
|
+
|
|
35
|
+
**`instrumentation-client.ts` (browser runtime):**
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import * as Sentry from "@sentry/nextjs";
|
|
39
|
+
|
|
40
|
+
Sentry.init({
|
|
41
|
+
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
|
|
42
|
+
// Metrics are enabled by default — no config needed
|
|
43
|
+
|
|
44
|
+
// To disable entirely:
|
|
45
|
+
// enableMetrics: false,
|
|
46
|
+
|
|
47
|
+
beforeSendMetric: (metric) => {
|
|
48
|
+
// optional filter/transform
|
|
49
|
+
if (metric.name === "debug_metric") return null;
|
|
50
|
+
return metric;
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**`sentry.server.config.ts` (Node.js runtime):**
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
import * as Sentry from "@sentry/nextjs";
|
|
59
|
+
|
|
60
|
+
Sentry.init({
|
|
61
|
+
dsn: process.env.SENTRY_DSN,
|
|
62
|
+
// Metrics are enabled by default
|
|
63
|
+
// enableMetrics, beforeSendMetric can be configured here too
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**`sentry.edge.config.ts` (Edge runtime):**
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import * as Sentry from "@sentry/nextjs";
|
|
71
|
+
|
|
72
|
+
Sentry.init({
|
|
73
|
+
dsn: process.env.SENTRY_DSN,
|
|
74
|
+
// Metrics are enabled by default
|
|
75
|
+
// enableMetrics, beforeSendMetric can be configured here too
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Metrics API
|
|
82
|
+
|
|
83
|
+
Three methods. No `increment()` or `set()` — those do not exist in v10:
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
Sentry.metrics.count(name, value?, options?)
|
|
87
|
+
Sentry.metrics.gauge(name, value, options?)
|
|
88
|
+
Sentry.metrics.distribution(name, value, options?)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Full TypeScript signatures:**
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
interface MetricOptions {
|
|
95
|
+
unit?: string; // see unit table below
|
|
96
|
+
attributes?: Record<string, unknown>; // filterable dimensions
|
|
97
|
+
scope?: Scope; // optional scope override
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function count(name: string, value?: number, options?: MetricOptions): void;
|
|
101
|
+
// value defaults to 1
|
|
102
|
+
|
|
103
|
+
function gauge(name: string, value: number, options?: MetricOptions): void;
|
|
104
|
+
|
|
105
|
+
function distribution(name: string, value: number, options?: MetricOptions): void;
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Metric Types
|
|
111
|
+
|
|
112
|
+
| Method | Underlying Type | Use For |
|
|
113
|
+
| -------------- | --------------- | ----------------------------------------------- |
|
|
114
|
+
| `count` | counter | Event frequency — requests, errors, signups |
|
|
115
|
+
| `gauge` | gauge | Current snapshot value — queue depth, CPU % |
|
|
116
|
+
| `distribution` | distribution | Value histograms/ranges — latencies, file sizes |
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
// count — how many times something happened
|
|
120
|
+
Sentry.metrics.count("user.signups", 1);
|
|
121
|
+
Sentry.metrics.count("api.errors", 1, { attributes: { endpoint: "/checkout" } });
|
|
122
|
+
|
|
123
|
+
// gauge — what the current state is
|
|
124
|
+
Sentry.metrics.gauge("queue.depth", 42);
|
|
125
|
+
Sentry.metrics.gauge("memory.usage", 512, { unit: "megabyte" });
|
|
126
|
+
|
|
127
|
+
// distribution — spread of a measured value
|
|
128
|
+
Sentry.metrics.distribution("api.latency", 187.5, { unit: "millisecond" });
|
|
129
|
+
Sentry.metrics.distribution("payload.size", 1024, { unit: "byte" });
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Next.js Patterns
|
|
135
|
+
|
|
136
|
+
### API Routes (App Router)
|
|
137
|
+
|
|
138
|
+
Track request timing and business events in route handlers:
|
|
139
|
+
|
|
140
|
+
**`app/api/orders/route.ts`**
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
import * as Sentry from "@sentry/nextjs";
|
|
144
|
+
|
|
145
|
+
export async function POST(request: Request) {
|
|
146
|
+
const start = Date.now();
|
|
147
|
+
|
|
148
|
+
try {
|
|
149
|
+
const order = await createOrder(request);
|
|
150
|
+
|
|
151
|
+
Sentry.metrics.count("orders_created", 1, {
|
|
152
|
+
attributes: { status: "success" },
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
return Response.json(order);
|
|
156
|
+
} catch (error) {
|
|
157
|
+
Sentry.metrics.count("orders_created", 1, {
|
|
158
|
+
attributes: { status: "failed" },
|
|
159
|
+
});
|
|
160
|
+
throw error;
|
|
161
|
+
} finally {
|
|
162
|
+
Sentry.metrics.distribution("order_latency", Date.now() - start, {
|
|
163
|
+
unit: "millisecond",
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Server Actions
|
|
170
|
+
|
|
171
|
+
Track form submissions and mutations:
|
|
172
|
+
|
|
173
|
+
**`app/actions.ts`**
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
"use server";
|
|
177
|
+
|
|
178
|
+
import * as Sentry from "@sentry/nextjs";
|
|
179
|
+
|
|
180
|
+
export async function submitCheckout(formData: FormData) {
|
|
181
|
+
Sentry.metrics.count("checkout_attempts", 1);
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
const result = await processCheckout(formData);
|
|
185
|
+
Sentry.metrics.count("checkout_success", 1);
|
|
186
|
+
return result;
|
|
187
|
+
} catch (error) {
|
|
188
|
+
Sentry.metrics.count("checkout_failures", 1);
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Proxy / Middleware
|
|
195
|
+
|
|
196
|
+
Track request patterns at the edge.
|
|
197
|
+
Next.js 16+ uses `proxy.ts`, while earlier versions use `middleware.ts`. The pattern is
|
|
198
|
+
the same:
|
|
199
|
+
|
|
200
|
+
**`proxy.ts`**
|
|
201
|
+
|
|
202
|
+
```typescript
|
|
203
|
+
import { NextResponse } from "next/server";
|
|
204
|
+
import type { NextRequest } from "next/server";
|
|
205
|
+
import * as Sentry from "@sentry/nextjs";
|
|
206
|
+
|
|
207
|
+
export function proxy(request: NextRequest) {
|
|
208
|
+
// Use a bounded route pattern, not the raw pathname (which is high-cardinality)
|
|
209
|
+
const route = request.nextUrl.pathname.split("/").slice(0, 3).join("/"); // e.g. "/api/orders"
|
|
210
|
+
|
|
211
|
+
Sentry.metrics.count("requests", 1, {
|
|
212
|
+
attributes: {
|
|
213
|
+
route,
|
|
214
|
+
method: request.method,
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
return NextResponse.next();
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Units
|
|
225
|
+
|
|
226
|
+
Pass a `unit` string in `MetricOptions`. Used for display formatting in Sentry.
|
|
227
|
+
|
|
228
|
+
| Category | Unit Values |
|
|
229
|
+
| --------- | ------------------------------------------------------------------------- |
|
|
230
|
+
| Time | `millisecond`, `second`, `minute`, `hour`, `day`, `week` |
|
|
231
|
+
| Storage | `bit`, `byte`, `kilobyte`, `megabyte`, `gigabyte`, `terabyte`, `petabyte` |
|
|
232
|
+
| Fractions | `ratio`, `percent` |
|
|
233
|
+
| None | `none` (or omit `unit`) |
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
Sentry.metrics.distribution("api.latency", 187.5, { unit: "millisecond" });
|
|
237
|
+
Sentry.metrics.distribution("job.duration", 3.2, { unit: "second" });
|
|
238
|
+
Sentry.metrics.gauge("memory.usage", 512, { unit: "megabyte" });
|
|
239
|
+
Sentry.metrics.gauge("cache.hit_rate", 0.87, { unit: "ratio" });
|
|
240
|
+
Sentry.metrics.gauge("disk.usage_pct", 72.4, { unit: "percent" });
|
|
241
|
+
Sentry.metrics.count("user.logins"); // omit unit for plain counts
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Attributes (Tags)
|
|
247
|
+
|
|
248
|
+
Use `attributes` in `MetricOptions` to add filterable/groupable dimensions.
|
|
249
|
+
|
|
250
|
+
**Size limit:** 2 KB per metric envelope.
|
|
251
|
+
Metrics exceeding this are **dropped**.
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
Sentry.metrics.count("api.requests", 1, {
|
|
255
|
+
attributes: {
|
|
256
|
+
endpoint: "/api/orders",
|
|
257
|
+
method: "POST",
|
|
258
|
+
status_code: 200,
|
|
259
|
+
user_tier: "pro",
|
|
260
|
+
region: "us-west-2",
|
|
261
|
+
version: "v2",
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
Sentry.metrics.distribution("db.query_time", 45.3, {
|
|
266
|
+
unit: "millisecond",
|
|
267
|
+
attributes: {
|
|
268
|
+
table: "orders",
|
|
269
|
+
operation: "SELECT",
|
|
270
|
+
index_used: true,
|
|
271
|
+
rows_scanned: 1240,
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Cardinality
|
|
279
|
+
|
|
280
|
+
Sentry’s Application Metrics are **trace-connected and high-cardinality by design**.
|
|
281
|
+
Unlike tags, metric `attributes` have no per-value restrictions, so high-cardinality
|
|
282
|
+
values such as per-user IDs or request UUIDs are valid attribute values — you do not
|
|
283
|
+
need to bucket them into bounded enums first.
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
Sentry.metrics.count("page.view", 1, {
|
|
287
|
+
attributes: {
|
|
288
|
+
user_id: "uuid-abc-123", // high-cardinality values are supported
|
|
289
|
+
page: "/dashboard",
|
|
290
|
+
user_tier: "pro",
|
|
291
|
+
region: "us-east-1",
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
The practical limit is the **2 KB per-metric envelope size** (metrics exceeding it are
|
|
297
|
+
dropped — see above), not the cardinality of individual attribute values.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Scope-Based Attributes (SDK ≥10.33.0)
|
|
302
|
+
|
|
303
|
+
Set attributes on a scope and they auto-attach to all metrics emitted within it:
|
|
304
|
+
|
|
305
|
+
```typescript
|
|
306
|
+
// Global scope — applies to all metrics app-wide
|
|
307
|
+
Sentry.getGlobalScope().setAttributes({
|
|
308
|
+
service: "payments",
|
|
309
|
+
deploy_env: "production",
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
// Per-request scope
|
|
313
|
+
Sentry.withScope((scope) => {
|
|
314
|
+
scope.setAttribute("step", "checkout");
|
|
315
|
+
scope.setAttribute("user_tier", "enterprise");
|
|
316
|
+
|
|
317
|
+
// Both metrics inherit the scope attributes above
|
|
318
|
+
Sentry.metrics.count("checkout.attempts", 1);
|
|
319
|
+
Sentry.metrics.gauge("cart.value", 249.99);
|
|
320
|
+
});
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Auto-Attached Default Attributes
|
|
326
|
+
|
|
327
|
+
| Attribute | Value | Context |
|
|
328
|
+
| ------------------------------------ | ----------------------------------- | ----------- |
|
|
329
|
+
| `sentry.environment` | From `Sentry.init({ environment })` | Always |
|
|
330
|
+
| `sentry.release` | From `Sentry.init({ release })` | Always |
|
|
331
|
+
| `sentry.sdk.name` | SDK identifier | Always |
|
|
332
|
+
| `sentry.sdk.version` | e.g., `"10.42.0"` | Always |
|
|
333
|
+
| `user.id`, `user.name`, `user.email` | If user is set in scope | When set |
|
|
334
|
+
| `browser.name`, `browser.version` | Browser info | Client-side |
|
|
335
|
+
| `sentry.replay_id` | Session replay ID | Client-side |
|
|
336
|
+
| `server.address` | Server hostname | Server-side |
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## `beforeSendMetric` Hook
|
|
341
|
+
|
|
342
|
+
Filter or modify metrics before transmission.
|
|
343
|
+
Return `null` to drop.
|
|
344
|
+
Configure in any runtime config file (`instrumentation-client.ts`,
|
|
345
|
+
`sentry.server.config.ts`, or `sentry.edge.config.ts`):
|
|
346
|
+
|
|
347
|
+
**`sentry.server.config.ts`**
|
|
348
|
+
|
|
349
|
+
```typescript
|
|
350
|
+
Sentry.init({
|
|
351
|
+
dsn: process.env.SENTRY_DSN,
|
|
352
|
+
beforeSendMetric: (metric) => {
|
|
353
|
+
// metric: { name, value, type, unit?, attributes? }
|
|
354
|
+
|
|
355
|
+
// Drop internal debug metrics
|
|
356
|
+
if (metric.name.startsWith("_internal.")) {
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Normalize metric names
|
|
361
|
+
metric.name = metric.name.toLowerCase().replace(/[^a-z0-9_.]/g, "_");
|
|
362
|
+
|
|
363
|
+
// Add global context
|
|
364
|
+
metric.attributes = {
|
|
365
|
+
...metric.attributes,
|
|
366
|
+
deploy_id: process.env.DEPLOY_ID,
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
return metric;
|
|
370
|
+
},
|
|
371
|
+
});
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## Flushing
|
|
377
|
+
|
|
378
|
+
Metrics are buffered (up to 1000 entries) and flushed periodically.
|
|
379
|
+
In serverless or edge environments, the function may terminate before the buffer flushes
|
|
380
|
+
automatically. Use `flush()` to send pending metrics while keeping the client alive
|
|
381
|
+
(suitable for reusable function instances), or `close()` to flush and permanently shut
|
|
382
|
+
down the client:
|
|
383
|
+
|
|
384
|
+
```typescript
|
|
385
|
+
await Sentry.flush(2000); // send pending data, keep client alive (use in serverless)
|
|
386
|
+
await Sentry.close(2000); // send pending data + tear down client (use on permanent shutdown)
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
This is especially important for:
|
|
390
|
+
|
|
391
|
+
- **Serverless / Vercel API routes** — function instances may terminate or freeze before
|
|
392
|
+
the buffer auto-flushes
|
|
393
|
+
- **Edge runtime handlers** — short-lived execution contexts with no background flush
|
|
394
|
+
opportunity
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## Troubleshooting
|
|
399
|
+
|
|
400
|
+
| Problem | Likely Cause | Fix |
|
|
401
|
+
| ----------------------------- | ---------------------------- | ------------------------------------------------------------------- |
|
|
402
|
+
| Metrics not appearing | SDK < 10.24.0 | Upgrade to ≥10.24.0 |
|
|
403
|
+
| `Sentry.metrics` is undefined | SDK < 10.25.0 | Upgrade to ≥10.25.0 |
|
|
404
|
+
| Metrics silently dropped | Attribute envelope > 2 KB | Reduce number or size of `attributes` |
|
|
405
|
+
| `increment()` not found | Renamed in v10 | Use `count()` instead |
|
|
406
|
+
| `set()` not found | Removed in v10 | No equivalent; use `count()` with bounded attributes |
|
|
407
|
+
| Scope attributes missing | SDK < 10.33.0 | Upgrade to ≥10.33.0 |
|
|
408
|
+
| Metrics lost in serverless | Buffer not flushed | Call `await Sentry.flush(2000)` before function returns |
|
|
409
|
+
| Metrics missing on edge | Edge runtime not initialized | Ensure `sentry.edge.config.ts` has `Sentry.init()` |
|
|
410
|
+
| High-cardinality issues | Unbounded attribute values | Keep attributes to bounded enums/sets |
|
|
411
|
+
| Metrics not in server actions | Server config missing | Verify `sentry.server.config.ts` is loaded via `instrumentation.ts` |
|