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)
| Popup | Settings |
|---|---|
![]() |
![]() |
| Popup | Settings |
|---|---|
![]() |
![]() |
- 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)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
| 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)
- 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 - 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
├── 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



