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.