The Request Review Action automatically assigns reviewers to pull requests, helping ensure that PRs get appropriate review from relevant team members or teams.
Configuration
Usernames of individual reviewers to request
Team slugs to request reviews from
Basic Usage
on_success:
- requestReview:
reviewers: ["username1", "username2"]
teams: ["frontend-team"]
Examples
Individual Reviewers
Request reviews from specific individuals:
on_success:
- requestReview:
reviewers: ["tech-lead", "senior-developer"]
Team Reviews
Request reviews from entire teams:
on_success:
- requestReview:
teams: ["frontend-team", "design-team"]
Special Annotations
Use special annotations for dynamic reviewers:
on_success:
- requestReview:
reviewers: ["@author"] # Assigns the PR author (useful for FYI reviews)
How It Works
Get Current Reviewers
The action retrieves the list of users and teams already requested as reviewers
Process Special Annotations
It processes any special annotations like @author
Filter Reviewers
It removes any reviewers who have already been requested or can’t review (e.g., the PR author can’t review their own PR)
Request Reviews
If there are new reviewers to request, it sends review requests to them
Practical Use Cases
Component-Based Reviewers
Assign reviewers based on which components are modified:
ruleset:
- name: "Frontend Review"
when:
- "pull_request.opened"
if:
- type: "files"
modified:
match: "src/frontend/.*"
on_success:
- requestReview:
teams: ["frontend-team"]
reviewers: ["ui-lead"]
- name: "Backend Review"
when:
- "pull_request.opened"
if:
- type: "files"
modified:
match: "src/backend/.*"
on_success:
- requestReview:
teams: ["backend-team"]
reviewers: ["api-lead"]
- name: "Database Changes Review"
when:
- "pull_request.opened"
if:
- type: "files"
modified:
match: "src/database/.*"
on_success:
- requestReview:
reviewers: ["database-admin", "schema-owner"]
Security Review for Sensitive Changes
Request security team review for security-related changes:
ruleset:
- name: "Security Review"
when:
- "pull_request.opened"
if:
- type: "files"
modified:
match: "(src/(auth|security)/.*|.*password.*\\.js)"
on_success:
- requestReview:
teams: ["security-team"]
- label:
add: ["security-review"]
- comment:
body: |
This PR contains changes to security-sensitive code.
A security team review has been automatically requested.
Documentation Review
Request documentation team review for docs changes:
ruleset:
- name: "Documentation Review"
when:
- "pull_request.opened"
if:
- type: "files"
modified:
match: "(docs/.*|README\\.md)"
on_success:
- requestReview:
teams: ["docs-team"]
- label:
add: ["documentation"]
Random Reviewer Selection
Create a round-robin review system (requires additional setup):
ruleset:
- name: "Random Reviewer"
when:
- "pull_request.opened"
on_success:
- requestReview:
reviewers: ["{{ random_reviewer }}"] # Would require custom implementation
Best Practices
Assign reviewers based on code ownership or expertise
Don’t overwhelm individuals with too many review requests
Balance team and individual reviewer assignments
Consider workload and timezone differences
Be mindful of reviewer fatigue; rotating reviewers can help distribute the workload
Team Assignment Tips
When assigning team reviews:
- Team Structure: Team names are in the format
organization/team-slug
- Public Teams: Make sure the teams are visible to the GitHub App
- Manage Expectations: Set clear expectations about which team members should respond
- Review Policies: Consider creating team review assignment policies
Individual Reviewer Tips
When assigning individual reviewers:
- Required vs Optional: Distinguish between required and optional reviewers
- Specialist Reviews: Assign specialists for specific types of changes
- Cross-Training: Occasionally assign reviewers from different teams for knowledge sharing
- Backup Reviewers: Consider assigning backup reviewers for critical changes