From 7d03040642e104afaeed9adae0208d90795c0c51 Mon Sep 17 00:00:00 2001 From: aras Date: Sun, 15 Mar 2026 18:06:10 +0300 Subject: [PATCH] fix(windows): prevent window flash on startup by deferring show until ready --- electron/windows.ts | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/electron/windows.ts b/electron/windows.ts index d2f7466d..232571d0 100644 --- a/electron/windows.ts +++ b/electron/windows.ts @@ -49,6 +49,7 @@ export function createHudOverlayWindow(): BrowserWindow { alwaysOnTop: true, skipTaskbar: true, hasShadow: false, + show: false, webPreferences: { preload: path.join(__dirname, 'preload.mjs'), nodeIntegration: false, @@ -60,6 +61,11 @@ export function createHudOverlayWindow(): BrowserWindow { win.webContents.on('did-finish-load', () => { win?.webContents.send('main-process-message', (new Date).toLocaleString()) + setTimeout(() => { + if (!win.isDestroyed()) { + win.show() + } + }, 100) }) hudOverlayWindow = win; @@ -102,6 +108,7 @@ export function createEditorWindow(): BrowserWindow { alwaysOnTop: false, skipTaskbar: false, title: 'Recordly', + show: false, backgroundColor: '#000000', webPreferences: { preload: path.join(__dirname, 'preload.mjs'), @@ -112,8 +119,10 @@ export function createEditorWindow(): BrowserWindow { }, }) - // Maximize the window by default - win.maximize(); + win.once('ready-to-show', () => { + win.show() + win.maximize() + }) win.webContents.on('did-finish-load', () => { win?.webContents.send('main-process-message', (new Date).toLocaleString()) @@ -144,6 +153,7 @@ export function createSourceSelectorWindow(): BrowserWindow { resizable: false, alwaysOnTop: true, transparent: true, + show: false, ...(process.platform !== 'darwin' && { icon: WINDOW_ICON_PATH, }), @@ -155,6 +165,14 @@ export function createSourceSelectorWindow(): BrowserWindow { }, }) + win.webContents.on('did-finish-load', () => { + setTimeout(() => { + if (!win.isDestroyed()) { + win.show() + } + }, 100) + }) + if (VITE_DEV_SERVER_URL) { win.loadURL(VITE_DEV_SERVER_URL + '?windowType=source-selector') } else {