Gova is a pre-1.0 declarative GUI framework for Go that compiles to a single static binary targeting macOS, Windows, and Linux via Fyne internals and cgo.
Key Takeaways
Components are plain Go structs with typed prop fields; reactive state lives on an explicit Scope object, avoiding hidden schedulers or hook-ordering rules.
Ships real native macOS integrations (NSAlert, NSOpenPanel, NSSavePanel, NSDockTile) via cgo; Windows and Linux fall back to Fyne with the same public API.
Binary size is ~32 MB unstripped, ~23 MB with -ldflags "-s -w"; idle RSS is ~80 MB on macOS arm64 with Go 1.26+.
gova dev hot-reloads by watching Go files and relaunching the window; PersistedState survives reloads without manual state serialization.
Fyne is an internal dependency only; the public Gova API is stable across renderer swaps, and the license is MIT with no runtime fees.
Hacker News Comment Review
Commenters noticed a likely UI bug: the counter example screenshot shows the + and - buttons stacked vertically despite being inside an HStack, suggesting a layout rendering issue in early docs or the demo.
The primary ask from experienced Go GUI builders is rich multi-window support from day one; retrofitting it later is consistently painful across GUI frameworks.
Gova is being framed as a higher-level abstraction layer over Fyne, roughly analogous to DaisyUI over Tailwind, and is drawing favorable comparisons to Tauri as a native alternative.
Notable Comments
@iamcalledrob: Urges the author to invest in multi-window support early; cross-compilation ease makes Go a compelling cross-platform UI story.
@staplung: Flags apparent HStack/vertical layout mismatch in the intro screenshot vs. the counter code snippet.