5 ms·
Ask HN: Best stack for building a desktop app?
should run across Mac/linux/windows.
What tech are you using guys?
- sandwichukulele 2y agowith no additional context when running on mac/linux/windows, I like boring technologies, doing everything within python running locally while rendering everything in the user's default web browser with basic HTML/js/css
- toddmorey 2y agoI guess most projects want more presence for their apps but this is a great solution compared to shipping an entire browser with electron.
- deleted 2y ago[deleted]
- mhd 2y agoFreePascal/Lazarus or Tcl/Tk. If more time is available, then a core of <favorite language> plus a view part in the native platform language and API.
- deleted 2y ago[deleted]
- AhtiK 2y agoDepending on the use case either Avalonia or Electron.
- bitwize 2y agoElectron. /thread Seriously, even John Carmack would probably use Electron because it provides the most value to customer per unit of effort input.
- skydhash 2y agoAnd the result is noticeable. Electron is becoming synonymous to shoddily built apps. Even though you can write buggier apps with native SDK, but the amount of works that been put into them elevates the final result. Not so much with Electron.
- drewcoo 2y ago> Electron is becoming synonymous to shoddily built apps Isn't that just because Electron makes it so easy to build cross-platform apps? That's a reason to use it!
- bitwize 2y agoYeah, just like Unity is becoming synonymous with shitty asset-flip games -- because it puts making games within reach of the laziest and least competent among us. Electron has democratized desktop app development and put it within reach of everybody -- but having bad apps on it doesn't make it bad in itself. Remember, the most-used programmers' editor is also an Electron app!
- fidotron 2y agoJetBrains have their tweaks to the JRE available: https://github.com/JetBrains/JetBrainsRuntime https://github.com/JetBrains/JetBrainsRuntime The major problems begin when you want to leverage the GPU or multimedia components in which case you would want something else.
- kleiba 2y agoI've used wxwidgets in the past, both from C and from Python. It's appeal is in its simplicity.
- pid-1 2y agoIn general for a great experience on the desktop you want to use the native stack of each platform, so C# / Windows SDK in Windows, GTK in most Linux distros and whatever Mac officially recommends. You could use electron and build cross platform apps using web technologies, but I'm yet to use an electron based app that doesn't feel like crap.
- wenc 2y agoVS Code is electron and it has been optimized to the hilt. I have used it on Mac, Windows and Linux and the experience is uniformly great. It feels native on every platform (responsiveness is not as snappy as vim but it’s good enough and I’m getting a lot of extra features in return, like remote for instance) But it didn’t come for free. I can tell a lot of engineering hours were spent fixing little issues like different/conflicting keystroke mappings in all 3 platforms.
- cess11 2y agoPersonal projects, Racket with gui-easy. Close to frictionless GUI development, very nice language(-platform) to build with. Excellent metaprogramming. Professionally, Java and JavaFX. Decent multi-platform story, there's a config flag for tuning everything, and there's a library for pretty much anything anyone has ever had an issue with and when they don't fit as well as you'd like you just tear it up with reflection and fix.
- obdev 2y agoJava is indeed a great technology. JavaFX, however, seems to have many unfixed bugs, even though it's actively maintained. How do you overcome the obstacles when developing and deploying your JavaFX application[s], so it's working well for you?
- cess11 2y ago1 app 1 jar. I beat Maven until I get a JAR-file that boots outside the development repo. Usually this involves unhooking the module system. What kind of bugs are you encountering? I have some trouble with layouts being weird sometimes but it usually sorts itself out when I make them simpler.
- mherrmann 2y agoWhat are your requirements? Performance, development speed, native look and feel, ... Which languages are you familiar with? Do you have a preference with regards to the language?
- steffann 2y agoI have good experience with https://wails.io https://wails.io. It uses a Go backend and a JavaScript frontend with Go functions exposed to the JavaScript side, and events with senders and listeners on both sides. All without the enormous bloat of Electron. On the JavaScript side you can use whatever you like: plain JavaScript, react, vue, svelte, … whatever you’re familiar with. And it can cross compile to Windows, Mac and Linux, so all major platforms covered.
- obdev 2y agoHow is the Wails project being managed? Does it have a backing company or enough sponsors to ensure its future?
- yoav 2y agoI got fed up with electron a few months ago and making steady progress building Electrobun. You can think of it like Tauri but you just write typescript for the main and browser contexts. Under the hood it’s powered by bun and zig. https://github.com/blackboardsh/electrobun https://github.com/blackboardsh/electrobun Still a ways to go (I’m currently porting a large app from electron to electrobun and filling in the api as I go) but check back in a couple months. It’ll be (in my opinion) the best stack to build desktop apps.
- mike986 2y agoNot a full blown UI kit but lots of cross platform goodies (C++) https://www.cockos.com/wdl/ https://www.cockos.com/wdl/ https://github.com/justinfrankel/WDL https://github.com/justinfrankel/WDL WDL Virtual Window system: Allows the building of dynamic, complex UIs within OS hosted windows Included controls for text display, combo boxes, buttons, sliders, list boxes Supports full transparency, overlays, controls with shadows/highlights outside of their range Fully themeable (uses LICE for compositing)
- deleted 2y ago[deleted]
- codeptualize 2y agoTauri https://tauri.app/ https://tauri.app/
- nitai 2y ago100% Tauri. It’s totally awesome and fast.
- obdev 2y agoHow is the developer experience when building desktop apps using Tauri? Is there a lot of friction between the Rust core and the TypeScript frontend?
- codeptualize 2y agoDepends on what you are building, but overall I'd say the friction is minimal. For a lot of apps you won't even need to care about Rust whatsoever as you just use a bunch of fairly standard JS/TS api's. On the Rust side it's also quite nice, easy to make plugins, good api's, all the goodies. If you do use both the bridge can cause some friction because of serialization. I have personally not had any problems with it. Also good to note that in v2 (is in beta) they are improving this. Edit: you asked about TS specifically, check out https://github.com/oscartbeaumont/tauri-specta https://github.com/oscartbeaumont/tauri-specta it generates TS types for your Rust tauri commands.
- 1oooqooq 2y agoflutter. specially now that google fired half the team it's not worse than tauri/electron for desktop, and you get mobile for free if needed.
- triyambakam 2y agoWhy would the team being fired be more reason to use it?
- obdev 2y agoFlutter is cool, but does Dart have a decent library ecosystem for the needs beyond a rich client application?
- bunbun69 2y ago> flutter. specially now that google fired half the team Source?
- happa 2y agoThere is no source since it's not true. The product manager of Flutter/Dart said on Twitter that there was no change in team size, only some DevOps roles moving to other (likely cheaper) locations.
- ale_jacques 2y agohttps://techcrunch.com/2024/04/29/google-lays-off-staff-from-flutter-dart-python-weeks-before-its-developer-conference/ https://techcrunch.com/2024/04/29/google-lays-off-staff-from...
- bunbun69 2y agobro read the article you posted
- SeriousM 2y agoIf you're using .net: maui Cross platform for win/linux/mac/ios/android
- janice1999 2y agoAvolonia [1] is actually cross platform. I really doubt Microsoft will ever support Linux desktop GUIs. [1] https://www.avaloniaui.net/ https://www.avaloniaui.net/
- jjice 2y agoI believe that MAUI currently doesn't have official Linux support. There's unofficial support out there though. https://learn.microsoft.com/en-us/dotnet/maui/supported-platforms?view=net-maui-8.0 https://learn.microsoft.com/en-us/dotnet/maui/supported-plat...
- petabyt 2y agoMost ideas that could be desktop apps would be just as good as web apps or browser extensions. For myself Ive been using libui-ng.github.io/libui-ng/ for a few projects lately
- ryandrake 2y agoI disagree. They might be "better" from the point of view of the developer, but from the user's perspective, web apps are often much worse. - Needlessly ties the app to the web / Internet connectivity in order to work (a disadvantage unless the application's purpose involves queries over the Internet). - The application can change on you without warning and without you taking a deliberate step to update, including adding unwanted functionality and removing wanted functionality. - You can be denied access to the application remotely (this is also true for native applications that require an account to work). - Look and feel inconsistent with the rest of your applications / operating system. - Performance tends to be worse for web apps.
- petabyt 2y agoI'm not talking about USB/hardware apps, games, or anything demanding. What I have in mind is the majority of Electron/Tauri/Flutter apps I've seen on GitHub could have been just as good as web apps. (Not trying to dunk on them, most are probably experiments for learning.) First, compiling and releasing for OSX/Linux/Windows is a nightmare. It's way easier to deploy a web app. Not only for yourself but it's better for users. People get weirded out when they need to run an exe. And for Macs you need to go into settings and allow your unauthenticated app to run, unless you can sign the app yourself. And for Linux some people don't know they need to mark an AppImage executable to run it. And if you choose a bulky toolkit like Electron/Tauri/Flutter and in some cases Qt, your app will probably eat up more memory than a web app. And also the final binary users need to download will be big. So I recommend making a web app if you can, unless your idea fundamentally requires demanding hardware/IO usage/graphics/etc.
- skydhash 2y agoWeb apps are good for documents and form based applications. Anything else and you'd be better learning a native SDK.
- flapsflapsflaps 2y ago[flagged]
- triyambakam 2y agoIt's a boring meme to say Electron sucks. I don't think it's perfect but it is really easy to use and still worth considering.
- deleted 2y ago[deleted]
- pdevr 2y agoYou have to look at old languages for this. In the order of preference: Qt (C++), Swing (Java), and Visual Component Library (Delphi) are three tried and tested options for you.
- agilob 2y agoor JavaFX https://openjfx.io/ https://openjfx.io/