One of the interesting projects that I came across recently was NodeGUI.
NodeGUI describes itself as an enabler to build cross-platform desktop applications using Javascript (and React) and Qt5.
Using NodeGUI, you should be able to -
- Create desktop applications that run on Windows, Linux or MacOS
- Styling with CSS
- Support for desktop events that are listenable from Qt
- Lower CPU/memory footprint
Of course, the comparison with Electron is evident.
Electron also enables you to create desktop applications using Javascript. It started producing some heavy applications, but has improved leaps and bounds to produce really good applications.
However, Electron still runs within Chromium. Electron applications provide a good user experience, but they are still constrained to run on a heavier base and (theoritically) be constrained on what they could do on the desktop.
Qt on the other hand can go one level down towards the metal. Qt has been there for ever, is popular on Linux-based systems - and more importantly, it has been known to be fast and having an ‘almost’ native-like experience.
Qt applications can also be compiled, which is a huge thing for IP, so can nw.js but I digress), and they have also been used in devices like TVs and embedded devices, mobile devices, and more.
At a high level, React (or Javascript) + Qt5 seems a really good combination. It remains to be seen whether organizations and product vendors find it a compelling enough case to invest in Qt as a product.
- There is a commercial company behind Qt (which is excellent, but may not get backing as easily as a completely open source product)
- The open source version of Qt is LGPL licensed - not quite comforting to the average industry guy
My bigger bet will be on Flutter as of today (or a combination of Flutter and Blazor :)).
I am super hopeful about a bright future for “native” applications on desktop using platforms that combine the ease of web development + power of desktop. At the same time I am not too sure about whether anyone other than niche application developers care too much about such innovations. As we see more and more of PWAs and web assembly, I would rather build an application that runs across web and all devices rather than just all desktop platforms.