A Chrome extension that monitors GitHub pull requests where you're a reviewer, assignee, or author. Get desktop notifications for new PRs, comments, reviews, CI failures, and status changes.
- Multi-Repo Monitoring: Track PRs across multiple repositories and organizations
- Activity Tracking: Monitor comments, reviews, CI/Actions status, and PR state changes
- Smart Notifications: Batched desktop notifications to avoid spam, with per-repo controls
- Author Tracking: Track PRs you authored with visual distinction (Owner badge)
- Filter Views: Quick toggle between All / Mine / Others PRs in the popup
- Collapsible Sections: Organize PRs by organization and repository
- Dark Mode: Automatic theme switching based on system preference
- Badge Count: At-a-glance PR count on the extension icon (updates with filter)
- PR Page Tweaks: Opt-in line diffs, reviewer avatars, and last-comment times on GitHub's pull request list
| Popup | Settings |
|---|---|
![]() |
![]() |
| Popup | Settings |
|---|---|
![]() |
![]() |
All three tweaks on kubernetes/kubernetes: line diffs and last-comment time on the meta line, reviewer avatars with review-state dots in place of assignees, and amber rows awaiting the signed-in user's review.
- Download the latest release
- Extract the zip file
- Open Chrome and go to
chrome://extensions - Enable Developer mode (toggle in top-right corner)
- Click Load unpacked and select the extracted folder
The download link always points to the latest version automatically.
- Clone this repository:
git clone https://github.com/Kcharle/github-pr-chrome-extension.git cd github-pr-chrome-extension - Install dependencies and build:
npm install npm run build:ext
- Open Chrome and navigate to
chrome://extensions/ - Enable Developer mode (toggle in top-right corner)
- Click Load unpacked
- Select the
distfolder
Note: Loading from
dist/keeps the extension size small (~150KB). Loading from the project root includesnode_modules(~25MB).
- Go to GitHub Settings → Fine-grained tokens
- Click Generate new token
- Name it (e.g., "PR Monitor") and set expiration
- Under Repository access, select the repos to monitor
- Under Permissions → Repository permissions, set:
Pull requests→ Read-onlyCommit statuses→ Read-only (for CI status)Actions→ Read-only (for GitHub Actions status)Contents→ Read-only (to spot new commits since your review)Metadata→ Read-only (auto-selected)
- Click Generate token and copy it
- Go to GitHub Settings → Tokens (classic)
- Generate new token with
reposcope - Copy the token
- Click the extension icon in Chrome toolbar
- Click the Settings (gear) icon
- Paste your GitHub Personal Access Token
- Click Validate Token
- Add repositories to monitor using the Add Repository button
- Configure notification preferences (global and per-repo)
- Click Save Settings
Click the extension icon to see your PRs organized by organization and repository:
| Badge | Meaning |
|---|---|
| 🟢 Ready | Ready for review |
| 🟡 Draft | Draft PR |
| 🔵 Author | PR you created |
| ⚪ Reviewer/Assignee | Your role on the PR |
Activity indicators show:
- ✅/❌/⏳ CI status
- 👍/🔄/💬 Review status
- 💬 Comment count
Filter toggle: Switch between All / Me (authored) / Others (reviewing)
Click any PR card to open it in GitHub.
When enabled, you'll receive desktop notifications for:
- New PRs assigned to you
- New comments on your PRs
- Review submissions (approved, changes requested)
- CI/Action failures and successes
- Ready to merge (CI passed + approved)
- PR status changes (draft → ready, merged, closed)
Notifications are batched to avoid spam. Per-repo notification controls let you fine-tune which alerts you receive.
The extension icon shows:
- Red number: PR count (updates based on your filter selection)
- Gray ?: Extension not configured
Opt-in changes to the pull request list on github.com, for monitored repositories only. Toggle them under Page tweaks in the popup or the Pull request page card in Settings; both save immediately and apply to open tabs without a reload.
- Line diffs:
+123 −45next to each PR's opened time - Reviewers: reviewer avatars replace the assignee avatars, each with a dot for its state (green approved, red changes requested, grey commented, hollow amber pending). Rows turn amber when a PR needs your review: you're a requested reviewer, or you commented or requested changes and new commits have landed since. The new-commits check needs
Contents→ Read-only on fine-grained tokens - Last comment: when the latest comment or review was left, bots included
The data comes from one GitHub GraphQL request per page, made by the extension's background worker, so your token never reaches the page.
| Setting | Description | Default |
|---|---|---|
| GitHub Token | Personal access token | Required |
| Repositories | Repos to monitor (multi-select) | Required |
| Notifications | Desktop notification toggle | Enabled |
| Poll Interval | Check frequency | 2 minutes |
| Per-Repo Alerts | Granular notification control | All enabled |
| Type | Description |
|---|---|
| PRs | New PRs where you're reviewer/assignee |
| Comments | New comments on tracked PRs |
| Reviews | Review submissions (approved, changes requested) |
| CI Fail | GitHub Actions/Checks failures |
| CI Pass | All CI checks passed |
| Mergeable | PR is approved and CI passed (ready to merge) |
| Status | PR state changes (draft, ready, merged, closed) |
- Verify the token hasn't expired
- For fine-grained tokens: ensure these permissions are set:
Pull requests→ Read-onlyCommit statuses→ Read-only (for CI status)Actions→ Read-only (for GitHub Actions status)Contents→ Read-only (to re-highlight PRs with new commits since your review)
- For classic tokens: ensure
reposcope is selected
- Ensure your fine-grained token has
ActionsandCommit statusespermissions - Some external CI systems (Jenkins, CircleCI) use Commit Statuses; GitHub Actions uses the Actions API
- Verify you're a reviewer, assignee, or author on the PRs
- Check you've added the correct repository
- Click the refresh button to manually update
- Check Chrome's notification settings for this extension
- Verify notifications are enabled in extension settings
- Check per-repo notification toggles
- Make sure "Do Not Disturb" mode is off on your system
This extension:
- Only communicates with
api.github.com - Runs a script on
github.compages only to apply the opt-in PR page tweaks; it reads PR numbers from the page and sends nothing elsewhere - Stores your token locally in Chrome's secure storage
- Does not collect or transmit any analytics
- Is fully open source
# Clone the repository
git clone https://github.com/Kcharle/github-pr-chrome-extension.git
cd github-pr-chrome-extension
# Install dependencies
npm install
# Build CSS only
npm run build:css
# Build extension to dist/ folder
npm run build:ext
# Watch for CSS changes during development
npm run watch:cssReleases are automated via GitHub Actions. To create a new release:
git tag v1.0.0
git push origin v1.0.0This automatically builds the extension and publishes it to GitHub Releases.
github-pr-chrome-extension/
├── manifest.json # Extension manifest (v3)
├── background.js # Service worker (polling, notifications, badge)
├── tailwind.config.js # Tailwind configuration
├── postcss.config.js # PostCSS plugins
├── package.json # Dependencies and scripts
├── src/styles/
│ ├── base.css # Shared theme (GitHub Primer colors)
│ ├── input.css # Options page source
│ └── popup-input.css # Popup source
├── popup/
│ ├── popup.html # Popup UI
│ ├── popup.css # Compiled styles
│ └── popup.js # Popup logic
├── options/
│ ├── options.html # Settings page
│ ├── options.css # Compiled styles
│ └── options.js # Settings logic
├── content/
│ ├── pr-list.js # PR list page tweaks (content script)
│ └── pr-list.css # Styles for the tweaks
├── lib/
│ └── pr-list-settings.js # Tweak setting keys/labels shared by popup, options, content script
├── icons/ # Extension icons (16, 48, 128px)
└── dist/ # Built extension (load this in Chrome)
Uses Tailwind CSS with GitHub Primer colors. Theme automatically switches between light/dark based on system preference via CSS prefers-color-scheme.
CSS variables defined in src/styles/base.css:
--bg-primary,--bg-secondary,--bg-tertiary--text-primary,--text-secondary,--text-muted--accent,--success,--warning,--error
Maintained by @Kcharle
MIT





