Bottleneck is a code review powertool for AI native teams. It's a native Electron app that reproduces the core GitHub PR experience while being dramatically faster and optimized for parallelized background agents. Fast GitHub PR and branch management optimized for teams building code with AI agents like Claude Code, Cursor, Devin, and Codex.
- ⚡ Lightning Fast - Near-instant navigation, diff rendering, and branch checkout
- 🔄 Smart Sync - Incremental updates via GitHub GraphQL with intelligent caching
- 👥 Bulk Actions - Multi-select PRs for batch operations (merge, close, label, etc.)
- 🏷️ Prefix Grouping - Automatically groups PRs by common prefixes (feat/, fix/, etc.)
- 📝 Monaco Editor - VSCode-powered diff viewer with syntax highlighting
- 💾 Offline Support - SQLite-based local cache for offline access
- ⌨️ Shortcuts for Everything - Comprehensive keyboard shortcuts for power users
- Electron - Cross-platform desktop app
- React 18 - UI framework with TypeScript
- Monaco Editor - Code diff viewing
- SQLite - Local data persistence
- GitHub API - PR and repository management
- Tailwind CSS - Styling
- Zustand - State management
- Node.js 18+ and npm
- Git
- GitHub account with appropriate permissions
- Fork (and star) the repository:
gh repo fork areibman/bottleneck --clone
git remote add upstream https://github.com/areibman/bottleneck.git
cd bottleneckTo fetch updates, run
git fetch upstream- Install dependencies:
npm installImportant: You must use npm. Bun is known not to work.
- Run in development mode:
npm run dev- Build for production:
npm run build
npm run distbottleneck/
├── src/
│ ├── main/ # Electron main process
│ │ ├── index.ts # Main entry point
│ │ ├── database.ts # SQLite operations
│ │ ├── auth.ts # GitHub OAuth
│ │ └── git.ts # Git operations
│ ├── renderer/ # React app
│ │ ├── components/ # UI components
│ │ ├── views/ # Page views
│ │ ├── stores/ # Zustand stores
│ │ ├── services/ # API services
│ │ └── utils/ # Utilities
│ └── shared/ # Shared types/constants
├── dist/ # Compiled output
└── release/ # Packaged apps
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run dist- Package the app for distributionnpm run electron- Run the built app
If the React DevTools Profiler tab is missing inside Electron DevTools, walk through the following steps:
-
Update the installer call – In
src/main/index.tsmake sure the React DevTools installation includesallowFileAccess(and optionallyforceDownloadto refresh stale caches):await installExtension(REACT_DEVELOPER_TOOLS, { loadExtensionOptions: { allowFileAccess: true }, forceDownload: true, });
-
Clear the cached extension – Remove the
fmkadmapgofadopljbjfkapdkoienihifolder so Electron downloads the updated bundle on the next run.- macOS:
~/Library/Application Support/Electron/extensions/ - Windows:
%APPDATA%\Electron\extensions\ - Linux:
~/.config/Electron/extensions/
Delete only the React DevTools folder (keep other extensions if you rely on them).
- macOS:
-
Restart the dev environment – Run
npm run dev, open the window, and pressCmd/Ctrl + Option + Ito open DevTools. You should now see both ⚛️ Components and ⚛️ Profiler tabs.
Cmd/Ctrl + B- Toggle sidebarCmd/Ctrl + Shift + B- Toggle right panelCmd/Ctrl + Shift + P- Command paletteCmd/Ctrl + /- Show keyboard shortcuts
Cmd/Ctrl + P- Go to PRCmd/Ctrl + T- Go to fileCmd/Ctrl + [- Previous PRCmd/Ctrl + ]- Next PRAlt + Up- Previous fileAlt + Down- Next file
Cmd/Ctrl + Enter- Submit commentCmd/Ctrl + Shift + A- Approve PRCmd/Ctrl + Shift + R- Request changesV- Mark file as viewedD- Toggle diff viewW- Toggle whitespace
- PR list render: <300ms from cache, <1.5s cold fetch
- First diff paint: <150ms for typical files
- Handle 1k+ files / 50k+ changed lines smoothly
- 60 FPS scrolling in all views
- Virtualized lists and diff rendering
- Web workers for diff computation
- Incremental syntax highlighting
- Smart caching with ETags
- Concurrent API requests with rate limiting
Contributions are welcome! Please feel free to submit a Pull Request.
MIT
- Built with Electron, React, and Monaco Editor
- Inspired by the need for faster PR reviews
- Optimized for teams using agent-based development