fix: dark native chrome — no white flash on resize or first paint

Live-resize frame lag: the native window surface resizes before the
compositor has a frame at the new size; the gap showed Electron's
default WHITE window background — glaring on a dark app, at the edges
on shrink. The standard treatment, all three:

- BrowserWindow backgroundColor '#141414' fills the lag with the app bg
- show: false + ready-to-show — the window appears only after the page
  has rendered (kills the first-paint white window)
- color-scheme: dark — native widgets and scrollbars render dark

Owner resize-verified in the Electron dev shell.
This commit is contained in:
amosblomqvist
2026-09-17 18:43:35 +03:00
parent 9863674a76
commit a20e1f1fb5
2 changed files with 11 additions and 0 deletions
+10
View File
@@ -200,6 +200,15 @@ function createWindow(url) {
sandbox: true,
nodeIntegration: false,
},
// Live-resize + first-paint flash (owner, 2026-09-17): during a resize
// the native window surface changes size before Chromium's compositor
// has a frame at the new size, and the gap shows the window's NATIVE
// background — Electron's default is white, glaring on a dark app.
// The app background (#141414) fills the lag instead. `show: false` +
// ready-to-show is the same treatment for first paint: the window
// appears only once the page has actually rendered.
backgroundColor: "#141414",
show: false,
});
const allowedOrigin = () => new URL(url).origin;
@@ -226,6 +235,7 @@ function createWindow(url) {
});
void win.loadURL(url);
win.once("ready-to-show", () => win.show());
return win;
}