Browsers are surprisingly efficient renderers. So I can use a lean AOT language for most of the heavy lifting and then just use the webview for the final painting to screen.
The final runtime isn’t actually any more CPU nor memory hungry than when I was having to store images and font atlases in GPU memory and writing to the frame buffer directly via SDL. And as a benefit of the switch, I get a richer library of widgets to draw, far fewer rendering glitches due to edge cases in fonts, graphics drivers, and a plethora of other hard-to-debug problems.
The original plan was to support both WebKit and SDL frontends (like how libghostty works) but the webview was such an accelerant on productivity and with so few drawbacks that i quickly dropped SDL support and went all in with webviews.
1. It’s not cross platform.
2. Non-native but mature cross platform toolkits (eg Qt) have spotty support in many of the more recent and popular languages like Rust and Go.
3. The proliferation of the web has lead to application design becoming part of the branding. Which often works against using the sterile native widgets
4. Even before that happened, many companies still reimplemented their own spin on native widgets. Including the OS vendors themselves (Apple and Microsoft are notoriously bad at filling their own style guidelines).
5. A surprising amount of times, native widgets simple don’t exist for precise problem you need solving. For IDE example, you’d have to build your own text area anyway. Likewise for terminal emulation.
6. Web developers are cheaper
I honestly do think VB6 was peak GUI development for desktop systems. But times have moved on.