From 67334f1fd6a1ac5a4e0add83b7f9f5f753174069 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Wed, 25 Mar 2026 23:48:57 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20always-mounted=20modal=20=E2=80=94=20GPU?= =?UTF-8?q?=20keeps=20backdrop-filter=20composited,=20no=20blur=20delay?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settings/unified/UnifiedSettingsModal.tsx | 198 +++++++++--------- 1 file changed, 97 insertions(+), 101 deletions(-) diff --git a/components/settings/unified/UnifiedSettingsModal.tsx b/components/settings/unified/UnifiedSettingsModal.tsx index ee66f6d..891a78f 100644 --- a/components/settings/unified/UnifiedSettingsModal.tsx +++ b/components/settings/unified/UnifiedSettingsModal.tsx @@ -373,108 +373,104 @@ export default function UnifiedSettingsModal() { }, [guardedAction, closeSettings]) return ( - - {isOpen && ( - <> - {/* Backdrop — solid scrim, no blur (modal handles its own glass) */} - + <> + {/* Backdrop — always mounted, visibility toggled via CSS */} +
- {/* Modal */} - -
e.stopPropagation()} - > - {/* Header */} -
-
-

Settings

- -
- - {/* Context Switcher */} - s.id === activeSiteId)?.domain ?? null} - /> - - {/* Tabs */} -
- -
-
- - {/* Content */} -
- - - - - -
- - {/* Save bar — fixed at modal bottom, outside scroll */} - - {isDirtyVisible && ( - -
- - {hasPendingAction ? 'Save or discard to continue' : 'Unsaved changes'} - -
- {hasPendingAction && ( - - )} - -
-
-
- )} -
+ {/* Modal — always mounted, blur always composited by GPU */} +
+
e.stopPropagation()} + > + {/* Header */} +
+
+

Settings

+
- - - )} - + + {/* Context Switcher */} + s.id === activeSiteId)?.domain ?? null} + /> + + {/* Tabs */} +
+ +
+
+ + {/* Content — only render tab content when open to avoid unnecessary SWR calls */} +
+ {isOpen && ( + + + + + + )} +
+ + {/* Save bar */} + + {isDirtyVisible && ( + +
+ + {hasPendingAction ? 'Save or discard to continue' : 'Unsaved changes'} + +
+ {hasPendingAction && ( + + )} + +
+
+
+ )} +
+
+
+ ) }