Sentry Error Analysis & Fixes
Complete workflow for analyzing and fixing production errors from Sentry crash reports.
Workflow Overview
code
1. Obtain Sentry JSON log ↓ 2. Analyze error ↓ 3. Identify root cause ↓ 4. Generate bug analysis log ↓ 🚨 WAIT FOR USER CONFIRMATION 🚨 ↓ 5. Implement fix (only after approval) ↓ 6. Test & verify ↓ 7. Create PR
Critical Requirements
MUST follow these rules:
- •✅ Always create a bug analysis log in
node_modules/.cache/bugs/before implementing fixes - •🚨 MUST wait for user confirmation before starting any code changes
- •✅ Bug analysis must be complete with all sections filled
- •✅ Use evidence-based methodology (环环相扣,逐步递进)
Quick Reference
Common Error Types
| Type | Description | Common Causes |
|---|---|---|
| AppHang | iOS app frozen >5s | Too many concurrent requests, main thread blocking |
| ANR | Android Not Responding | Heavy operations on main thread, deadlocks |
| Crash | App terminated | Null pointer, memory issues, unhandled exceptions |
| Exception | Handled error | Network failures, validation errors, state issues |
Analysis Methodology
Use 6 types of proof to establish causation:
- •Stack Trace Evidence - Error location in code
- •Breadcrumbs Evidence - User actions leading to error
- •Code Logic Evidence - Why the code causes the issue
- •Timing Evidence - When and how often it occurs
- •Device/Platform Evidence - Affected platforms/devices
- •Fix Verification - Testing confirms fix works
Common Fix Patterns
typescript
// Pattern 1: Concurrent request control
async function executeBatched<T>(
tasks: Array<() => Promise<T>>,
concurrency = 3,
): Promise<Array<PromiseSettledResult<T>>> {
const results: Array<PromiseSettledResult<T>> = [];
for (let i = 0; i < tasks.length; i += concurrency) {
const batch = tasks.slice(i, i + concurrency);
const batchResults = await Promise.allSettled(
batch.map((task) => task()),
);
results.push(...batchResults);
}
return results;
}
// Pattern 2: Main thread offloading (React Native)
import { InteractionManager } from 'react-native';
InteractionManager.runAfterInteractions(() => {
// Heavy operation here
});
// Pattern 3: Error boundary
<ErrorBoundary fallback={<ErrorFallback />}>
<Component />
</ErrorBoundary>
Detailed Guide
For comprehensive Sentry error analysis workflow, see fix-sentry-errors.md.
Topics covered:
- •Obtaining Sentry JSON logs
- •Python-based quick analysis
- •Bug analysis log template
- •6 types of proof methodology
- •Root cause identification
- •Common fix patterns (AppHang, ANR, Crashes)
- •Real-world case studies
- •Testing and verification
- •PR creation workflow
Key Files
| Purpose | Location |
|---|---|
| Bug analysis logs | node_modules/.cache/bugs/ |
| Sentry config | packages/shared/src/modules/sentry/ |
| Error boundaries | packages/kit/src/components/ErrorBoundary/ |
When to Use This Skill
- •Analyzing iOS AppHang errors (5+ second freezes)
- •Fixing Android ANR (Application Not Responding)
- •Investigating crash reports with stack traces
- •Understanding user actions before crashes (breadcrumbs)
- •Creating evidence-based bug analysis reports
- •Implementing fixes for production errors
Related Skills
- •
/performance- Performance optimization patterns - •
/error-handling- Error handling best practices - •
/sentry- Sentry configuration and filtering - •
/code-quality- Lint fixes and code quality