Show HN: Gova – The declarative GUI framework for Go

· systems devtools coding · Source ↗

TLDR

  • 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.

Original | Discuss on HN