---
name: error-tracking-integrator
description: Adds comprehensive error tracking with Sentry, Rollbar, or similar services including error boundaries, context, and breadcrumbs. Use when user requests error monitoring or mentions production debugging.
allowed-tools: Read, Grep, Glob, Write, Edit, Bash
---
# Error Tracking Integrator
Integrates error tracking services into applications for better production debugging and monitoring.
## When to Use
- User requests error monitoring or tracking
- Setting up production error logging
- User mentions "Sentry", "error tracking", "crash reporting", or "production debugging"
## Instructions
### 1. Detect Framework
Identify application framework:
- React, Vue, Angular (frontend)
- Express, Fastify (Node.js backend)
- Django, Flask (Python)
- Rails (Ruby)
### 2. Choose Error Tracking Service
**Popular services:**
- **Sentry**: Most popular, comprehensive
- **Rollbar**: Good for backend
- **Bugsnag**: Multi-platform
- **Airbrake**: Ruby-focused
- **LogRocket**: Session replay + errors
### 3. Install and Configure
**Sentry (React example):**
```bash
npm install @sentry/react
```
```javascript
import * as Sentry from "@sentry/react";
Sentry.init({
dsn: process.env.REACT_APP_SENTRY_DSN,
environment: process.env.NODE_ENV,
tracesSampleRate: 1.0,
integrations: [
new Sentry.BrowserTracing(),
new Sentry.Replay()
],
});
```
**Sentry (Node.js/Express):**
```javascript
const Sentry = require("@sentry/node");
Sentry.init({
dsn: process.env.SENTRY_DSN,
environment: process.env.NODE_ENV,
tracesSampleRate: 1.0,
});
// Request handler (first middleware)
app.use(Sentry.Handlers.requestHandler());
// Error handler (after all routes, before error middleware)
app.use(Sentry.Handlers.errorHandler());
```
### 4. Add Error Boundaries (React)
```javascript
import { ErrorBoundary } from '@sentry/react';
function App() {
return (
}>
);
}
```
### 5. Add Context
**User context:**
```javascript
Sentry.setUser({
id: user.id,
email: user.email,
username: user.username
});
```
**Tags:**
```javascript
Sentry.setTag("page_locale", "en-US");
Sentry.setTag("feature_flag", "new_ui");
```
**Context:**
```javascript
Sentry.setContext("order", {
id: order.id,
total: order.total,
items: order.items.length
});
```
### 6. Breadcrumbs
Track user actions leading to error:
```javascript
Sentry.addBreadcrumb({
category: "auth",
message: "User logged in",
level: "info"
});
Sentry.addBreadcrumb({
category: "ui",
message: "Button clicked",
data: { buttonId: "submit-form" }
});
```
### 7. Manual Error Capture
```javascript
try {
riskyOperation();
} catch (error) {
Sentry.captureException(error, {
tags: { section: "payment" },
level: "error",
extra: { orderId: order.id }
});
}
```
### 8. Filter Sensitive Data
**Scrub PII:**
```javascript
Sentry.init({
beforeSend(event, hint) {
// Don't send if contains sensitive data
if (event.request?.data?.password) {
delete event.request.data.password;
}
return event;
},
ignoreErrors: [
// Ignore browser extension errors
/extensions\//i,
/^Non-Error promise rejection/,
]
});
```
### 9. Source Maps (Production)
Enable source maps for readable stack traces:
**Webpack:**
```javascript
// webpack.config.js
module.exports = {
devtool: 'source-map',
plugins: [
new SentryWebpackPlugin({
org: "your-org",
project: "your-project",
authToken: process.env.SENTRY_AUTH_TOKEN,
include: "./dist",
}),
],
};
```
### 10. Alert Configuration
Set up alerts for:
- New issues
- Regression (resolved issue occurs again)
- Spike in error rate
- Critical errors (payment, auth failures)
### 11. Performance Monitoring
Add transaction tracking:
```javascript
const transaction = Sentry.startTransaction({
name: "processOrder",
op: "task"
});
try {
await processOrder();
} finally {
transaction.finish();
}
```
### 12. Best Practices
- **Environment separation**: Different projects for dev/staging/prod
- **Release tracking**: Tag errors with release version
- **Sample rates**: 100% errors, lower% for performance
- **Team notifications**: Slack/email integration
- **Issue assignment**: Auto-assign to code owners
- **Error grouping**: Custom fingerprinting for better grouping
- **Don't log sensitive data**: PII, passwords, tokens
## Supporting Files
- `templates/sentry-react.js`: React integration template
- `templates/sentry-node.js`: Node.js integration template
- `templates/sentry-python.py`: Python integration template