Choose Desktop Stack

Desktop stack choice is about OS integration, renderer consistency, packaging, and update channels.

Decision Table

NeedPickWhyWatch out
Small local-first cross-platform appTauri 2Lightweight shell, Rust core, explicit security config/capabilitiesWebView differences, Rust requirement, platform packaging
Chromium-consistent productivity UXElectronSame Chromium engine, Node ecosystem, mature distribution docsHeavier footprint, security hardening required
New Windows-native appWindows App SDK + WinUI 3Microsoft recommended modern Windows platformWinUI 3 is not UWP; AI often uses stale APIs
Existing Windows internal toolWPF/WinFormsStable, productive, no rewrite taxNot the right default for new modern Windows UX
Go backend plus desktop web UIWailsGo-first desktop shell and bindingsSmaller ecosystem than Electron/Tauri
Technical automation with minimal UICLISmallest surface, easiest to scriptNot discoverable for non-technical users

Tauri vs Electron

FactorTauri 2Electron
RendererOS WebViewBundled Chromium
BackendRustNode.js/main process, optional sidecars
FootprintUsually smallerUsually heavier
Security modelExplicit capabilities/CSP/security configRequires hardening around Node/preload/isolation
Best fitLocal-first utilities, native shell, smaller appComplex web UX, command palettes, Node ecosystem, consistent rendering

Windows Native Trap

Windows App SDK + WinUI 3 is the modern native Windows default, but do not let AI paste UWP-era code. Check DispatcherQueue, AppLifecycle, windowing, packaging, and WinUI test-project requirements against current docs.

Tip: For a desktop app, prove a packaged build early. A dev window proves almost nothing about signing, installer behavior, updater shape, or user trust.