The developer experience of web technologies is after all this time still far worse than all the desktop libs I've tried. It is even worse than Swing (for those who don't know: That's Javas GUI technology. From the 90s). Add to that the horrible RAM usage, the general jankiness and ... thanks, but no thanks.
> It is even worse than Swing (for those who don't know: That's Javas GUI technology. From the 90s).
As someone who loved Swing and used to hate JavaScript, that's really nonsense if you actually want to be a UI developer (and not just some side afterthought).
State management and the custom capabilities when you need them are amazing. I wasted a lot of my time writing tons of Swing code. Sorry, but the modern front end experience is much more enjoyable and productive. If you want "native widgets" I get the complaint, but most platforms seem to be less interested in consistent experiences these days.
> State management and the custom capabilities when you need them are amazing
JS devs just rediscovered MVC with some added immutability and that’s all. Hardly more productive. Also, I don’t see your point on custom capabilities - please add a slight modification to the date picker widget. Oh, you have to reimplement the whole thing with some insane number of divs, while you can trivially override certain parts of it in most desktop libs.
Dependency management is simple for Swing. In can mostly be assumed that it is available and works. How many dependencies will an Electron /Webstack based app have?
I really like JetBrains IDEs and I think they are based on Swing.
Although I haven't used it for more than a decade, I still have some fondness for Java. I like Workflowy but am not crazy about it being in the browser. I contemplated writing my own outliner and Java + Swing is one combination I'm thinking about.
Compared to WinUI, I wouldn't exactly call web technologies' developer experience pleasant.
This was pre WinUI, but a while back I worked at a shop that simultaneously maintained Web-based and WPF versions of an app. The Web version required 3 dedicated developers to maintain. The WPF version needed about half of one person's time, and had more features.
I would say that the main thing favoring tools like Electron is entry costs. There are lots and lots of people who know who to do front-end Web development, and you can do a good job of supporting all platforms using free tools. Even if you grant me for the sake of argument that native GUIs cost less in the long run, there aren't a whole lot of people who have experience doing them these days, even fewer who have experience on more than one platform. Going that route also requires you to shell out for Macs and probably also Visual Studio.
You wouldn't ask the question if you had developed both GUI apps on MS stack with VS and web apps: the MS dev experience is very good, while the web one is meh at best. C# vs JS, XAML vs HTML+CSS (debatable), desktop application model vs web one, VS vs whatever else, there is a lot of strong arguments in favor of the MS stack in that case.
Microsoft is trying to port some of this magic with Blazor, with is quite liked from what I read here and there.
It is C# vs Typescript. Modern JavaScript is a very good language, and when enhanced with TypeScript's static types, it is every bit as good as C#.
XAML and MVVM is all about two-way data binding. JS frameworks copied it at first. But now it is widely recognized that 2-way data binding is a bad idea.