[HN Gopher] Ask HN: What toolchains are people using for desktop...
___________________________________________________________________
Ask HN: What toolchains are people using for desktop app
development in 2025?
I recently came across a comment [0] here that highlighted the
challenges of building native desktop apps with LLMs. The commenter
pointed out how scarce training resources have become--few blog
posts, tutorials, or open-source projects exist compared to web or
mobile development. They also noted that while desktop app
development was a solid career path in the 90s, it's now seen as a
dead end for most, outside of big players like Microsoft or Adobe.
This got me thinking: My own experience with desktop development
dates back to the late 90s using Turbo Pascal 6 in Delphi, and I'm
out of the loop on modern practices. With the evolving landscape,
I'm curious about what tools and workflows developers are actually
using today. Some questions to spark discussion: - What
programming languages and frameworks are popular for desktop apps?
- Are there any go-to IDEs, build tools, or libraries that make
development easier? - Do the above answers change if you care about
code performance or efficiency (whatever that means to you)? - Is
native desktop app development still viable as a career, or are
most greenfield projects shifting to web-based alternatives? I'd
love to hear from folks with recent experience--success stories,
pitfalls, and recommendations would be great. Thanks in advance for
sharing! [0] https://news.ycombinator.com/item?id=44841291
Author : lincoln20xx
Score : 59 points
Date : 2025-08-09 16:52 UTC (6 hours ago)
| mikewarot wrote:
| Lazarus is the open source equivalent to Delphi these days, and
| for the most part it's awesome. (The documentation, on the other
| hand... just isn't fit for purpose)
|
| I've been using Visual Studio Code and Github Copilot together,
| and it seems to work ok. I've not used it heavily, though, as I'm
| retired.
| dlachausse wrote:
| I've found that you can mostly just use old Delphi books as a
| starting point for learning Lazarus.
| bsoles wrote:
| To my dismay, my company uses JavaScript, HTML, CSS with a custom
| Chromium-based web browser installed on your PC. The performance
| is shit: GUI performance that should take milliseconds takes
| seconds to render with constant pinging of corporate servers and
| user activity logging. Development mostly done in IntelliJ or VS
| Code.
| yjftsjthsd-h wrote:
| At that point, what's the point in maintaining your own browser
| fork instead of just telling users to point their own (Blink,
| even) browser at localhost?
| bsoles wrote:
| Control of the chrome around the browser page I guess.
| leptons wrote:
| Those problems aren't JS/HTML/CSS problems, they are bad
| programmer problems. If the performance of your webapp sucks,
| then you did something wrong somewhere, but it wasn't choosing
| JS/HTML/CSS that caused the problem. There are plenty of very
| performant web applications.
| dochtman wrote:
| Tauri seems interesting. It combines a Rust core with the
| platform-native browser engine for presentation. Of course a
| potential downside is rendering incompatibilities between
| engines/platforms.
| dev08979 wrote:
| I support Java software using a Swing GUI. It's fairly
| performant, but requires a fair bit of boilerplate for setting up
| the GUI and can take longer than typical web development.
| pragmatic wrote:
| Windows Forms are alive and well.
|
| Still supported in latest .net versions.
| juped wrote:
| Avalonia is my go-to on .net. It's not too far from WPF.
| dmitrybrant wrote:
| A hearty +1 to using WinForms (as long as your desktop app
| targets Windows only, of course). The fact that WinForms has
| outlasted so many other UI toolkits is a testament to its
| simplicity and ease of use. I still use it in numerous personal
| projects, and I don't foresee Microsoft dropping support for it
| anytime in the near future.
| leptons wrote:
| I'm still using a few JScript.NET Windows forms applications I
| wrote over 10 years ago. Works great. jsc.exe is still on every
| Windows machine, and makes it easy to write Javascript and
| compile to .exe or even .dlls.
| electroly wrote:
| Same. Claude is good at it. Plenty of training material and the
| way we design Windows Forms apps hasn't changed in 20+ years.
| Palomides wrote:
| Qt with QML for a somewhat embedded use case. I think it hits a
| really nice intersection of native speed, GPU acceleration,
| interfacing with C++, and ease of development.
|
| I wouldn't really recommend a career out of it.
| diego_moita wrote:
| > I wouldn't really recommend a career out of it.
|
| Care to say why? I ask because that's what I use at work: C++
| and Qt
|
| Yes, I'd prefer Rust and Slint/Tauri.
|
| But like a prostitute I don't do what I love, I do what pays
| the bills.
| Palomides wrote:
| I think it's a little too niche, and as embedded processors
| get more and more powerful, we'll just see the same trend of
| doing all UI in a browser instead
|
| I do like working in it, though!
| Mars008 wrote:
| You don't need powerful microprocessor for UI. Just some
| sort of connection. WiFi, network, file system. Then UI can
| run in browser on tablet, desktop...
| cocoa19 wrote:
| > Yes, I'd prefer Rust and Slint/Tauri.
|
| Ah, you like masochism I see. I bet you use it for your
| personal projects, but not at all for commercial projects.
| It's just not there yet.
| LarMachinarum wrote:
| Qt used to be what I used as well, but the licensing has become
| so repulsive for professional use that I now refuse to touch it
| now (not even for my open source side projects where this
| wouldn't be an issue).
|
| Too bad the hopes from the early Nokia adoption days got
| smashed by MS mole Elop and the later owners of Qt.
| nextos wrote:
| Yeah, it's quite sad to see Qt on the N9 and, now, on
| SailfishOS.
|
| We were robbed of a future with lightweight and responsive
| native apps. Android pales in comparison.
| hermitcrab wrote:
| I have a small business license which I use for developing 3
| commercial application. It is ~$1000 per year and the
| licensing seems quite reasonable.
| Palomides wrote:
| why are you paying for a license? are there non-LGPL
| features you're using?
| ranger_danger wrote:
| We have no issues shipping both FOSS (LGPL) and proprietary
| solutions using Qt without having to pay any license fee...
| not sure what issues you're running into.
| mg wrote:
| Now that Chromium supports the File System Access API on desktop
| and mobile, I am building every software I need as HTML+JS+CSS.
|
| Before that, handling files in the browser was cumbersome. You
| had to offer download and upload links for users to manage files.
| And handling whole directories was impossible.
|
| But now web apps are like native software tools that you can use
| to edit and manage files on the file system.
|
| And the bonus point is that what you build this way is fully
| functional on mobile too. Right away, without any changes. At
| least on Android.
| lyu07282 wrote:
| +1 Another bonus is that it's properly sandboxed, you only give
| access to the files/directories and other resources it needs.
| robertoandred wrote:
| Except you lose native document UI features. Especially
| frustrating in Electron "apps".
| Mars008 wrote:
| What about FireFox, does/will it support file system access?
| I'm not an expert, just thinking this way and don't like
| Chromium. The idea is to use light web server in application +
| browser with JS. This makes it easier and more convenient as it
| can naturally run remote, on microprocessor. Also LLMs are good
| at generating such UIs.
| 8organicbits wrote:
| https://caniuse.com/native-filesystem-api
|
| Looks like Firefox does not support it currently.
| dazzawazza wrote:
| Within game development it's Dear ImGui.
| https://github.com/ocornut/imgui
|
| Normally with the Windows DX12 backend, sometimes with the
| SDL+OpenGL backend if you want cross platform support.
|
| Other frameworks are sort of disappearing. C++ all the way
| although some use it with C#.
| gisborne wrote:
| Flutter builds pretty decent desktop apps these days.
| AaronAPU wrote:
| I'm using JUCE C++ which is very popular for audio software. But
| it can be used for more general purpose applications. The latest
| version has some kind of HTML based UI system but I've not
| migrated yet.
| joefourier wrote:
| I've tried it in the latest plug-in I've worked on - it's just
| a webview embedded in the window. It's really great for faster
| development of more complex plug-ins but there's some downsides
| when it comes to performance and integration with the DAW (I
| had to do some nasty hacks to get handle mouse clicks and
| keypresses properly).
|
| I think it would be possible to have those advantages in
| JUCE/C++ without a webview tho. Maybe just moving to a
| declarative UI approach for positioning and styles with the
| ability to refresh (something like litehtml could be handy for
| that)?
| diego_moita wrote:
| For Windows only (because that's the most common platform in the
| world): C# and .Net. The UI is mostly either WPF or WindowsForms.
|
| For Mac only: new apps use Swift, legacy ones use Objective-C,
| both with AppKit.
|
| Linux only: these are quite rare and there is a broad mix of
| them: C++, Java, etc.
|
| Cross-platform: C++ with Qt seems to be the standard. Go and Rust
| seem to be rising. Rising UI libraries are Tauri, Slint and Iced.
| There are other alternatives like cross-platform .Net, Java or
| Flutter. But they don't look very solid and widely adopted.
|
| Then there are other UI frameworks for some specific use cases
| (games, scientific applications, etc).
| self_awareness wrote:
| C++ and Qt.
|
| Rust as a statically linked library where it makes sense.
| vladdoster wrote:
| Flutter is a super compelling framework
| (https://flutter.dev/multi-platform/desktop), but I'd live in
| fear of it randomly being sent to the Google graveyard.
| x0x0 wrote:
| It had layoffs in 2024. And Google has emitted a bunch of words
| about their support for Flutter, but hasn't taken the most
| obvious step towards solidifying support: guarantee a minimal
| spend level on Flutter dev for a decade, either internally or
| by donating to an external foundation. eg we will spend $x on
| Flutter until 2036. :shrug: So they've carefully retained the
| option to cut support at will. Which is their choice, but I
| recently wasn't comfortable starting a greenfield project in it
| for that reason.
| doawoo wrote:
| We shipped a project at work with Flutter recently,
| specifically using it on embedded Linux, basically a touch
| screen smart apartment tablet/thermostat combo.
|
| Internally the "UI" team is tiny (basically me, a UI/Designer
| and one or two other part time engineers) and the productivity
| is astounding tbh
| written-beyond wrote:
| Which embedder did you guys end up using, Toyota or flutter-
| elinux
| Philpax wrote:
| Rust + egui, but it's a far cry from the convenience or iteration
| speed of the web. Wherever possible, I build webapps instead,
| just because it's so much faster to get results (especially with
| LLMs!)
|
| With that being said, I'd like to try the modern .NET stack
| sometime. Shame that the UI side of things is still largely
| Windows-only, and even Microsoft themselves don't know which UI
| framework they're using this week.
| exceptione wrote:
| See Avalonia, cross-platform .net core.
| gwbennett wrote:
| For both iOS and Android app: - Xcode - SwiftUI - Supabase -
| Claude CLI - Skip.tools (converts SwiftUI to native Katlin code)
|
| Been developing mobile apps for over 15 years. This is by far the
| best stack for developing mobile apps. Speed, total control,
| native UI's. Love it.
| tra3 wrote:
| Is there a cross plaform desktop option for that?
| adamnemecek wrote:
| I have been recently playing with Dioxus and I kinda like it. I
| too am dismayed that we are using browser to target desktop but
| here we are I guess.
| alok-g wrote:
| Thanks, I wasn't aware of it.
|
| What would you think are the pros and cons over various
| alternatives (like Flutter, Avalonia, Lazarus, etc.)
|
| Thanks.
| akkartik wrote:
| As someone who loved Turbo Pascal, for the past 3 years I use Lua
| and LOVE.
|
| https://akkartik.name/freewheeling
| strickinato wrote:
| Just chiming in to say that akkartik is doing really
| interesting stuff and it's worth diving deep on this site.
|
| <3
| akkartik wrote:
| Wow, thank you! <3
| pull_my_finger wrote:
| Are you shipping apps bundled with LOVE or just expecting users
| to obtain it and drag the files onto it? I know there are some
| scripts out there to produce stand-alone apps, but I wish it
| were more straight forward or that there were a 1st party tool
| that did it.
| akkartik wrote:
| Yeah, my install instructions are consistently:
|
| 1. Download LOVE from its website.
|
| 2. Download my app (as Lua source code).
|
| It's not going to lead to Instagram-level downloads, but
| that's not the aim. My goal is to teach people a little at a
| time to be thoughtful about whom they trust to run code on
| their devices. Forcing people to take 2 steps hopefully has 2
| benefits:
|
| 1. You start from day 1 to take baby steps in being mindful
| of how software is put together for you to use. It's not just
| a single hermetically sealed box. This part comes from one
| supplier, this part from another. Both can be modified, and
| require different skills to modify.
|
| 2. You start from day 1 to take baby steps in thinking about
| whom to trust. Here there are 2 separate projects that would
| be very hard to collude together. That limits at least the
| level of malicious stuff I can do.
|
| Summary: I don't want a bunch of people blindly trusting me.
| I want a few people _choosing mindfully_ to trust me.
| dlachausse wrote:
| Have you looked at Free Pascal and Lazarus? It's an excellent
| open source and cross-platform implementation of Object Pascal
| and Delphi.
|
| https://www.lazarus-ide.org/
| mariu52 wrote:
| Rust for backend + Qt via cxx-qt bindings.
|
| Would consider flutter for smaller apps as I had a great
| experience before.
| mahadali wrote:
| Zte the hack
| woile wrote:
| Slint-ui with rust (they have bindings for cpp, Python and js).
|
| Quite good, I've been building this Pomodoro:
|
| https://github.com/reciperium/temporis/
|
| I've also used nix to build the packages when possible.
|
| One of the things I like about slint is that it has native
| components. They also have experimental support for Android and
| iOS.
|
| The language is quite simple as well. Though it could benefit
| from something like flex
| alkonaut wrote:
| .NET and whatever gui framework is appropriate (WPF, Avalonia,
| WinForms).
|
| Rust + Egui for special cases like DAW plugins.
| anonymousd3vil wrote:
| I'm personally aware and used few Desktop app building frameworks
| like Flutter, Tauri, Electron. I think you might have some luck
| with Electron support for LLMs since its early development and
| resources available. But I personally like to use Tauri recently,
| its backend is Rust but you can plug it in with any JS, CSS
| framework and develop your application.
| osm3000 wrote:
| Because I mainly work with python, I am using Kivy
| (https://kivy.org/).
|
| Earlier I was HTMX, Jinja templates, Flask, Tailwind and little
| vanilla JS. It was too inelegant for my taste.
|
| I am considering moving to either Swift, or JS/Svelete
| jlarocco wrote:
| At work we use C#, .Net, and WPF. I've only used it at this
| company, and I can't say for sure if my dislikes are with WPF, or
| how our codebase is using it. Overall it's not terrible, except
| for being proprietary and Windows only.
|
| Outside of work, I'm out in left field using Common Lisp for most
| of my projects, so I'm not sure how helfpul this is, but...
|
| In the past, I used Qt4 because there was an amazing Common Lisp
| binding and it worked well on Linux, FreeBSD and OSX. It's
| increasingly hard to use Qt4 any more, though, and changes in the
| Qt project made the technique used by the Qt4 bindings
| impractical for Qt5 or Qt6 - at least that was my understanding
| when I looked into it.
|
| For newer things I've tried LTK but don't really like the looks
| of it and I wouldn't say it's "modern". It seems to work across
| platform well enough, though, and for simple stuff it's okay.
|
| More often than not I'm using a combination of the Slime tools in
| Emacs in combination with an GLFW/OpenGL window. Often I'll use
| the inspector to display data and make changes that show up in an
| OpenGL window, or run some commands in the REPL and pop up an
| image in an external viewer or load something in a browser. It
| only works for certain types of applications, and I won't even
| pretend it's practical for end users, but it works pretty well,
| and it's flexible as a developer.
|
| I'm curious to see what other people say. It's been a while since
| I madea full blown GUI application.
| cryptoalex wrote:
| Delphi was so ahead of its time (a mandatory remark)... I've used
| Delphi 1 to 4 then moved on to other things. Using .NET since 1.0
| beta, and it still remains my favorite stack. The project I am
| currently building is a software infra for building E2EE
| applications, and it requires a little bit of everything - mobile
| apps for key management, desktop/cli apps/client libraries for
| actually encrypting data, sometimes a web based app, and a zero
| trust backend. Using Xamarin/MAUI for mobile apps, Blazor WASM
| for Web, Blazor Hybrid / MAUI / Avalonia UI for Desktop. All of
| the frameworks have their quirks, so it may take a bit of time to
| learn your patterns, build your base classes, but after that you
| pretty much enjoy the productivity of a modern high level
| language.
|
| - What programming languages and frameworks are popular for
| desktop apps? - for me - Blazor Hybrid / MAUI / Avalonia UI /
| WinForms
|
| - Are there any go-to IDEs, build tools, or libraries that make
| development easier? - I use MSVS 2022, VSCode for .NET, IntelliJ
| for $$$ at work. There are of course UI control libraries, I am
| using MudBlazor for Blazor WASM / Hybrid, other than that I use
| built-in controls that come with each framework. I try to use as
| little as possible of 3rd party libraries b/c my apps are
| security-sensitive.
|
| - Do the above answers change if you care about code performance
| or efficiency (whatever that means to you)? - in my case no, I am
| able to find what I need in .NET ecosystem. Modern .NET supports
| ahead-of-time compilation compiling to native code, and that
| helps to reduce start-up time which is important for Desktop /
| CLI. Ironically, for a long running processes, like a web
| service, the just-in-time compilation sometimes produces code
| running faster than ahead-of-time compilation, b/c it learns most
| common execution paths at runtime, and is able to recompile on
| the fly, optimizing for most frequent execution paths, giving a
| non-trivial performance boost in some cases
|
| - Is native desktop app development still viable as a career, or
| are most greenfield projects shifting to web-based alternatives -
| depends on the app/use case. For my project, desktop is the first
| class citizen, but I am building E2EE apps, i.e. end-to-end-
| encryption apps, aka client-side encryption, and native / Desktop
| / CLI is a better fit for E2EE in most of the cases compared to
| web apps. For those Web apps that I have it is still E2EE but in
| the browser (still client side encryption)
| hermitcrab wrote:
| >Delphi was so ahead of its time
|
| Borland had an amazing knack of snatching defeat from the jaws
| of victory.
| _nhh wrote:
| C#, dotnet core and Avalonia. Its awesome
| sltr wrote:
| On my projects [1][2], I use C# and Avalonia with Rider or Visual
| Studio. For extra performance, turn on AOT, which has the nice
| side-effect of making reversing your app to C# impossible.
|
| I worked in WPF for a decade. I wouldn't go with it for a new
| project since it's Windows-only and doesn't support AOT.
|
| At work we have a Blazor MAUI hybrid desktop app because it also
| has to run on the web. If we only needed a desktop app, I'd go
| with Avalonia.
|
| [1] https://linklever.net/ [2]
| https://github.com/endurabyte/FitEdit
| cosmic_cheese wrote:
| Still plain old Swift (or when the itch strikes, Objective-C) and
| AppKit. I don't really build for platforms other than macOS
| because I haven't found toolkits that feel right elsewhere. I
| would do just about anything for multiplatform AppKit.
| eqvinox wrote:
| Python & Gtk (& sometimes Glade)
| globalnode wrote:
| Interesting, I think this is a good choice too if you want
| cross platform and to avoid potential future geopolitical
| issues that may crop up given the way the world is going.
| eqvinox wrote:
| To be fair I haven't had reason to care about shipping for
| Windows yet (though I believe it's reasonably simple), only
| MacOS and Linux, and no mobile.
| PhilippGille wrote:
| For Go, I've been using Wails [1] and Fyne [2]. The former uses a
| web view for the UI, the latter is Go only.
|
| [1] https://github.com/wailsapp/wails
|
| [2] https://github.com/fyne-io/fyne
| edtech_dev wrote:
| Avalonia - https://avaloniaui.net/
| foresto wrote:
| Topping my list of GUI toolkit requirements are cross-platform
| and native look & feel. As far as I know, Qt still beats
| everything else in these areas on the desktop. It's mostly
| excellent.
|
| However, I find The Qt Group's commercial licensing (and their
| tactics as reported by various people on HN) a little scary. If I
| were to go commercial, I think I would stick with LGPL Qt and
| link dynamically or give customers my object files for re-
| linking, because I get the impression that accepting a commercial
| Qt license could restrict my ability to use open-source Qt
| elsewhere. I suppose there might be some other way to safely
| navigate those waters, but from what I've read, The Qt Group has
| a reputation for making this far from hassle-free. It's not an
| immediate problem because I currently use Qt only for open-source
| and personal tools.
|
| I have grown tired of C++, so I've been using Python to drive Qt.
| The bindings are very good, mirroring the C++ API so closely that
| I just use the C++ docs when I need to look something up.
|
| I've also been watching for Qt bindings to other compiled
| languages, mainly for distributing non-Linux GUI apps more simply
| than Python allows. Such bindings often turn out to expose only
| Qt Quick, which lacks functionality that I sometimes need, but
| there are a few that expose Qt Widgets. For example, these Go
| bindings:
|
| https://github.com/mappu/miqt
|
| I hope we'll eventually see a cross-platform GUI toolkit rivaling
| Qt in a language more pleasant than C++ (and ideally easier to
| bind to other languages). The one being developed for internal
| use by the Zed editor has some promising ideas about how to
| render native-looking text, which I think is a good start:
|
| https://zed.dev/blog/videogame
|
| https://www.gpui.rs/
| kcartlidge wrote:
| - Some mentions of Lazarus and FreePascal (so basically a cross-
| platform open source Delphi equivalent). And I'd agree with them.
|
| - For C# I like AOT assemblies using Uno or Avalonia.
|
| - For Go I like TCell (which does cross-platform console mode
| text GUIs [with cursor positioning, colours, mouse, etc]).
|
| - If you're doing vibe coding I find it tends to work best with
| Electron.
|
| - The big omission here is anything Python; I don't do desktop
| apps in Python so can offer nothing. Same for Ruby, though
| Hotwire Native looks interesting.
___________________________________________________________________
(page generated 2025-08-09 23:01 UTC)