Monitoring
sentry

Sentry

PythonTypeScriptSaaSFree tier

The leading error tracking and performance monitoring platform. Sentry captures exceptions, stack traces, and performance issues in real time across web, mobile, and backend. Essential for any production application.

License

FSL / Proprietary

Language

Python / TypeScript

94
Trust
Excellent

Why Sentry?

You need real-time error tracking with full stack traces

You want performance monitoring and distributed tracing

You need to group, triage, and assign bugs across a team

Signal Breakdown

What drives the Trust Score

npm downloads
9.1M / wk
Commits (90d)
612 commits
GitHub stars
39k ★
Stack Overflow
9.2k q's
Community
Very High
Weighted Trust Score94 / 100

Download Trend

Last 12 months

Tradeoffs & Caveats

Know before you commit

You only need uptime monitoring (BetterStack is simpler)

You're building an internal tool where error alerting isn't critical

Budget is tight — Sentry's free tier is limited

Pricing

Free tier & paid plans

Free tier

5K errors/mo · 10K perf events

Paid

$26/mo Team (100K errors)

14-day trial on Business

Cost Calculator

Estimate your Sentry cost

50 K errors
110,000

Estimated monthly cost

$26/mo

Team plan: $26/mo for up to 100K errors.

Estimates only. Verify with official pricing pages before budgeting.

Often Used Together

Complementary tools that pair well with Sentry

nextjs

Next.js

Frontend & UI

98Excellent
View
supabase

Supabase

Database & Cache

95Excellent
View
vercel

Vercel

Hosting & Deploy

89Strong
View
datadog

Datadog

Monitoring

86Strong
View
prometheus

Prometheus

Monitoring

96Excellent
View

Learning Resources

Docs, videos, tutorials, and courses

Get Started

Repository and installation options

View on GitHub

github.com/getsentry/sentry-javascript

npmnpm install @sentry/nextjs
pippip install sentry-sdk

Quick Start

Copy and adapt to get going fast

// sentry.client.config.ts
import * as Sentry from "@sentry/nextjs";

Sentry.init({
  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
  tracesSampleRate: 1.0,
  environment: process.env.NODE_ENV,
});

Code Examples

Common usage patterns

Capture a handled exception

Manually report an error with extra context

import * as Sentry from "@sentry/nextjs";

try {
  await riskyOperation();
} catch (err) {
  Sentry.captureException(err, {
    extra: { userId, action: 'riskyOperation' },
    tags: { feature: 'payments' },
  });
  throw err;
}

Custom performance span

Trace a specific operation for performance monitoring

import * as Sentry from "@sentry/nextjs";

const result = await Sentry.startSpan(
  { name: 'db.query.fetchTools', op: 'db.query' },
  async () => {
    return await db.query('SELECT * FROM tools');
  }
);

Set user context

Associate errors with the authenticated user

import * as Sentry from "@sentry/nextjs";

// After the user logs in
Sentry.setUser({
  id: user.id,
  email: user.email,
  username: user.name,
});

// Clear on logout
Sentry.setUser(null);

Community Notes

Real experiences from developers who've used this tool