loading...

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

perigk profile image Periklis Gkolias ・1 min read

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.

Discussion

pic
Editor guide
 

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.

 

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

 

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

The Top 20 Electron Apps

[deleted]

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.

 

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

 

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

 

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!

 

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

 

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!

 

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.

 

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. πŸ™‚

 

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 :)

 

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.

 

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.

 

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

 

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...

 

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

 

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...

 

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.

 

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

 

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.

 

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

 

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

 

For python you could take a look at
Tkinter or pyqt

 

outrunlabs.com/revery/

Revery looks promising.

 

Electron no doubt! It's really solid.

 

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)