Skip to content

Event ready-to-show not triggering/inconsistent trigger on wayland #48859

Open

Description

@Sytten

Preflight Checklist

Electron Version

38.6.0

What operating system(s) are you using?

Ubuntu

Operating System Version

Ubuntu 24.04

What arch are you using?

x64

Last Known Working Electron version

37.9.0

Does the issue also appear in Chromium / Google Chrome?

I don't know how to test

Expected Behavior

The event ready-to-show should trigger when the window is created with show: false and the window is ready to be shown no matter if running on x11 or wayland.

Actual Behavior

Starting from Electron 38, the event ready-to-show is either not triggering or is inconsistent on wayland.
This worked fine on Electon 37 with wayland so I imagine it has something to do with Chromium ozone changes.

Testcase Gist URL

https://gist.github.com/Sytten/75ace5d29b59d37e3f6ae382d1c89f3e

Additional Information

If you run this gist on 37 you will see the window open, but all versions more recent will not show the window on wayland.

Activity

  1. added theissue type on Nov 9, 2025
  2. added
    has-repro-gistIssue can be reproduced with code at https://gist.github.com/
    on Nov 9, 2025
  3. Sytten commented on Nov 9, 2025

    @Sytten
    Author

    If you cannot get to "fail" with the gist, you can try replacing the index.html load by a .loadURL("https://google.com").

  4. nikwen commented on Nov 10, 2025

    @nikwen
    Member

    Thanks for opening this issue and for the repro! CC @mitchchn.

  5. moved this to 👀 Unsorted Items in 39-x-yon Nov 10, 2025
  6. mitchchn commented on Nov 11, 2025

    @mitchchn
    Member

    @nikwen I have also experienced windows not firing ready-to-show and not appearing when the GPU is disabled, but only sporadically. I believe these are related to GPU timing/synchronization issues in Chromium and am filing the ones that I can repro there.

    @Sytten do you use an NVIDIA GPU by any chance?

  7. Sytten commented on Nov 12, 2025

    @Sytten
    Author

    This was tested in VMware fusion on an M3 MBP Pro with 3d acceleration enabled (so no?). We had a lot of users report the bug to us on many setups and I cant imagine all of them use nvidia. But I saw GPU related error logs so that might be related.

  8. mitchchn commented on Nov 12, 2025

    @mitchchn
    Member

    @Sytten yes, I’ve also reproed the lack of “ready-to-show” and similar issues in hardware accelerated VMs on a Mac (Parallels) as well as on bare metal with Nvidia GPUs. (But not with AMD or Intel which is why I was curious.)

    I believe these bugs are likely related to upstream GPU sync issues in Chromium. The issues did seem to be more common in Electron 38 (and chromium 140) than more recent versions of each, and on 40.x betas I cannot repro them in my VM anymore. Not saying the problem is solved but do you see any difference with the newest pre-release versions?

  9. 13 remaining items

  10. ravicious commented on May 5, 2026

    @ravicious

    bump

  11. zach20scott commented on Jul 23, 2026

    @zach20scott

    bump

  12. qeelei commented on Aug 29, 2026

    @qeelei

    Still reproducible on Electron 42.0.1. Adding a data point since this seems GPU-dependent:

    • Electron version: 42.0.1
    • OS: Ubuntu 26.04 LTS, GNOME
    • Display server: Wayland — native Wayland, not XWayland (verified via xlsclients: no entry for the app)
    • Arch: x86_64
    • GPU: NVIDIA GeForce RTX 3060 Ti (GA104) — this matches the NVIDIA correlation mentioned above; no AMD/Intel machine available to compare

    Repro: BrowserWindow created with show: false + once('ready-to-show', () => win.show()). ready-to-show never fires on this setup — the main process stays alive, the renderer finishes loading, and did-finish-load fires (verified via logging), but the window stays hidden forever.

    User-visible symptom: clicking the menu item appears to do nothing on the first click; the second click works, because the window was already created and the code path falls back to calling window.show() directly.

    Workaround that fixed it for us: reveal the window on did-finish-load if !win.isVisible() (Linux-only, first-wins), same approach as FreeTubeApp/FreeTube#8294. Happy to test any patch or pre-release build that addresses this.

  13. jnsgruk commented on Sep 1, 2026

    @jnsgruk

    This also just showed up in Signal Desktop on Linux - see snapcrafters/signal-desktop#474

  14. added a commit that references this issue on Sep 1, 2026
  15. ell1e commented on Sep 1, 2026

    @ell1e

    No messenger needs GPUs, and most messengers use electron now. I always disable GPU access through flatpak since it's way more of a security risk than of any use, even on a phone (since even those devices are fast enough). It also seems like some people hit this even with GPUs.

    Anyway, I wanted to point this out since I was hoping it will motivate more interest in a fix for the non-GPU case.

  16. Bitsonwheels commented on Oct 22, 2026

    @Bitsonwheels

    Adding a data point from a first-run hang we reproduced on RHEL 10.2 (GNOME Wayland session, kernel 6.12, AppImage app — Electron 44.4.5). The GPU is fully software-rendered in this setup (gpu_compositing: disabled_software, 2d_canvas: disabled_software), so this is not a hardware acceleration path.

    Symptom: on 4/4 fresh first starts, a first-run picker window (created with show:false and revealed only on ready-to-show) never got mapped — the window never appears, the app waits indefinitely on a promise resolved only by that window's UI, and nothing ever listens on the app's port. The Electron processes and children stay alive the whole time. Setting the mode directly in the app's config (bypassing the picker) boots normally on the same session, which isolates the failure to the window reveal rather than the boot logic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions