Desktop Apps
Desktop Apps: Wails & Fyne
Go is excellent for cross-platform desktop apps. You have two main paths:
1. Wails (The Electron Alternative)
Wails (wails.io) is “Electron for Go”, but lighter. * Frontend: HTML/JS/CSS (React, Vue, Svelte, or vanilla). * Backend: Go. * Renderer: Uses the native System WebView (WebKit on Mac, WebView2 on Windows). No bundled Chrome.
Binary Size: ~15 MB (Go) vs ~150 MB (Electron).
Architecture
You write your logic in Go structs. Wails automatically generates JavaScript bindings.
// Go
func (a *App) Greet(name string) string {
return "Hello " + name
}// JS (Generated)
import {Greet} from '../wailsjs/go/main/App';
Greet("World").then(result => console.log(result));2. Fyne (Native UI)
Fyne (fyne.io) renders its own widgets using OpenGL. It does not use HTML/CSS. * Look & Feel: Material Design-ish. Consistent across Mac/Windows/Linux/Mobile. * Performance: Very fast (GPU accelerated). * Mobile: Fyne apps run on iOS and Android with zero changes.
func main() {
a := app.New()
w := a.NewWindow("Hello")
w.SetContent(widget.NewLabel("Hello Fyne!"))
w.ShowAndRun()
}3. Gio (Immediate Mode)
Gio (gioui.org) is for experts who want pixel-perfect control. It is an “Immediate Mode GUI” (like game engines). It is extremely efficient but requires drawing your own components often.
Recommendation (2026)
- Building a SaaS / Dashboard / Tool? Use Wails. You can reuse your web frontend skills (Tailwind/React).
- Building a Graphics Tool / Game / Consistent UI? Use Fyne.