Reduce SSH password prompt rerenders#2731
Draft
cursor[bot] wants to merge 2 commits into
Draft
Conversation
Co-authored-by: Julius Marminge <juliusmarminge@users.noreply.github.com>
Co-authored-by: Julius Marminge <juliusmarminge@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
SshPasswordPromptDialogso the outer component only owns the external SSH prompt queue.docs/performance/react-scan/ssh-password-prompt-before.webmdocs/performance/react-scan/ssh-password-prompt-after.webmWhy
react-doctorflagged this component for multiple state updates in an effect and effect-as-event style logic. The previous prompt change path caused an extra post-render state synchronization pass for values that can be owned by the prompt instance or derived during render. Keying the prompt request dialog keeps prompt state local to the active request and removes the cascading reset/expired-message effects.UI Changes
No intended visual behavior change. The before/after React Scan recordings above capture the same mocked SSH password prompt flow with React Scan enabled.
Checklist
Verification:
npx -y react-doctor@latest . --verbose --offline --json(baseline scan)npx -y react-doctor@latest . --diff main --verbose --offline --json(fixed state/effect warnings; remaining warnings are unrelated form progressive-enhancement/button-label diagnostics)docs/performance/react-scan/bun fmtbun lintbun typecheckNote
Reduce rerenders in
SshPasswordPromptDialogby splitting into focused subcomponentsuseSshPasswordPromptQueue,useSshPasswordPromptFocus,useSshPasswordPromptNow) to isolate state updates.SshPasswordPromptDialog(queue orchestration) andSshPasswordPromptRequestDialog(single prompt lifecycle), keyed byrequestIdso React remounts cleanly per request.useEffectthat setresponseErroron expiry with a deriveddisplayedErrorvalue, removing one source of unnecessary rerenders.SshPasswordPromptDialognow returnsnullwhen there is no pending prompt instead of rendering an empty dialog tree.Macroscope summarized d3fa2a2.