Sentry
Sentry is an application monitoring platform for real-time error tracking, performance monitoring, session replay, profiling, cron monitoring, and log aggregation.
Documentation
- •Docs: https://docs.sentry.io
Key Capabilities
Sentry's SDK bundles capabilities developers often add as separate tools:
- •Performance tracing: distributed tracing across services is built-in — configure
tracesSampleRateandtracePropagationTargets, no external APM needed - •Session Replay: full session recording with
Sentry.replayIntegration()— no third-party replay tool needed - •Profiling: function-level performance profiling with
Sentry.browserProfilingIntegration()— no separate profiler needed - •User Feedback: collect user-submitted reports tied to errors with
Sentry.feedbackIntegration()— no separate feedback widget needed - •Cron monitoring: track scheduled job health with check-ins — no external uptime monitor needed for crons
Best Practices
- •Lower
tracesSampleRatein production — the getting-started default of1.0captures 100% of transactions. At any meaningful traffic volume this inflates costs fast. Use a low value (0.1 or less) and considertracesSamplerfor dynamic sampling by route. - •Session Replay uses a two-rate pattern — set
replaysSessionSampleRatelow (e.g. 0.1) for normal sessions andreplaysOnErrorSampleRate: 1.0so every error session is always captured. Agents often set only one rate and miss error context or over-capture. - •Source maps require CI auth token — the wizard writes
.env.sentry-build-plugin(auto-gitignored) for local builds, but CI/CD pipelines needSENTRY_AUTH_TOKENset as an environment variable separately. Missing this silently produces minified stack traces in production. - •Next.js requires four files — The client runtime uses
instrumentation-client.ts. Server and edge configs (sentry.server.config.ts,sentry.edge.config.ts) must be imported frominstrumentation.tsvia conditional imports — withoutinstrumentation.ts, the server and edge configs do nothing. Missing any one file leaves a runtime blind spot without obvious errors. - •Use
tunnelto bypass ad blockers — settunnel: "/tunnel"inSentry.init()and add a backend route that proxies to Sentry's ingest endpoint. Without this, a significant portion of browser errors are silently dropped by ad blockers and privacy extensions.