Code Review Phrases
30 professional phrases for giving and receiving code review feedback — approvals, suggestions, blocking issues, and PR descriptions.
Code review communication principles
- Use Nit: to mark non-blocking minor suggestions
- Use Blocking: for things that must change before merge
- Phrase suggestions as questions or options — not commands
- Be explicit about approval: "Nothing blocking" means different things to different people
Approving & Positive Feedback
- This looks good to me. Approved! ✓Clear, concise approval
- LGTM! (Looks Good To Me)Common abbreviation — informal approval
- Clean implementation — no notes.Praise without padding
- I like the approach here — clear and easy to follow.Specific positive on readability
- Nice use of X here — this will make future changes easier.Acknowledge forward-thinking design
- Left a few minor comments — nothing blocking.Signal overall approval with small nits
Suggesting Improvements
- Nit: could rename this to [name] for clarity."Nit" = non-blocking minor suggestion
- Could you consider extracting this into a separate function?Soft suggestion — question form
- I'd suggest…Assertive but non-demanding
- What do you think about…?Invite the author's opinion first
- This might be cleaner as…"Might" lowers the pressure
- Optional: you could also do X, but this works too.Mark a suggestion as truly optional
- Not a blocker, but worth noting for future refactors.Defer non-urgent feedback explicitly
Requesting Required Changes
- This needs a test for the edge case where…Direct request — no softening needed for tests
- Can you add error handling for the case where X is null?Question form softens a requirement
- Blocking: this will cause a bug when [condition].Explicitly flag showstoppers
- I'd want to see a test before approving this.Clear condition for approval
- This might cause a race condition if X and Y happen concurrently.Flag a potential bug diplomatically
- The logic here doesn't handle [edge case] — can you add that?Point to the gap, ask for the fix
Asking Questions & Clarifications
- Can you explain the reasoning behind this approach?Genuine question — not a challenge
- Why X instead of Y here?Direct — fine if you're curious, not critical
- Is this intentional, or a leftover from earlier?Check before flagging a bug
- Am I missing something, or does this not handle [case]?"Am I missing something" — humble framing
- Out of curiosity — is there a reason to prefer X over Y here?Learning question, not a blocker
- Happy to discuss in a call if this is complex to explain in comments.Offer async-to-sync escalation
Writing a Strong PR Description
- This PR…Always start with what the PR does
- Fixes #[issue number] — [brief description]Link to the issue
- How to test: 1) Run X 2) Check Y 3) Expect ZNumbered test steps are easiest to follow
- No breaking changes.Explicitly call this out
- Breaking change: [what changed] — migration steps below.Lead with the impact
- Screenshots / recordings below.For UI changes
- Known limitation: [X]. Tracked in #[issue number].Honest about constraints