Context
I have spent some hours playing with Electron and I have observed that it consistently takes more than 2.5 seconds to draw a trivial html file to the screen. The timeline is roughly as follows:
- 60 ms: app
ready
event is triggered; we create a window usingnew BrowserWindow()
- 170 ms: a blank window appears on the screen
- 2800 ms: the window shows the specified HTML
I have set up a repository with my code, which is derived from Electron's quick start docs.
Regarding my machine, I am running Windows 10 on a ThinkPad T460 from 2016 with a SSD and enough memory.
Questions
Shipping an application that shows a blank window for so long upon startup is a no-go for me. I assume most people developing Electron apps think similarly. Hence my first question: am I doing something wrong? Or is this the expected loading time for a trivial Electron app?
Assuming this is normal behavior, what is the common way to deal with this problem? Some ideas come to mind:
- Asking Electron to show a splash screen: unless there is specific built-in functionality for this, it seems like a no-go, since the splash screen itself would be shown only after 2.5 seconds.
- Hide the app's window until it is rendered (using the
ready-to-show
event), so no blank window is shown. This isn't ideal, since it means that the user doesn't get any feedback whatsoever that the application is actually loading. - Create a wrapper application (using native code) that displays a splash screen, launches electron and hides itself once the electron window is shown. Kind of defeats the purpose of using Electron in the first place, because you end up writing native code and adding accidental complexity.
- Setting the background color of the window to something resembling your app, as suggested by the docs. This just doesn't look very well.
Given this must be a common problem, I hope standard solutions have been found by the community. I'd be glad if someone can point me in the right direction.