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