diff --git a/docs/reference/react-performance-audit.md b/docs/reference/react-performance-audit.md index 1399aac6187..0d31c42a0a4 100644 --- a/docs/reference/react-performance-audit.md +++ b/docs/reference/react-performance-audit.md @@ -49,7 +49,7 @@ Initial inventory: Current count after low-risk PRs #3038, #3041, #3042, #3044, #3051, #3052, #3053, #3054, #3055, #3056, #3058, #3059, #3060, #3062, #3063, #3064, #3065, #3066, #3067, #3068, #3069, #3083, #3087, #3091, #3100, #3104, #3122, #3160, #3164, #3166, #3223, and #3244: 920 Effect hook call sites. -Open medium-risk PRs #3070, #3073, #3077, #3089, #3093, #3102, #3108, #3110, #3112, #3118, #3124, #3126, #3128, #3130, #3132, #3134, #3142, #3144, #3146, #3148, #3150, #3152, #3154, #3170, #3176, #3184, #3186, #3188, #3192, #3195, #3198, #3200, #3202, #3206, #3218, #3220, #3226, #3228, #3234, #3240, #3242, and #3247 each project to 919 Effect hook call sites on the current merged baseline; open medium-risk PRs #3097, #3106, #3116, #3120, #3136, #3138, #3180, #3210, #3214, and #3238 each project to 918; open medium-risk PRs #3114 and #3168 each project to 917; open medium-risk PRs #3095, #3140, and #3230 each project to 916; open medium-risk PR #3079 projects to 910; open high-risk PRs #3157 and #3212 each project to 919; open high-risk PR #3075 projects to 916; open high-risk PR #3250 projects to 915; and open high-risk PR #3081 projects to 912. These are not counted in the merged baseline until reviewed and merged. +Open medium-risk PRs #3070, #3073, #3077, #3089, #3093, #3102, #3108, #3110, #3112, #3118, #3124, #3126, #3128, #3130, #3132, #3134, #3142, #3144, #3146, #3148, #3150, #3152, #3154, #3170, #3176, #3184, #3186, #3188, #3192, #3195, #3198, #3200, #3202, #3206, #3218, #3220, #3226, #3228, #3234, #3240, #3242, and #3247 each project to 919 Effect hook call sites on the current merged baseline; open medium-risk PRs #3097, #3106, #3116, #3120, #3136, #3138, #3180, #3210, #3214, and #3238 each project to 918; open medium-risk PRs #3114 and #3168 each project to 917; open medium-risk PRs #3095, #3140, and #3230 each project to 916; open medium-risk PR #3079 projects to 910; open high-risk PRs #3157, #3212, and #3253 each project to 919; open high-risk PR #3075 projects to 916; open high-risk PR #3250 projects to 915; and open high-risk PR #3081 projects to 912. These are not counted in the merged baseline until reviewed and merged. | Area | Files / signal | Scan status | Notes | | ------------------------------ | -------------------------------------------------------------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | @@ -66,7 +66,7 @@ Open medium-risk PRs #3070, #3073, #3077, #3089, #3093, #3102, #3108, #3110, #31 | Issue, PR, task pages | `TaskPage.tsx`, `PullRequestPage.tsx`, `GitHubItemDialog.tsx`, `GitLabItemDialog.tsx`, Linear components | Inventory complete, manual review in progress | Linear estimate input sync covered by #3108; Linear sub-issue list sync covered by #3110; GitHub project date draft sync covered by #3112; GitHub reviewer-picker active index covered by #3114; GitHub project column state covered by #3116; GitHub Project visible-table cache covered by #3186; GitHub Project dialog state covered by #3214; GitLab comment draft reset covered by #3124; Linear title/description draft sync covered by #3130. Continue large-file scan with separate GitHub, GitLab, Linear, and generic review behavior. | | Onboarding / feature wall | `components/onboarding/**`, `components/feature-wall/**` | Inventory complete, manual review in progress | Select portal root Effects covered by #3087; tour visited-marker Effects covered by #3095; persisted completion close reset covered by #3188; onboarding settings hydration covered by #3198. Continue with demo timers and telemetry while avoiding telemetry semantic changes. | | Status, dashboard, activity | `components/status-bar/**`, `components/dashboard/**`, `components/activity/**`, `components/pet/**` | Inventory complete, manual review in progress | Status-bar account menu close reset covered by #3051; pet overlay size clamp covered by #3118; Activity selected-thread repair covered by #3126; Workspace Space row-state repairs covered by #3168; Resource Manager Space scan-ready latch covered by #3200. Check interval sharing, retained agent state, activity terminal portals. | -| Mobile app routes | `mobile/app/**` | Inventory complete, manual review in progress | Pair-confirm route-code parsing covered by #3240; host home new-worktree route action covered by #3242; Accounts unused client ref covered by #3244; mobile home shared-client ref mirror covered by #3247; session route terminal/tab ref mirrors covered by #3250. Continue with large `tasks.tsx`, session route cleanup Effects, home route ref mirrors, and remote-client parity. | +| Mobile app routes | `mobile/app/**` | Inventory complete, manual review in progress | Pair-confirm route-code parsing covered by #3240; host home new-worktree route action covered by #3242; Accounts unused client ref covered by #3244; mobile home shared-client ref mirror covered by #3247; session route terminal/tab ref mirrors covered by #3250; tasks route client ref mirror covered by #3253. Continue with large `tasks.tsx` state/polling Effects, session route cleanup Effects, home route ref mirrors, and remote-client parity. | | Mobile shared source | `mobile/src/**` | Inventory complete, manual review in progress | TextInputModal and CustomKeyModal open-state resets covered by #3223; BottomDrawer mount bookkeeping covered by #3226; MobileBrowserPane address sync covered by #3228; MobileBrowserPane ref mirrors covered by #3230; useMobileDictation ref mirrors covered by #3234; NewWorktreeModal agent selection covered by #3238. Continue with transport client context plus NewWorktreeModal open/reset, SSH, agent-detection, and setup-hook fetch Effects. | | Expo two-way audio hook | `mobile/packages/expo-two-way-audio/src/hooks.ts` | Inventory complete, manual review pending | Single Effect plus `useSyncExternalStore`; verify native subscription cleanup. | | Tests with hook mocks | `*.test.ts`, `*.test.tsx`, e2e comments | Inventory complete, manual review pending | Do not count comment-only mentions as app Effect sites; update tests beside behavior changes. | @@ -180,6 +180,7 @@ These are candidate batches, not final conclusions. Each item needs code inspect | PR CW | Mobile Accounts unused client ref | The Accounts route mirrored `client` into a ref in a passive Effect, but no code read that ref. | `mobile/app/h/[hostId]/accounts.tsx` covered by #3244 | Low | | PR CX | Mobile home shared-client ref mirror | The home route copied shared host clients into a focus-callback ref in a passive Effect, delaying focus refreshes by one commit. | `mobile/app/index.tsx` covered by #3247 | Medium | | PR CY | Mobile session terminal/tab ref mirrors | The mobile session route copied active tab, tab list, markdown doc, client, and connection snapshots into imperative refs in passive Effects after terminal input/session callbacks could already run. | `mobile/app/h/[hostId]/session/[worktreeId].tsx` covered by #3250 | High | +| PR CZ | Mobile tasks client ref mirror | The mobile Tasks route copied the shared client into a stale-request guard ref in a passive Effect, delaying guard freshness for async task loads. | `mobile/app/h/[hostId]/tasks.tsx` covered by #3253 | High | ## Merge Risk Scale @@ -288,6 +289,7 @@ These are candidate batches, not final conclusions. Each item needs code inspect | #3244 | `nwparker/react-perf-mobile-accounts-client-ref` | Mobile Accounts unused client ref mirror removed | Low | Merged | `pnpm exec oxlint mobile/app/h/[hostId]/accounts.tsx`; `pnpm run typecheck:web`; `git diff --check origin/main...HEAD`; `git diff --check`; AST Effect count 921 -> 920. | | #3247 | `nwparker/react-perf-mobile-home-client-ref` | Mobile home shared-client ref mirror moves out of an Effect | Medium | Open | `pnpm exec oxlint mobile/app/index.tsx`; `pnpm run typecheck:web`; `git diff --check origin/main...HEAD`; `git diff --check`; AST Effect count 920 -> 919. | | #3250 | `nwparker/react-perf-mobile-session-refs` | Mobile session terminal/tab ref mirrors move out of Effects | High | Open | `pnpm exec oxlint mobile/app/h/[hostId]/session/[worktreeId].tsx`; `pnpm run typecheck:web`; `git diff --check origin/main...HEAD`; `git diff --check`; AST Effect count 920 -> 915. Mobile Vitest blocked by missing `expo/tsconfig.base` in this checkout. | +| #3253 | `nwparker/react-perf-mobile-tasks-client-ref` | Mobile Tasks client ref mirror moves out of an Effect | High | Open | `pnpm exec oxlint mobile/app/h/[hostId]/tasks.tsx`; `pnpm run typecheck:web`; `git diff --check origin/main...HEAD`; `git diff --check`; AST Effect count 920 -> 919. | ## Reproduction Commands