Error Tracking
Automatic error grouping, severity levels, and AI-powered investigation.
DeepTracer catches every error in your app and automatically groups them by root cause. Same bug, same group — regardless of which user triggered it or which request caused it.
How error grouping works
When an error arrives, DeepTracer generates a fingerprint based on the error type, message pattern, and stack trace. Errors with the same fingerprint are grouped together, so you see one entry per unique bug — not thousands of duplicate reports.
Each error group shows you:
- Occurrence count — How many times this error has happened
- First seen / Last seen — When it first appeared and when it last fired
- Affected users — How many unique users hit this error
- AI-generated title — A short, human-readable summary of the bug
Severity levels
Every error group has a severity level so you can focus on what matters:
| Severity | Meaning |
|---|---|
| Critical | Your app is broken for users right now |
| High | A major feature is failing |
| Medium | Something is wrong but users can work around it |
| Low | Minor issue, non-blocking |
DeepTracer assigns severity automatically based on error frequency, affected users, and error type. You can override it manually.
Resolution status
Track your progress fixing bugs:
- Unresolved — This error is still happening (default)
- Resolved — You fixed it. Add a note explaining what you changed.
If a resolved error starts happening again, DeepTracer automatically reopens it and notifies you.
Breadcrumbs
Every error includes a trail of breadcrumbs — the recent events that happened right before the crash. This gives you context without having to search through logs manually.
Breadcrumbs include things like:
- HTTP requests made
- Console logs
- User navigation (page changes)
- Custom events you logged
Capturing errors manually
DeepTracer captures unhandled errors automatically. For errors you catch yourself, report them manually:
try {
await chargeCustomer(orderId)
} catch (error) {
logger.captureError(error, {
severity: "high",
metadata: { orderId, customerId },
})
}You don't need to call captureError for unhandled errors — DeepTracer catches those automatically. Use it for errors you catch but still want to track.
Dashboard features
- Error groups list — All unique errors, sorted by last seen or occurrence count
- Timeseries chart — See error frequency over time to spot spikes
- Error detail view — Full stack trace, breadcrumbs, metadata, and affected users
- One-click investigation — Hit "Investigate" and let AI explain the root cause