Built a Chrome extension that watches my PRs across GitHub, GitLab, and Bitbucket so I stop tab-hopping all day
Hey r/webdev, sharing a side project for feedback.
I work across multiple repos on different platforms and got tired of:
- Keeping 4 PR tabs open and refreshing them
- Missing CI failures for 30 minutes because I was in another window
- Notification emails being either too noisy or arriving 10 minutes late
So I built a Chrome extension (Manifest V3, React, Tailwind) that polls the three APIs in the background and surfaces:
- CI status across all open PRs (with "who broke the build" attribution)
- Unresolved review comments — pulled via GitHub's GraphQL API because the REST count is wrong
- Pending reviewers, conflicts, changes-requested, stale flags
- Desktop notifications + sound when CI status changes — no tab needed
- Merge directly from the popup with branch-protection respect
A few things I learned that might be useful to anyone here doing similar:
- MV3 service workers can't play audio. You need an offscreen document with a separate JS file — inline
scripts are blocked by CSP.
- Bitbucket Cloud's /workspaces endpoint is being sunset; use /2.0/user/workspaces instead.
- GitLab's /changes endpoint returns an overflow flag on huge MRs — counts lie if you ignore it.
- Persisting CI status in chrome.storage (not in-memory) matters because MV3 service workers tear down
constantly, so you need persistent state to detect "status changed" reliably.
It's free, no backend, no signup, tokens stored only in chrome.storage.local. Genuinely looking for feedback — especially on the urgency-triage UX (icon+count chips above the list) since that's the area I keep iterating on.