Gova
The declarative GUI framework for Go. Build native desktop apps for macOS, Windows, and Linux from a single Go codebase — typed components, reactive state, real platform dialogs, and one static binary. No JavaScript runtime, no embedded browser, no C++ toolchain to learn.
Status: pre-1.0. The API will shift before v1.0.0 . Pin a tag in production.
package main import g "github.com/nv404/gova" type Counter struct {} func ( Counter ) Body ( s * g. Scope ) g. View { count := g . State ( s , 0 ) return g . VStack ( g . Text ( count . Format ( "Count: %d" )). Font ( g . Title ), g . HStack ( g . Button ( "-" , func () { count . Set ( count . Get () - 1 ) }), g . Button ( "+" , func () { count . Set ( count . Get () + 1 ) }), ). Spacing ( g . SpaceMD ), ). Padding ( g . SpaceLG ) } func main () { g . Run ( "Counter" , g . Define ( func ( s * g. Scope ) g. View { return Counter {} })) }
Why Gova
Components as structs. Views are plain Go structs with typed prop fields; defaults are zero values; composition is plain function calls. No magic property wrappers, no string keys, no hook-ordering rules.
Views are plain Go structs with typed prop fields; defaults are zero values; composition is plain function calls. No magic property wrappers, no string keys, no hook-ordering rules. Explicit reactive scope. State, signals, and effects live on a Scope you can see. No hidden scheduler, no re-render surprises, no Rx, no Redux.
State, signals, and effects live on a you can see. No hidden scheduler, no re-render surprises, no Rx, no Redux. Real native integrations where it matters. NSAlert , NSOpenPanel , NSSavePanel , and NSDockTile badge/progress/menu on macOS through cgo. Fyne fallbacks on Windows and Linux — same API everywhere.
, , , and badge/progress/menu on macOS through cgo. Fyne fallbacks on Windows and Linux — same API everywhere. One static binary. go build produces a single executable. No JavaScript runtime, no embedded browser, no extra assets to bundle.
produces a single executable. No JavaScript runtime, no embedded browser, no extra assets to bundle. Hot reload that actually reloads. gova dev watches Go files, rebuilds on save, and relaunches — with an opt-in PersistedState so UI state survives the reload.
... continue reading