I like what Syncthing are doing: They just pop open a web browser window for the UI. It's like making an Electron app, except without having to ship an entire browser with your app. I have no idea why it's not more common.
Because that way you as a dev have zero control over the browser used, which can cause a variety of issues ( e.g. IE or Safari or an obsolete version of X being used, a browser extension causing problems) and an "app" has some advantages ( can run in background, can have toolbar icon, can be launched on startup, etc.)
You can launch an app on startup regardless of what GUI toolkit it's using, or whether it's using one at all. Are you saying that you can only run a program at startup if it's using Electron?
> can have toolbar icon,
I think there's a misunderstanding here. I was talking about using the browser for the GUI of your app via an embedded HTTP-server, like Syncthing does; not replacing your entire program with a HTML-document with some JavaScript, which would clearly have some limitations.
> you as a dev have zero control over the browser used,
Well, that's also not true. You can check that the browser uses a certain user agent string, or you can add a specific version of a specific browser as a package dependency.
This is what I do for my home-grown apps. I write as much as I can in JS, and then provide a localhost API to access native operations like notifications or file management. I have one always-on background server that lets me execute arbitrary SQL on one SQLite file and use that as a shared database between all of my small apps and it works great.
Yeah if it absolutely has to be web-driven, I prefer to use my own browser and just have it as a pinned tab in Firefox. That way I can leverage its privacy protection too.