From ba44c8a5f46804eae0a38e534e20461ad67fef03 Mon Sep 17 00:00:00 2001
From: Neil <4138956+nwparker@users.noreply.github.com>
Date: Thu, 3 Sep 2026 20:42:26 -0700
Subject: [PATCH] fix(renderer): latch the lazy dialog mounts in state instead
of during render
React Doctor's ref-mutated-during-render rule failed static analysis on both sticky-mount latches. Use the useState mount-flag idiom already in NewWorkspaceComposerModal (addProjectMounted), set from the open handler.
---
.../src/components/NewWorkspaceComposerCard.tsx | 8 +++-----
.../components/sidebar/SidebarSettingsHelpMenu.tsx | 14 ++++++++------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/renderer/src/components/NewWorkspaceComposerCard.tsx b/src/renderer/src/components/NewWorkspaceComposerCard.tsx
index 29183da58f0..d17bb8ba56d 100644
--- a/src/renderer/src/components/NewWorkspaceComposerCard.tsx
+++ b/src/renderer/src/components/NewWorkspaceComposerCard.tsx
@@ -100,10 +100,7 @@ export default function NewWorkspaceComposerCard(
)
// Why sticky: the dialog animates itself closed off its own `option` prop, so unmounting it
// when the option clears would cut that animation short.
- const setLocationDialogRequested = React.useRef(false)
- if (setLocationOption !== null) {
- setLocationDialogRequested.current = true
- }
+ const [setLocationDialogMounted, setSetLocationDialogMounted] = React.useState(false)
const selectedRepo = eligibleRepos.find((candidate) => candidate.id === repoId)
const selectedRepoName = selectedRepo?.displayName ?? selectedRepo?.path ?? 'This project'
@@ -208,6 +205,7 @@ export default function NewWorkspaceComposerCard(
}, [onAddProjectOverride, openModal])
const handleSetLocation = React.useCallback(
(option: NeedsProjectHostOption): void => {
+ setSetLocationDialogMounted(true)
setSetLocationOption(option)
onNestedDialogOpenChange?.(true)
},
@@ -350,7 +348,7 @@ export default function NewWorkspaceComposerCard(
submitShortcutModifierLabel={getScreenSubmitModifierLabel()}
/>
- {setLocationDialogRequested.current ? (
+ {setLocationDialogMounted ? (
{
+ setFeedbackDialogMounted(true)
+ setFeedbackOpen(true)
+ }
+
const handleShowOnboarding = (): void => {
const now = Date.now()
if (now - lastShowOnboardingAtRef.current < 500) {
@@ -251,7 +253,7 @@ export function SidebarSettingsHelpMenu(): React.JSX.Element {
)}
- setFeedbackOpen(true)}>
+
{translate(
'auto.components.sidebar.SidebarSettingsHelpMenu.4cf5b868d7',
@@ -352,7 +354,7 @@ export function SidebarSettingsHelpMenu(): React.JSX.Element {
- {feedbackDialogRequested.current ? (
+ {feedbackDialogMounted ? (