DEV Community

If you had to create a desktop app what tech stack would you use?

Periklis Gkolias on April 20, 2020

My first choice would be Electron but I know it is a bit bloated (haven't developed on it).

Ideally, it should be in JS, Python, Go or Rust.

I prefer staying away from "native tech" as I focus on cross-platform compatibility as much as possible.

Collapse
 
beznet profile image
Bennett Dungan • Edited

Yeah since Im only familiar web, I would have to opt for Electron as well. Seems like the easiest way to translate between the two platforms. Then again, Im sure it depends on what you're trying to build.

Collapse
 
perigk profile image
Periklis Gkolias

It will not have performance heavy requirements, still I never liked the sluggish feel of electron apps

Collapse
 
jwp profile image
John Peters • Edited

Visual Studio Code is Electron and fast. Used by millions every day.

The Top 20 Electron Apps

Thread Thread
 
Sloan, the sloth mascot
Comment deleted
 
perigk profile image
Periklis Gkolias

Sure, I don't argue about that. Slack is Electron too and afaik no one is happy with the desktop app.

My point is that non electron apps seem to have better performance metrics compared to their electron competitors, usually observable by eye.

For example visual studio code is nice and I use it, though you can tell sublime is faster, without the need to use any tools.

Collapse
 
m_nevin profile image
Marc Nevin

To echo what a lot of others are saying here, Electron is probably the way to go!

It can definitely be a resource hog - but its normally "good enough" for most applications. Not to mention it's probably the most accessible option for most developers; the skills needed are really democratised, so more help/support available and if you're looking to open-source it has a higher likely-hood of contributors etc.

Also personally, making progress with an app is wayyyy more satisfying than having to learn a whole load of new toolsets first!

When it comes to other options, I've done some work in .Net Core cross-platform and wasn't a fan but its an option that I'm sure someone here will fight its corner, think I would if I wasn't tainted from my WPF for Vista (Honestly, terrible) project a few years ago.

For other options past those two, all I can think is to hack up the famous Bjarne Stroustrup quote; there's two classes of tools - the ones people complain about, and the ones no one uses.

Let us know what you decide on, good luck!

Collapse
 
perigk profile image
Periklis Gkolias

Thanks Marc, looks like no one here likes .net core 😁 (I haven't tried it to be honest)

Collapse
 
m_nevin profile image
Marc Nevin

Awk.. its fine everyone loves to beat on everything MS-related,

Also if performance is the deciding factor it's going to be hard to avoid native!

Collapse
 
janhohner profile image
Jan Hohner

I'll probably get crucified for this but I'd probably use Java. It has a proved track record and it's cross platform. I'd avoid Electron because a lot of Electron apps have performance issues. Another possibility would be building a Progressive Web App.

If I'd have to choose a technology from your list I'd probably use Rust. Fast, safe and there's lots of buzz around it.

Collapse
 
perigk profile image
Periklis Gkolias

Hahahah yeah, if there is one thing you cannot call me is Java admirer.

Lots of rust suggestions around. Even though it was last on my list looks like I will have a serious look on the possibility. 🙂

Collapse
 
janhohner profile image
Jan Hohner

I've played around with Rust a little because my brother loves it and even though I hate low level programming languages like C with a passion, I thought it really intuitive. So yeah, give it a go :)

Collapse
 
nothingismagick profile image
Daniel Thompson-Yvetot • Edited

We're working on Tauri - which is basically a Rust core that creates a webview on Mac, Linux and Windows. You can use pretty much any frontend framework to create the interface, or even just write vanilla. You can sideload other binaries and even call out to system-available tools if that's your jam.

Here is the website: tauri.studio
Here is an app built on it: guijs.dev

Collapse
 
perigk profile image
Periklis Gkolias

Wow that's a very interesting project. I will totally check it out

Collapse
 
bovermyer profile image
Ben Overmyer

I primarily develop in Go these days. For a desktop program with a UI, though, I'd reach for Rust first.

Electron can die in a fire for all I care, and take its ridiculous memory usage with it. Even VS Code is slow compared to the speed of true native applications.

Collapse
 
jwp profile image
John Peters

Electron for sure.

Microsoft is trying to revive cross platform desktop apps with .Net Core. Problem is, they abandoned WPF 15 years ago. Wpf can't even reliably contain a browser! Don't even consider Winforms.

Java Swing is in worse shape than WPF.

Browser based apps are only way to fly today.

Collapse
 
torepett profile image
Tore Pettersen • Edited

I would go for web-view or ideally, it's Rust bindings since I am a Rust developer.

Web-view is similar to Electron, in the way that you can use html, css and js to write your apps, but a lot less resource demanding. So I am wondering why not more people are using it.

Also, I would use Elm instead of JavaScript so I don't have to deal with run-time errors. And there is even an example for that with the Rust bindings of web-view.

Collapse
 
perigk profile image
Periklis Gkolias

Another fella in this thread had a close suggestion. I will have a look for sure. 😁

Collapse
 
nebrelbug profile image
Ben Gubler

I've been interested in Proton (github.com/kusti8/proton-native) for a while -- it's basically like React Native for desktop.

Here's a blog post that uses Rust and Electron ;): keminglabs.com/blog/building-a-fas...

Collapse
 
perigk profile image
Periklis Gkolias

Very interesting. Not familiar with react native, just reactjs, I will give it a try though

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt • Edited

Depending on the audience, but if you mean offline web apps, the best choice would probably be either Docker or CLI web server.

But if I had to create for non-tech people, it will have to be fully bundled, like Electron; but I might probably go with JavaFx. But when we need HTML/JS/CSS, JavaFx isn't performant anymore...

Collapse
 
fluffynuts profile image
Davyd McColl

I've worked with PyQt before -- that was quite positive, but a long time ago. I would hope that bundling for deployment (ie making an installer that just works at the client without needing a local Python or PyQt install) might be easier now.

If you're looking at Electron but concerned about bloat, check out Muon

Collapse
 
avalander profile image
Avalander

I would use the Rust bindings for web-view, implement anything that requires interacting with the OS in Rust and the UI with the regular web stack.

Collapse
 
andypotts profile image
Andy Potts

I've built a couple of apps using Electron a while ago and it would be my choice. If you're concerned about the size it looks like there's some lightweight alternatives

Collapse
 
perigk profile image
Periklis Gkolias

Yeah, I would like some more decent performance comparing to VS code or slack :-/

Collapse
 
mendoza profile image
David Mendoza (He/Him)

For python you could take a look at
Tkinter or pyqt

Collapse
 
myblindbird profile image
My blind bird

I want to integrate the project given on My Blind Bird on my desktop app. Can someone help me with this?

Collapse
 
perigk profile image
Periklis Gkolias

Why python AND tkinter? Isn't pyqt enough in such case? (Sorry if this a dumb question, I am not very familiar with the desktop development ecosystem)

Collapse
 
kayis profile image
K

outrunlabs.com/revery/

Revery looks promising.

Collapse
 
lehmannsystems profile image
Mike

Electron no doubt! It's really solid.