Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Best stack for cross-platform desktop app?
15 points by remolacha 30 days ago | hide | past | favorite | 26 comments
What's the best tech stack for writing a performant, cross-platform desktop app in 2021?

I'd say Qt.


As a rookie SWdev before 2010 I wanted to learn something with which I could target most of the desktop/mobile platforms. I did a lot of Qt&C++ back then; now it's even more dev friendly with Qt Quick and a ton of language bindings.

Then I forgot about all the desktop stuff and went on using electron based bloatware. Only to rediscover the Telegram desktop app which is crazy responsive and featureful. I wish more apps would be desktop-native.

Despite the hate that it gets, Electron is still the best imo. Every other Electron-lite solution I've tried all end up with at least one key but obscure feature removed and you either end up rewriting to Electron or throw together some jank or abandoned 3rd party package.

Electron is bloated AF but it's the complete package that gets the job done from start to finish

Okay, so PWAs, then?

Microsoft is pushing progressive web apps, now.

I say we lean into it while we can. Might be our only shot.

Microsoft is building better support for PWAs into Windows. Linux is still a mixed bag, as it will depend on your DE / toolkit (lest all users be expected to install a Chrome variant). Apple will probably continue to lag behind since they will cut into app store revenue.

I wish PWAs were better supported everywhere, but we're not there yet and one of the holdouts could be quite the doozy to topple.

And that's without taking into consideration the things are are possible right now with Electron that still need broader support WRT web standards (serial, bluetooth, filesystem access).

Flutter is an option as well. https://flutter.dev

With the release of Flutter 2.0, desktop support is now fully available. Windows, Linux, and MacOS. This on top of the existing iOS and Android support. Web was also officially released.

I just finished a 300 page book on Dart which took all night to read. I've been hunting for an alternative to RN and heard about flutter and it definitely is as close as you're going to get. Overall, Dart gets the job done with the modern features you would expect and Flutter reminds me of SwiftUI. So I definitely have to second Flutter, but I guess the proof is in the pudding.

Is it still resource hungry, like making an app in Unity?

hmm, it doesn't look production ready yet.

Try some options from dotnet world



Take a very serious look at:


They have an open source version but be careful of the licensing. Basically if you start it on the open source version you need to keep the app open source (if I read the license right). But it's an absolutely wonderful prototyping environment

I'd go with C# + Uno (https://platform.uno/).

Disclaimer: I haven't used Uno before, but from their presentations and what i've seen online, they are top-notch. I plan to test them in the mid-term future.

WxWidgets[0] and Ultimate++[1] are the two. Poco[2] libs are available as well. And for Web frontend there is Wt[3]

[0] https://www.wxwidgets.org

[1] https://www.ultimatepp.org

[2] https://pocoproject.org

[3] https://www.webtoolkit.eu/wt

I'm following the Tauri Project https://github.com/tauri-apps/tauri

I’ve used Tauri with Svelte and they’re a dream team!! I hope more companies discover and support the combo to liberate us from the current React + Electron Appocalypse

I wanted to know the same as well. Our requirement is for building cross platform apps for windows OS, Mac OS and code/components that works on tablets + mobile.

Isn't react-native an option ? https://microsoft.github.io/react-native-windows/

Does anyone have experience on the same ? Hows the support for hardware interaction like access to printers, bluetooth apis?

I am using NWJS to build cross platform apps using web technologies. I used that because of it is simple, easy and can protect source code.


They are all compromised in some way or another. I'd start by making sure you really need to be cross platform because if you don't then why add all the costs.

I don't know about the best stack... but you could actually do this in Unity3D if you wanted to. Good for a quick proof-of-concept if you already know it.

Qt is pretty reasonable.

Every qt app I’ve ever used is ugly, slow to add features, and has lackluster UX. What’s a good one?

Off the top of my head: VLC, Wireshark, MuseScore.

None of the properties you mention are inherent to Qt... getting them right takes a lot of work regardless of which GUI toolkit you use.

If thats the sort of thing you're looking for, the Spotify desktop app also uses Qt on Linux (they use native toolkits on Win/Mac).

Isn't Spotify Desktop an Electron app?

Hm, I may have been wrong. [1] suggest that it was a Qt app on Linux at one point, but this source is old, and more recent ones suggest that they now use Electron. I don't actually use Spotify, so I'm not sure - perhaps not the best example.

The point I wanted to make was that you can use Qt to make "sexy" modern feeling apps, if that's a priority for you, it just takes work.

Personally, I think something like VLC is a better example of a high quality app, even if the UI isn't flashy, but I guess people today want shiny stuff more than good reliable stuff.

[1] https://blogs.windows.com/devices/2011/03/15/10-qt-use-cases...

Honestly, the best applications tend to be native applications. That’s my experience at least.

WxWidgets uses a different approach to Qt. Qt emulates, where as Wx delegates :) i.e. Qt tries to emulate the native look-and-feel, where as Wx uses the native APIs of the platform for rendering GUI. So if you want true native the go with WxWidgets. This is one reason why Qt is available on mobile but Wx has struggled.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact