@danieljvdm/dev-kit 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +6 -29
- package/skill-sources.lock.json +23 -109
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +11 -115
- package/skills/open-pull-request/agents/openai.yaml +3 -3
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
# Crons — Sentry Next.js SDK
|
|
2
|
+
|
|
3
|
+
> Minimum SDK: `@sentry/nextjs` ≥7.51.1+ for `captureCheckIn`\
|
|
4
|
+
> `Sentry.withMonitor()`: ≥7.76.0+\
|
|
5
|
+
> Cron library auto-instrumentation: ≥7.92.0+
|
|
6
|
+
|
|
7
|
+
> ⚠️ **Server and Edge runtimes only.** Cron monitoring is not available in the browser
|
|
8
|
+
> runtime.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Sentry Cron Monitoring detects:
|
|
15
|
+
|
|
16
|
+
- **Missed check-ins** — job didn’t run at the expected time
|
|
17
|
+
- **Runtime failures** — job ran but encountered an error
|
|
18
|
+
- **Timeouts** — job exceeded `maxRuntime` without completing
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Option A: Automatic Vercel Cron Integration
|
|
23
|
+
|
|
24
|
+
For **Vercel-hosted Next.js** apps using Vercel Cron Jobs:
|
|
25
|
+
|
|
26
|
+
```javascript
|
|
27
|
+
// next.config.js
|
|
28
|
+
const { withSentryConfig } = require("@sentry/nextjs");
|
|
29
|
+
|
|
30
|
+
module.exports = withSentryConfig(nextConfig, {
|
|
31
|
+
automaticVercelMonitors: true,
|
|
32
|
+
});
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
> ⚠️ **Critical limitation:** `automaticVercelMonitors` only works with the **Pages
|
|
36
|
+
> Router**. **App Router route handlers are NOT yet supported** for automatic
|
|
37
|
+
> instrumentation. Use `captureCheckIn` or `withMonitor` manually for App Router cron
|
|
38
|
+
> routes.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Option B: Auto-Instrumentation of Cron Libraries (SDK ≥7.92.0)
|
|
43
|
+
|
|
44
|
+
### `cron` npm package
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { CronJob } from "cron";
|
|
48
|
+
import * as Sentry from "@sentry/nextjs";
|
|
49
|
+
|
|
50
|
+
const CronJobWithCheckIn = Sentry.cron.instrumentCron(CronJob, "my-cron-job");
|
|
51
|
+
|
|
52
|
+
const job = new CronJobWithCheckIn("* * * * *", () => {
|
|
53
|
+
console.log("Runs every minute");
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// Or via .from() factory:
|
|
57
|
+
const job2 = CronJobWithCheckIn.from({
|
|
58
|
+
cronTime: "* * * * *",
|
|
59
|
+
onTick: () => console.log("Runs every minute"),
|
|
60
|
+
});
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `node-cron` npm package
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import cron from "node-cron";
|
|
67
|
+
import * as Sentry from "@sentry/nextjs";
|
|
68
|
+
|
|
69
|
+
const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron);
|
|
70
|
+
|
|
71
|
+
cronWithCheckIn.schedule(
|
|
72
|
+
"* * * * *",
|
|
73
|
+
() => {
|
|
74
|
+
console.log("Running every minute");
|
|
75
|
+
},
|
|
76
|
+
{ name: "my-cron-job" }, // ← name is required for Sentry monitoring
|
|
77
|
+
);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### `node-schedule` npm package (SDK ≥7.93.0)
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import * as schedule from "node-schedule";
|
|
84
|
+
import * as Sentry from "@sentry/nextjs";
|
|
85
|
+
|
|
86
|
+
const scheduleWithCheckIn = Sentry.cron.instrumentNodeSchedule(schedule);
|
|
87
|
+
|
|
88
|
+
scheduleWithCheckIn.scheduleJob(
|
|
89
|
+
"my-cron-job", // ← first arg is the monitor slug
|
|
90
|
+
"* * * * *",
|
|
91
|
+
() => {
|
|
92
|
+
console.log("Running every minute");
|
|
93
|
+
},
|
|
94
|
+
);
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
> ⚠️ `node-schedule` instrumentation only supports **cron string format**. Date objects
|
|
98
|
+
> and RecurrenceRule objects are not supported.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Option C: `Sentry.withMonitor()` Wrapper (SDK ≥7.76.0)
|
|
103
|
+
|
|
104
|
+
Wraps any callback and automatically sends `in_progress` → `ok`/`error` check-ins:
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import * as Sentry from "@sentry/nextjs";
|
|
108
|
+
|
|
109
|
+
// Basic usage — monitor must already exist in Sentry
|
|
110
|
+
await Sentry.withMonitor("my-monitor-slug", async () => {
|
|
111
|
+
await processQueue();
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### With Full Monitor Configuration (Upsert)
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
await Sentry.withMonitor(
|
|
119
|
+
"hourly-report-job",
|
|
120
|
+
async () => {
|
|
121
|
+
await generateHourlyReport();
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
schedule: {
|
|
125
|
+
type: "crontab",
|
|
126
|
+
value: "0 * * * *", // runs at top of every hour
|
|
127
|
+
},
|
|
128
|
+
checkinMargin: 2, // minutes of grace before "missed"
|
|
129
|
+
maxRuntime: 10, // minutes before marking as failed
|
|
130
|
+
timezone: "America/Los_Angeles",
|
|
131
|
+
failureIssueThreshold: 3, // consecutive failures before creating issue (SDK ≥8.7.0)
|
|
132
|
+
recoveryThreshold: 2, // consecutive successes before resolving issue (SDK ≥8.7.0)
|
|
133
|
+
},
|
|
134
|
+
);
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Interval Schedule
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
await Sentry.withMonitor(
|
|
141
|
+
"data-sync-job",
|
|
142
|
+
async () => {
|
|
143
|
+
await syncData();
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
schedule: {
|
|
147
|
+
type: "interval",
|
|
148
|
+
value: 30, // numeric value
|
|
149
|
+
unit: "minute", // "minute" | "hour" | "day" | "week" | "month" | "year"
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
);
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Option D: Manual `Sentry.captureCheckIn()` (SDK ≥7.51.1)
|
|
158
|
+
|
|
159
|
+
For full control — send check-ins manually at job start and end:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
import * as Sentry from "@sentry/nextjs";
|
|
163
|
+
|
|
164
|
+
// 1. Signal job started — returns a checkInId for correlation
|
|
165
|
+
const checkInId = Sentry.captureCheckIn({
|
|
166
|
+
monitorSlug: "my-monitor-slug",
|
|
167
|
+
status: "in_progress",
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
try {
|
|
171
|
+
await doWork();
|
|
172
|
+
|
|
173
|
+
// 2a. Signal success
|
|
174
|
+
Sentry.captureCheckIn({
|
|
175
|
+
checkInId,
|
|
176
|
+
monitorSlug: "my-monitor-slug",
|
|
177
|
+
status: "ok",
|
|
178
|
+
});
|
|
179
|
+
} catch (err) {
|
|
180
|
+
// 2b. Signal failure
|
|
181
|
+
Sentry.captureCheckIn({
|
|
182
|
+
checkInId,
|
|
183
|
+
monitorSlug: "my-monitor-slug",
|
|
184
|
+
status: "error",
|
|
185
|
+
});
|
|
186
|
+
throw err;
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### With Upsert Config
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
const checkInId = Sentry.captureCheckIn(
|
|
194
|
+
{
|
|
195
|
+
monitorSlug: "my-monitor-slug",
|
|
196
|
+
status: "in_progress",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
schedule: {
|
|
200
|
+
type: "crontab",
|
|
201
|
+
value: "*/5 * * * *", // every 5 minutes
|
|
202
|
+
},
|
|
203
|
+
checkinMargin: 1,
|
|
204
|
+
maxRuntime: 5,
|
|
205
|
+
timezone: "UTC",
|
|
206
|
+
},
|
|
207
|
+
);
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Heartbeat Check-In (Detects Missed Jobs Only)
|
|
211
|
+
|
|
212
|
+
If you only need to know whether the job ran (not runtime failures), send a single
|
|
213
|
+
check-in at completion:
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
try {
|
|
217
|
+
await doWork();
|
|
218
|
+
Sentry.captureCheckIn({ monitorSlug: "my-monitor-slug", status: "ok" });
|
|
219
|
+
} catch (err) {
|
|
220
|
+
Sentry.captureCheckIn({ monitorSlug: "my-monitor-slug", status: "error" });
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Using Crons with Next.js Route Handlers
|
|
227
|
+
|
|
228
|
+
For App Router cron endpoints called by Vercel Cron or an external scheduler:
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
// app/api/cron/route.ts
|
|
232
|
+
import * as Sentry from "@sentry/nextjs";
|
|
233
|
+
import { NextResponse } from "next/server";
|
|
234
|
+
|
|
235
|
+
export async function GET() {
|
|
236
|
+
const checkInId = Sentry.captureCheckIn({
|
|
237
|
+
monitorSlug: "my-api-cron",
|
|
238
|
+
status: "in_progress",
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
try {
|
|
242
|
+
await runMyScheduledTask();
|
|
243
|
+
|
|
244
|
+
Sentry.captureCheckIn({
|
|
245
|
+
checkInId,
|
|
246
|
+
monitorSlug: "my-api-cron",
|
|
247
|
+
status: "ok",
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
return NextResponse.json({ ok: true });
|
|
251
|
+
} catch (err) {
|
|
252
|
+
Sentry.captureCheckIn({
|
|
253
|
+
checkInId,
|
|
254
|
+
monitorSlug: "my-api-cron",
|
|
255
|
+
status: "error",
|
|
256
|
+
});
|
|
257
|
+
throw err;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Using `withMonitor` in a Route Handler
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
// app/api/cron/route.ts
|
|
266
|
+
import * as Sentry from "@sentry/nextjs";
|
|
267
|
+
import { NextResponse } from "next/server";
|
|
268
|
+
|
|
269
|
+
export async function GET() {
|
|
270
|
+
await Sentry.withMonitor(
|
|
271
|
+
"my-api-cron",
|
|
272
|
+
async () => {
|
|
273
|
+
await runMyScheduledTask();
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
schedule: { type: "crontab", value: "0 * * * *" },
|
|
277
|
+
checkinMargin: 2,
|
|
278
|
+
maxRuntime: 5,
|
|
279
|
+
timezone: "UTC",
|
|
280
|
+
},
|
|
281
|
+
);
|
|
282
|
+
|
|
283
|
+
return NextResponse.json({ ok: true });
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Edge Runtime Route Handler
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
// app/api/cron/route.ts
|
|
291
|
+
export const runtime = "edge";
|
|
292
|
+
|
|
293
|
+
import * as Sentry from "@sentry/nextjs";
|
|
294
|
+
import { NextResponse } from "next/server";
|
|
295
|
+
|
|
296
|
+
export async function GET() {
|
|
297
|
+
await Sentry.withMonitor("my-edge-cron", async () => {
|
|
298
|
+
await runEdgeTask();
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
return NextResponse.json({ ok: true });
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Monitor Configuration Reference
|
|
308
|
+
|
|
309
|
+
Full upsert config object shape:
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
interface MonitorConfig {
|
|
313
|
+
schedule:
|
|
314
|
+
| {
|
|
315
|
+
type: "crontab";
|
|
316
|
+
value: string; // Standard cron expression, e.g. "0 9 * * 1-5"
|
|
317
|
+
}
|
|
318
|
+
| {
|
|
319
|
+
type: "interval";
|
|
320
|
+
value: number; // Numeric quantity
|
|
321
|
+
unit: "minute" | "hour" | "day" | "week" | "month" | "year";
|
|
322
|
+
};
|
|
323
|
+
checkinMargin?: number; // Minutes of grace period before "missed" alert
|
|
324
|
+
maxRuntime?: number; // Minutes before in-progress job is marked failed
|
|
325
|
+
timezone?: string; // IANA tz string, e.g. "America/New_York"
|
|
326
|
+
failureIssueThreshold?: number; // Consecutive failures → create issue (SDK ≥8.7.0)
|
|
327
|
+
recoveryThreshold?: number; // Consecutive successes → resolve issue (SDK ≥8.7.0)
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Cron Status Values
|
|
334
|
+
|
|
335
|
+
| Status | When to use |
|
|
336
|
+
| ------------- | --------------------------------- |
|
|
337
|
+
| `in_progress` | Job has started, work is underway |
|
|
338
|
+
| `ok` | Job completed successfully |
|
|
339
|
+
| `error` | Job failed — an error occurred |
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## Rate Limits
|
|
344
|
+
|
|
345
|
+
Cron check-ins are rate-limited to **6 check-ins per minute per monitor environment**.
|
|
346
|
+
Each environment (production, staging, etc.)
|
|
347
|
+
is tracked independently.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Alerting
|
|
352
|
+
|
|
353
|
+
Create issue alerts filtered by the tag **`monitor.slug`** equals `[your-monitor-slug]`
|
|
354
|
+
in Sentry’s Alerts sidebar.
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## SDK Version Matrix
|
|
359
|
+
|
|
360
|
+
| Feature | Min SDK Version |
|
|
361
|
+
| --------------------------------------------- | --------------- |
|
|
362
|
+
| `Sentry.captureCheckIn()` | **7.51.1** |
|
|
363
|
+
| `Sentry.withMonitor()` | **7.76.0** |
|
|
364
|
+
| `cron` library auto-instrumentation | **7.92.0** |
|
|
365
|
+
| `node-cron` auto-instrumentation | **7.92.0** |
|
|
366
|
+
| `node-schedule` auto-instrumentation | **7.93.0** |
|
|
367
|
+
| `failureIssueThreshold` / `recoveryThreshold` | **8.7.0** |
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Troubleshooting
|
|
372
|
+
|
|
373
|
+
| Issue | Solution |
|
|
374
|
+
| ------------------------------------------ | --------------------------------------------------------------------------------------------- |
|
|
375
|
+
| Check-ins not appearing in Sentry | Verify `monitorSlug` matches the slug configured in Sentry; check DSN is correct |
|
|
376
|
+
| Monitor shows “missed” despite job running | Adjust `checkinMargin` to allow more grace time; check clock skew |
|
|
377
|
+
| Monitor shows “timeout” | Increase `maxRuntime`; investigate why the job is taking longer than expected |
|
|
378
|
+
| `automaticVercelMonitors` not working | Confirm you’re using Pages Router — App Router is NOT supported for automatic instrumentation |
|
|
379
|
+
| `withMonitor` not creating the monitor | First check-in with upsert config creates the monitor; ensure config is passed |
|
|
380
|
+
| Edge runtime check-ins failing | Ensure `sentry.edge.config.ts` is configured; crons work in Edge runtime |
|
|
381
|
+
| Client-side cron calls failing | Move cron monitoring to server/edge code — browser runtime is not supported |
|
|
382
|
+
| Rate limit errors on check-ins | Job is sending more than 6 check-ins/minute; reduce polling frequency or combine check-ins |
|
|
383
|
+
| `node-schedule` with date/RecurrenceRule | Only cron string format is supported for auto-instrumentation; use `withMonitor` instead |
|