@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,403 @@
|
|
|
1
|
+
# Profiling — Sentry Next.js SDK
|
|
2
|
+
|
|
3
|
+
> Browser profiling: `@sentry/nextjs` ≥10.27.0 (Beta)\
|
|
4
|
+
> Node.js profiling: `@sentry/profiling-node` — must match `@sentry/nextjs` version
|
|
5
|
+
> exactly
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
The Sentry Next.js SDK supports profiling in **two independent runtimes**:
|
|
12
|
+
|
|
13
|
+
| Runtime | Integration | What it captures |
|
|
14
|
+
| ------------------ | ------------------------------- | ------------------------------------------------------ |
|
|
15
|
+
| **Browser** | `browserProfilingIntegration()` | JS call stacks in Chrome/Edge (Chromium only) at 100Hz |
|
|
16
|
+
| **Node.js server** | `nodeProfilingIntegration()` | V8 CPU call stacks for API routes, RSC, server actions |
|
|
17
|
+
|
|
18
|
+
Both are **opt-in** and **independent from each other**. Each attaches to spans and
|
|
19
|
+
requires tracing to be enabled.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## How Profiling Relates to Tracing
|
|
24
|
+
|
|
25
|
+
Profiles attach to **spans** — they are not independent events:
|
|
26
|
+
|
|
27
|
+
1. `tracesSampleRate` / `tracesSampler` decides whether a request is traced at all
|
|
28
|
+
2. `profileSessionSampleRate` decides whether the **session** opts into profiling
|
|
29
|
+
3. A profile is only collected when **both** sampling decisions are “yes”
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
tracesSampleRate: 0.1 + profileSessionSampleRate: 0.5
|
|
33
|
+
→ ~5% of requests will have both a trace AND a profile attached
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
In `trace` lifecycle mode, you can drill from a slow span in the Performance UI directly
|
|
37
|
+
into a flame graph:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Trace: "POST /api/checkout" (850ms)
|
|
41
|
+
├── "validateCart" (45ms) → [Profile attached] → shows db driver hot paths
|
|
42
|
+
├── "processPayment" (620ms)
|
|
43
|
+
└── "updateInventory" (185ms) → [Profile attached] → shows ORM overhead
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Browser Profiling
|
|
49
|
+
|
|
50
|
+
### Browser Compatibility
|
|
51
|
+
|
|
52
|
+
| Browser | Supported | Notes |
|
|
53
|
+
| ------------------- | --------- | ---------------------------------------- |
|
|
54
|
+
| Chrome / Chromium | ✅ | Primary support |
|
|
55
|
+
| Edge (Chromium) | ✅ | Same engine as Chrome |
|
|
56
|
+
| Firefox | ❌ | Does not implement JS Self-Profiling API |
|
|
57
|
+
| Safari / iOS Safari | ❌ | Does not implement JS Self-Profiling API |
|
|
58
|
+
|
|
59
|
+
> ⚠️ **Sampling bias:** Profile data comes **only** from Chromium users.
|
|
60
|
+
> In unsupported browsers, `browserProfilingIntegration()` silently no-ops with no
|
|
61
|
+
> errors and no overhead.
|
|
62
|
+
|
|
63
|
+
### Required: `Document-Policy` Header
|
|
64
|
+
|
|
65
|
+
The JS Self-Profiling API is gated behind a required response header.
|
|
66
|
+
Without it, profiling silently fails even in Chromium:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Document-Policy: js-profiling
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Next.js (`next.config.ts`):**
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
const nextConfig = {
|
|
76
|
+
async headers() {
|
|
77
|
+
return [
|
|
78
|
+
{
|
|
79
|
+
source: "/(.*)",
|
|
80
|
+
headers: [{ key: "Document-Policy", value: "js-profiling" }],
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Vercel (`vercel.json`):**
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"headers": [
|
|
92
|
+
{
|
|
93
|
+
"source": "/(.*)",
|
|
94
|
+
"headers": [{ "key": "Document-Policy", "value": "js-profiling" }]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Netlify (`netlify.toml`):**
|
|
101
|
+
|
|
102
|
+
```toml
|
|
103
|
+
[[headers]]
|
|
104
|
+
for = "/*"
|
|
105
|
+
[headers.values]
|
|
106
|
+
Document-Policy = "js-profiling"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Nginx:**
|
|
110
|
+
|
|
111
|
+
```nginx
|
|
112
|
+
add_header Document-Policy "js-profiling";
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
> ⚠️ Static hosting that doesn’t support custom headers (some CDNs, GitHub Pages) will
|
|
116
|
+
> prevent browser profiling entirely.
|
|
117
|
+
|
|
118
|
+
### SDK Configuration — Trace Mode (Recommended)
|
|
119
|
+
|
|
120
|
+
Profiles auto-attach to all sampled spans with no additional code:
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
// instrumentation-client.ts
|
|
124
|
+
import * as Sentry from "@sentry/nextjs";
|
|
125
|
+
|
|
126
|
+
Sentry.init({
|
|
127
|
+
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
|
|
128
|
+
|
|
129
|
+
integrations: [
|
|
130
|
+
Sentry.browserTracingIntegration(), // Must come BEFORE browserProfilingIntegration
|
|
131
|
+
Sentry.browserProfilingIntegration(),
|
|
132
|
+
],
|
|
133
|
+
|
|
134
|
+
tracesSampleRate: 1.0,
|
|
135
|
+
|
|
136
|
+
// Session-level sampling: decision made once at page load
|
|
137
|
+
profileSessionSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
|
|
138
|
+
|
|
139
|
+
// "trace" = profiles auto-attach to every sampled span
|
|
140
|
+
profileLifecycle: "trace",
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### SDK Configuration — Manual Mode
|
|
145
|
+
|
|
146
|
+
Profile specific flows or code paths explicitly:
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// instrumentation-client.ts
|
|
150
|
+
import * as Sentry from "@sentry/nextjs";
|
|
151
|
+
|
|
152
|
+
Sentry.init({
|
|
153
|
+
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
|
|
154
|
+
integrations: [Sentry.browserTracingIntegration(), Sentry.browserProfilingIntegration()],
|
|
155
|
+
tracesSampleRate: 1.0,
|
|
156
|
+
profileSessionSampleRate: 1.0,
|
|
157
|
+
// No profileLifecycle → defaults to manual mode
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Explicit start/stop around critical code:
|
|
161
|
+
Sentry.uiProfiler.startProfiler();
|
|
162
|
+
await heavyComputation();
|
|
163
|
+
Sentry.uiProfiler.stopProfiler();
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Node.js Profiling
|
|
169
|
+
|
|
170
|
+
### Installation
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
npm install @sentry/profiling-node --save
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
> ⚠️ **Version pinning is required.** `@sentry/profiling-node` must exactly match your
|
|
177
|
+
> `@sentry/nextjs` version.
|
|
178
|
+
> Mismatched versions cause silent failures.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Both should be the same version
|
|
182
|
+
npm install @sentry/nextjs@latest @sentry/profiling-node@latest
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### SDK Configuration
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// sentry.server.config.ts
|
|
189
|
+
import * as Sentry from "@sentry/nextjs";
|
|
190
|
+
import { nodeProfilingIntegration } from "@sentry/profiling-node";
|
|
191
|
+
|
|
192
|
+
Sentry.init({
|
|
193
|
+
dsn: process.env.SENTRY_DSN,
|
|
194
|
+
|
|
195
|
+
integrations: [
|
|
196
|
+
nodeProfilingIntegration(), // V8 CpuProfiler native add-on
|
|
197
|
+
],
|
|
198
|
+
|
|
199
|
+
tracesSampleRate: 1.0,
|
|
200
|
+
|
|
201
|
+
// Session-level: decision made once at process startup
|
|
202
|
+
profileSessionSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
|
|
203
|
+
|
|
204
|
+
profileLifecycle: "trace", // auto-attach profiles to spans
|
|
205
|
+
});
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
> ⚠️ **Do NOT add `nodeProfilingIntegration` to `sentry.edge.config.ts`.** The Edge
|
|
209
|
+
> runtime does not support native add-ons.
|
|
210
|
+
|
|
211
|
+
### Manual Mode (Node.js)
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
// sentry.server.config.ts
|
|
215
|
+
Sentry.init({
|
|
216
|
+
integrations: [nodeProfilingIntegration()],
|
|
217
|
+
profileSessionSampleRate: 1.0,
|
|
218
|
+
profileLifecycle: "manual",
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
// Explicit start/stop:
|
|
222
|
+
Sentry.profiler.startProfiler();
|
|
223
|
+
await processHeavyJob();
|
|
224
|
+
Sentry.profiler.stopProfiler();
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Supported Platforms
|
|
228
|
+
|
|
229
|
+
Precompiled native binaries are available for:
|
|
230
|
+
|
|
231
|
+
| OS | Architecture | Node.js |
|
|
232
|
+
| ------------------- | ------------ | ------- |
|
|
233
|
+
| macOS | x64 | 18–24 |
|
|
234
|
+
| Linux (glibc) | x64 | 18–24 |
|
|
235
|
+
| Linux (musl/Alpine) | x64, ARM64 | 18–24 |
|
|
236
|
+
| Linux | ARM64 | 18–24 |
|
|
237
|
+
| Windows | x64 | 18–24 |
|
|
238
|
+
|
|
239
|
+
> ⚠️ **Deno and Bun are not supported.** The native add-on only works in Node.js.
|
|
240
|
+
|
|
241
|
+
### Environment Variables
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# Override binary path (for custom builds)
|
|
245
|
+
SENTRY_PROFILER_BINARY_PATH=/custom/path/profiler.node
|
|
246
|
+
|
|
247
|
+
# Override binary directory
|
|
248
|
+
SENTRY_PROFILER_BINARY_DIR=/path/to/dir
|
|
249
|
+
|
|
250
|
+
# Profiler logging mode:
|
|
251
|
+
# "eager" (default) — faster startProfiler calls, slightly more CPU overhead
|
|
252
|
+
# "lazy" — lower CPU overhead, slightly slower startProfiler
|
|
253
|
+
SENTRY_PROFILER_LOGGING_MODE=lazy node server.js
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Configuration Parameters Reference
|
|
259
|
+
|
|
260
|
+
| Parameter | Applies to | Description |
|
|
261
|
+
| ------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------- |
|
|
262
|
+
| `profileSessionSampleRate` | Browser + Node.js | 0.0–1.0; session-level sampling decision made once (at page load for browser, process start for server) |
|
|
263
|
+
| `profileLifecycle` | Browser + Node.js | `"trace"` = auto-attach to spans; omit for manual mode |
|
|
264
|
+
| `browserProfilingIntegration()` | Browser only | Enables JS Self-Profiling API (Chromium only); must come after `browserTracingIntegration()` |
|
|
265
|
+
| `nodeProfilingIntegration()` | Node.js only | Enables V8 CpuProfiler; must be in `integrations` array in `sentry.server.config.ts` |
|
|
266
|
+
|
|
267
|
+
### `profileSessionSampleRate` Semantics
|
|
268
|
+
|
|
269
|
+
The profiling sampling decision is made **once per session**:
|
|
270
|
+
|
|
271
|
+
- **Browser:** at page load (`instrumentation-client.ts` init)
|
|
272
|
+
- **Server:** at process startup (`sentry.server.config.ts` init)
|
|
273
|
+
|
|
274
|
+
A “profiling session” either opts in or opts out for its entire lifetime.
|
|
275
|
+
Within a profiling session, every traced span gets a profile attached (in `trace` mode).
|
|
276
|
+
|
|
277
|
+
### `profileLifecycle` Modes Comparison
|
|
278
|
+
|
|
279
|
+
| Mode | Trigger | Best for |
|
|
280
|
+
| -------------------- | ------------------------------------ | --------------------------------------------------- |
|
|
281
|
+
| `"trace"` | Auto-attached to every sampled span | Broad production coverage; no code changes |
|
|
282
|
+
| `"manual"` (default) | `startProfiler()` / `stopProfiler()` | Specific high-value flows (checkout, heavy renders) |
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Production vs Development Recommendations
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
// Browser (instrumentation-client.ts)
|
|
290
|
+
Sentry.init({
|
|
291
|
+
profileSessionSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
|
|
292
|
+
profileLifecycle: "trace",
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// Server (sentry.server.config.ts)
|
|
296
|
+
Sentry.init({
|
|
297
|
+
integrations: [nodeProfilingIntegration()],
|
|
298
|
+
profileSessionSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
|
|
299
|
+
profileLifecycle: "trace",
|
|
300
|
+
});
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Performance impact notes:**
|
|
304
|
+
|
|
305
|
+
- **Browser (100Hz sampling):** Low overhead; runs unobtrusively in production.
|
|
306
|
+
Chrome DevTools profiles at 1000Hz — use Sentry profiling for production coverage,
|
|
307
|
+
DevTools for local deep-dives.
|
|
308
|
+
- **Node.js (V8 CpuProfiler):** The native profiler adds CPU overhead.
|
|
309
|
+
Test with realistic load before deploying `profileSessionSampleRate: 1.0` to
|
|
310
|
+
high-traffic production.
|
|
311
|
+
|
|
312
|
+
> “For high-throughput environments, we recommend testing prior to deployment to ensure
|
|
313
|
+
> that your service’s performance characteristics maintain expectations.”
|
|
314
|
+
> — Sentry docs
|
|
315
|
+
|
|
316
|
+
### Chrome DevTools Conflict
|
|
317
|
+
|
|
318
|
+
When `browserProfilingIntegration` is active, Chrome DevTools profiler shows Sentry’s
|
|
319
|
+
overhead mixed into rendering work.
|
|
320
|
+
Disable the integration when doing local DevTools profiling sessions.
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Complete Setup Example
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
// instrumentation-client.ts (Browser)
|
|
328
|
+
import * as Sentry from "@sentry/nextjs";
|
|
329
|
+
|
|
330
|
+
Sentry.init({
|
|
331
|
+
dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
|
|
332
|
+
integrations: [Sentry.browserTracingIntegration(), Sentry.browserProfilingIntegration()],
|
|
333
|
+
tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
|
|
334
|
+
profileSessionSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
|
|
335
|
+
profileLifecycle: "trace",
|
|
336
|
+
});
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
```typescript
|
|
340
|
+
// sentry.server.config.ts (Node.js)
|
|
341
|
+
import * as Sentry from "@sentry/nextjs";
|
|
342
|
+
import { nodeProfilingIntegration } from "@sentry/profiling-node";
|
|
343
|
+
|
|
344
|
+
Sentry.init({
|
|
345
|
+
dsn: process.env.SENTRY_DSN,
|
|
346
|
+
integrations: [nodeProfilingIntegration()],
|
|
347
|
+
tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
|
|
348
|
+
profileSessionSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
|
|
349
|
+
profileLifecycle: "trace",
|
|
350
|
+
});
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
// sentry.edge.config.ts (Edge — NO profiling)
|
|
355
|
+
import * as Sentry from "@sentry/nextjs";
|
|
356
|
+
|
|
357
|
+
Sentry.init({
|
|
358
|
+
dsn: process.env.SENTRY_DSN,
|
|
359
|
+
tracesSampleRate: 0.1,
|
|
360
|
+
// nodeProfilingIntegration NOT added — Edge runtime doesn't support native add-ons
|
|
361
|
+
});
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
```typescript
|
|
365
|
+
// next.config.ts — required Document-Policy header for browser profiling
|
|
366
|
+
import { withSentryConfig } from "@sentry/nextjs";
|
|
367
|
+
|
|
368
|
+
const nextConfig = {
|
|
369
|
+
async headers() {
|
|
370
|
+
return [
|
|
371
|
+
{
|
|
372
|
+
source: "/(.*)",
|
|
373
|
+
headers: [{ key: "Document-Policy", value: "js-profiling" }],
|
|
374
|
+
},
|
|
375
|
+
];
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
export default withSentryConfig(nextConfig, {
|
|
380
|
+
org: process.env.SENTRY_ORG,
|
|
381
|
+
project: process.env.SENTRY_PROJECT,
|
|
382
|
+
authToken: process.env.SENTRY_AUTH_TOKEN,
|
|
383
|
+
tunnelRoute: "/monitoring",
|
|
384
|
+
});
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## Troubleshooting
|
|
390
|
+
|
|
391
|
+
| Issue | Solution |
|
|
392
|
+
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
393
|
+
| No browser profiles appearing in Sentry | Verify `Document-Policy: js-profiling` is present on document responses (check Network tab in DevTools) |
|
|
394
|
+
| Browser profiles only from some users | Expected — only Chromium users are profiled; Firefox/Safari silently no-op |
|
|
395
|
+
| Chrome DevTools shows inflated rendering times | Disable `browserProfilingIntegration()` during local DevTools profiling sessions |
|
|
396
|
+
| `profileSessionSampleRate` has no effect (browser) | Ensure `browserProfilingIntegration()` is listed **after** `browserTracingIntegration()` in `integrations` |
|
|
397
|
+
| No server profiles appearing | Verify `@sentry/profiling-node` version exactly matches `@sentry/nextjs` version |
|
|
398
|
+
| `nodeProfilingIntegration` import error | Check `@sentry/profiling-node` is installed and versions match; don’t import it in `sentry.edge.config.ts` |
|
|
399
|
+
| Profiles not linked to spans | Confirm `profileLifecycle: "trace"` is set and `tracesSampleRate` > 0; both must be set |
|
|
400
|
+
| High CPU usage on server | Lower `profileSessionSampleRate` to 0.1 or 0.05; use `SENTRY_PROFILER_LOGGING_MODE=lazy` |
|
|
401
|
+
| Native add-on fails to load (Alpine/musl Linux) | Ensure the `@sentry/profiling-node` version supports your OS/arch — check the supported platforms table |
|
|
402
|
+
| Flame graphs show minified names | Upload source maps via `withSentryConfig` in `next.config.ts` with `authToken` and project credentials |
|
|
403
|
+
| Profiles on static host not working | Browser profiling requires the `Document-Policy` header — verify your host supports custom response headers |
|