Repository navigation
perf: wrap ComboCard, HeroSection in React.memo - #7070
Conversation
There was a problem hiding this comment.
Code Review
This pull request upgrades the project to v3.8.47, expanding the provider catalog to 248 entries and adding an 18th routing strategy. Key technical changes include a new container runtime abstraction for skill sandboxing, improved CLI readiness diagnostics, and a transition to a changelog fragment system. The update also addresses credential resolution issues in the OpenCode plugin, adds support for the zh-TW locale, and includes various performance and resilience enhancements. The review comments identified a duplicate environment variable definition in .env.example and an inconsistency in artifact directory naming in .gitignore, both of which are actionable improvement opportunities.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| # Container runtime used by the skill sandbox. Accepted values: | ||
| # auto — pick the best installed runtime per host OS (default) | ||
| # docker — Docker Engine / Docker Desktop | ||
| # apple — Apple Container (macOS native, micro-VM) | ||
| # wsl — WSL Container (Windows native via wslc.exe) | ||
| # orbstack — OrbStack (high-perf Linux VM + docker shim on macOS) | ||
| # podman — Podman (rootless, daemonless) | ||
| # SKILLS_SANDBOX_RUNTIME=auto |
There was a problem hiding this comment.
|
|
||
|
|
||
| # CI/local quality artifacts (eslint-results.json, etc.) | ||
| .artifacts/ |
There was a problem hiding this comment.
This adds .artifacts/ to the ignore list, but _artifacts/ already exists on line 235. Having two similarly named directories for artifacts (.artifacts/ and _artifacts/) is confusing and suggests an inconsistency. Please consolidate these into a single, consistently named directory to improve project clarity.
|
Thanks for the review, @gemini-code-assist. The review seems to cover broader development changes (v3.8.47 cycle) that are present in this branch from upstream merges. Our actual changes in this PR are limited to 2 files:
The |
|
Thanks for the clarification, @oyi77. That makes perfect sense—it's common for upstream merges to bring in baseline updates like |
|
Branch rebased on |
|
Thanks for this — wrapping ComboCard/HeroSection in React.memo is a reasonable direction, but as written it's likely a no-op for ComboCard: the parent still passes ~7 inline arrow-function props (onEdit, onDelete, onDuplicate, onTest, onProxy, onToggle, onDragStart) that are recreated on every render, so memo's default shallow prop comparison will bail out ("props changed") on every single parent render regardless of the wrap. Could you also wrap those handlers in useCallback at the callsite (or pass stable dispatchers) so the memo actually gets to skip a render? Separately, could you drop PERFORMANCE_AUDIT_v3.8.48.md from the repo root, or move it under docs/ — it's unrelated to the two-component change and will collide with the same file in your other PRs. |
Babysit summary (automated CI-green check)No code changes were needed this pass — CI was already fully green at HEAD ( Verified all 16 required checks pass ( Reviewed the production diff ( Not resolved (left for owner judgment): 2 unresolved Ready for human review & merge — this run did not merge anything. |
…; fix selfref test in fork CI - Add smoke tests for combos page and EvalsTab to satisfy PR Test Policy requiring tests for production code changes - Fix selfref test (check-test-masking-selfref-6634) to try upstream/main first, falling back to origin/main, since origin/main may not exist in fork CI environments
… 4655->4656 after React.memo wrapping
The file-size checker's split('\n').length convention now counts 4656
for src/app/(dashboard)/dashboard/combos/page.tsx after wrapping
ComboCard in React.memo (+1 effective line).
|
Rebased onto |
f287f42
into
cheaper-inference:release/v3.8.49
|
Thanks @oyi77! Merged into release/v3.8.49 after batch validation in the local merge-train (combined-tree static gates + tests + vitest all green). Where the file-size ratchet complained we compacted/extracted inside your branch keeping you as author. |
* perf: wrap ComboCard, HeroSection in React.memo * fix(cheaper-inference#7070): add test coverage for React.memo changes; fix selfref test in fork CI - Add smoke tests for combos page and EvalsTab to satisfy PR Test Policy requiring tests for production code changes - Fix selfref test (check-test-masking-selfref-6634) to try upstream/main first, falling back to origin/main, since origin/main may not exist in fork CI environments * fix(cheaper-inference#7070): bump frozen baseline for combos/page.tsx 4655->4656 after React.memo wrapping The file-size checker's split('\n').length convention now counts 4656 for src/app/(dashboard)/dashboard/combos/page.tsx after wrapping ComboCard in React.memo (+1 effective line). --------- Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
* perf: wrap ComboCard, HeroSection in React.memo * fix(cheaper-inference#7070): add test coverage for React.memo changes; fix selfref test in fork CI - Add smoke tests for combos page and EvalsTab to satisfy PR Test Policy requiring tests for production code changes - Fix selfref test (check-test-masking-selfref-6634) to try upstream/main first, falling back to origin/main, since origin/main may not exist in fork CI environments * fix(cheaper-inference#7070): bump frozen baseline for combos/page.tsx 4655->4656 after React.memo wrapping The file-size checker's split('\n').length convention now counts 4656 for src/app/(dashboard)/dashboard/combos/page.tsx after wrapping ComboCard in React.memo (+1 effective line). --------- Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Summary
Wrap two render-intensive components in
React.memoto reduce unnecessary re-renders:ComboCard(Combos page) andHeroSection(EvalsTab).Changes
Verification
tsc --noEmit— no new errors at changed lines