refactor(web): the pull request list's rows read the speed-mode modifier themselves#22704
The page subscribed to the Shift modifier at the top of the route, so every Shift press re-rendered the whole page and the column only to pass speedMode to the rows.
The grouped rows move into PullRequestListGroups.tsx, which reads the modifier itself. With 136 rows listed, 3 Shift taps: PullRequestsRouteView 6 → 0 renders, PullRequestsColumn 6 → 0; the rows still re-render because their speed actions really change.
| File | Before | After |
|---|---|---|
| routes/_chat.pull-requests.tsx | 2,100 | 2,034 |
| PullRequestListGroups.tsx | - | 121 |
Part of the pull request page split stack: #22671 → #22672 → #22702 → #22703 → #22704 → #22705 → #22706.
Measured with the rc-init render counter against a dev server seeded from real data (136 pull requests listed), fresh browser per side, main 6a6c84f990 vs the stack top. Opening a PR detail: 6482 / 947 / 1249 renders on main vs 6331 / 1187 / 956 on the stack (noise, the first open includes data arriving). Switching Summary/Timeline/Code: 2-13 renders per switch on both sides. Holding Shift 3 times on the list: 14952 vs 14937 renders; the page and column no longer re-render (6 + 6 before, 0 after), the rows still do because their speed-mode prop really changes.
Tests run on this layer: tsc --noEmit for apps/web, vp lint on the changed files, vp test run src/reactCompilerCoverage.test.ts -t pullRequest (every new file compiles with 0 bailouts), vp test run src/components/pullRequest/pullRequestsRouteSearch.test.ts.
🤖 Generated with Claude Code
Checks
- SuccessfulCodeRabbitGitHub
Review completed
- Successful
Skipped - Not affected
- Skipped
- Skipped
- Skipped
- SuccessfulRemove preview downloadGitHub
- SuccessfulLabel PR 22704GitHub
- Skipped
- SuccessfulLabel PR sizeGitHub
- Successful
- Successful
- Successful
- SuccessfulPrepare PR size configGitHub
- SuccessfulCollect PR targetsGitHub
- SuccessfulCheckGitHub
- SkippedRelease SmokeGitHub
- SkippedRustGitHub
- Skipped
- SuccessfulTest WebGitHub
- SuccessfulTestGitHub
- SuccessfulBuild and TypecheckGitHub
- SuccessfulLabel PR 22704GitHub
- Skipped
- SuccessfulLabel PR sizeGitHub
- SuccessfulCollect PR targetsGitHub
- SuccessfulPrepare PR size configGitHub
- SkippedEAS PreviewGitHub
- SuccessfulTest Server 3GitHub
- SuccessfulTest Server 1GitHub
- SuccessfulTest Server 6GitHub
- SuccessfulTest Server 7GitHub
- SuccessfulTest Server 8GitHub
- SuccessfulTest Server 4GitHub
- SuccessfulTest Server 2GitHub
- SuccessfulLintGitHub
- SuccessfulTest Server 5GitHub
- SuccessfulChangesGitHub
- SuccessfulNative fingerprint diffGitHub
Added 1 commit
- refactor(web): the pull request list's rows read the speed-mode modifier themselves39c2453
Approvability
Verdict: Approved at 39c2453
Macroscope's review found this PR approvable — This refactors the existing pull-request list so speed-mode modifier updates re-render the rows instead of the entire route and open detail panel. Rendering and interaction inputs remain otherwise unchanged, with no schema, security, deployment, default, or static-analysis override changes.
You can add or adjust custom eligibility rules. Learn more.
No actionable comments were generated in the recent review. 🎉
ℹ️ Recent review info
⚙️ Run configuration
- Configuration used: Path: .coderabbit.config.ts
- Review profile: CHILL
- Plan: Team
- Run ID:
9a3d675f-3048-4e01-922c-2abf5d025649
📥 Commits
Reviewing files that changed from the base of the PR and between a9ac4ea519b445df7faaba75045f0379e587a3cc and 39c2453342f21a0f56d05bf184a749337a230098.
📒 Files selected for processing: 2
apps/web/src/components/pullRequest/PullRequestListGroups.tsxapps/web/src/routes/_chat.pull-requests.tsx
Limit details: You’ve used all 10 included reviews currently available.
📝 Walkthrough
The pull-request route now delegates grouped row and header rendering to the new
PullRequestListGroupscomponent. The component handles group headers, row state and callbacks, Shift-only speed mode, match state, and pointer disabling during sweeps.Changes: Grouped Pull Request List
Layer / File(s) Summary Group headers and row rendering
apps/web/src/components/pullRequest/PullRequestListGroups.tsxThe new component renders group headers and pull-request rows. It passes selection, match, action, and sweep state to each row. Speed mode is enabled only when Shift is pressed without Meta, Control, or Alt. Route integration
apps/web/src/routes/_chat.pull-requests.tsxThe route replaces inline group and row rendering with PullRequestListGroupsand passes it display groups, state, and callbacks. It removes the previous group-header and speed-mode code.Priority: ⬇️ Low
Estimated code review effort: 2 (Simple) | ~12 minutes
Change: Refactor
Suggested reviewers:
maria-rcks
Merge Risk: ⚪ Minimal · up to 39c24
Grouped pull-request rows retain the inspected interactions and Shift-action behavior. No actionable merge risk remains after normal checks.
Pre-merge checks: Passed 3 · Failed 1
Failed Failed checks: 1 warning
Check name Status Explanation Resolution Description check Warning The description explains the performance problem, implementation, measured results, and verification commands. It does not provide the required Scope and approval information, and it omits the require… Add the required Problem, Change, Scope and approval, and Verification sections. Link the triaged issue or maintainer approval, or explain why this focused fix qualifies for an exemption. Add before/after screenshots for the UI change and a… Passed Passed checks: 3 passed
Check name Status Explanation Title check Passed The title clearly describes the main change: grouped pull-request rows now read the Shift speed-mode modifier themselves. It is concise, specific, and uses the repository's conventional commit format. Linked Issues check Passed Check skipped because no linked issues were found for this pull request. Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check
Explanation
The description explains the performance problem, implementation, measured results, and verification commands. It does not provide the required Scope and approval information, and it omits the required before/after UI screenshots.
Resolution
Add the required Problem, Change, Scope and approval, and Verification sections. Link the triaged issue or maintainer approval, or explain why this focused fix qualifies for an exemption. Add before/after screenshots for the UI change and a recording if interaction timing requires it.
✨ Finishing Touches
📝 Generate docstrings
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
- Commit to this branch
- Create a new PR
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Usage-based review receipt
- Mode: Continue automatically
- Reviewed files: 2
- Charged: $0.50
- View usage details
Note
This review was completed with usage-based billing: files reviewed beyond your plan's included limits are billed at $0.25/file. View usage-based billing.
Comment @coderabbitai help to get the list of available commands.