Code Review
Goal: Prevent bugs. Ignore style, formatting, naming — linter handles that.
Report These
- •Null/undefined crashes
- •Logic errors (off-by-one, wrong conditions, missing edge cases)
- •Race conditions, missing Promise handling
- •Memory leaks (unsubscribed observables, event listeners)
- •Infinite loops
- •SQL/XSS injection, unsanitized input
- •Authentication bypass, wrong permission checks
- •Exposed secrets
- •Breaking changes without migrations
- •N+1 queries, blocking operations in main thread
Ignore These
- •Formatting, spacing
- •Variable names (unless truly misleading)
- •Refactoring ideas without concrete bug
- •Style preferences
- •Missing comments
Review Checklist
- •Will it crash? (null/undefined, types)
- •Is logic correct? (edge cases)
- •Is data safe? (validation, permissions)
- •Resource leaks? (subscriptions, listeners)
- •Async correct? (Promise handling, race conditions)
If all clear → APPROVE.
Tone
Be direct. State impact clearly: "Crash", "Bug", "Data loss", "Breaking". When in doubt, don't comment.