Ask HN: What toolchains are people using for desktop app development in 2025?
Traditional native stacks (.NET, Java, Delphi, etc.)
- Many Windows-only shops use C# + .NET with WinForms or WPF; WinForms is praised for simplicity and surprising longevity, WPF seen as powerful but easy to misuse (XAML binding pitfalls).
- Avalonia and Uno are popular for cross‑platform .NET with AOT support; several people would now pick Avalonia over WPF/MAUI for new desktop apps.
- Java Swing is still in production; considered performant but verbose and slower to build than web UIs.
- Delphi is viewed as extremely productive but hobbled by high commercial licensing and a declining IDE; Lazarus + FreePascal is widely recommended as the open-source successor, though docs are weak and Mac support is rough.
Qt and C++ ecosystems
- Qt + QML/Widgets remains a primary cross‑platform choice with good native look & feel and strong C++ integration.
- Big divide on licensing: some consider Qt’s commercial terms “repulsive” and avoid it entirely; others happily ship LGPL builds (static and dynamic) or pay small-business licenses and find them reasonable. A few claim the licensing hasn’t changed much and that fear is amplified by Qt’s tactics.
- Some warn Qt specialization is too niche as more UIs move to browsers; others still build serious apps with Python or Rust bindings.
Web-tech-based desktop apps (Electron, Tauri, Chromium shells)
- Several teams ship “desktop” apps as HTML/JS/CSS in Electron, Tauri, or custom Chromium shells.
- One experience with an internal Chromium fork reports terrible performance and heavy tracking; another counters that poor performance is due to bad engineering, not web tech itself.
- File System Access API in Chromium makes pure web apps feel more native for file-centric tools, but Firefox/Safari’s security stance and lack of key APIs block full portability.
- Electron gets both defense (“hate is undeserved, many successful apps”) and endorsement as the simplest way to ship cross‑platform installables.
Rust and newer UI frameworks
- Rust shows up in multiple forms: Rust+egui (immediate mode, less convenient than web), Rust+Qt via cxx‑qt, Rust+Slint (praised for stability and native widgets), Dioxus, and custom GPU stacks (egui+wgpu).
- Tauri (Rust core + system webview) is seen as promising but some report poor Linux performance.
- General sense that Rust GUIs are improving but still immature compared with .NET/Qt.
Other notable toolchains and niches
- Flutter is considered highly productive (including embedded Linux) but many fear Google “graveyard” risk; some still happily use it for internal tools.
- Game/graphics engines (Dear ImGui, LÖVE, JUCE, Godot) are used for specialized or audio/game‑style UIs; trade-offs include performance and integration quirks, but great dev ergonomics for some.
- Python stacks mentioned: PySide/PyQt, GTK, Kivy, Tcl/Tk; Common Lisp users wrap Qt4, Tk, or OpenGL windows.
- Go developers use Wails (webview) or Fyne/TUI libraries; some highlight how trivial cross‑platform TUIs are vs GUIs.
Meta: fragmentation, careers, and AI
- Thread itself is cited as evidence of extreme fragmentation in desktop tooling; no clear winner beyond “Qt still best overall cross‑platform native,” with many caveats.
- Native desktop is still seen as viable, especially for security‑sensitive or E2EE apps, embedded devices, and specialized tools; mass‑market greenfield projects often default to web tech.
- AI assistants (VS Code + Copilot, Claude, etc.) are commonly used and said to make even C/C++ desktop work more approachable.