oneo-me/nsgo
Developer ToolsWrite cross-platform apps in Go while each platform renders them with its own native views.
NSGo is a cross-platform UI engine for building apps in Go: application logic, a signal/memo/effect reactive graph and flexbox or grid layout run in Go, while each target draws with its own native views. It follows the model of Rust's Native Shell (NSH), and is aimed at Go teams who want that model without writing Rust. It is explicitly early, with no release or stable API yet.
How an app is built
An app is a Go main package whose root component is passed to nsgo.Run. Signals hold state, and components return core nodes such as views, text and base buttons. Layout is declared in Go style values, so the same component tree targets macOS, iOS, Windows, Linux, Android and the web. The engine's own scope is documented includes reactivity, layout, text, images, canvas, shaders, animations, services and unstyled base components; it is not a batteries-included set of styled widgets.
Using it
The nsgo tool is added to a Go module once with go get -tool and then run as go tool nsgo without a separate install. dev runs the app, optionally rebuilding and restarting on save; build produces a release package per target (.app, .ipa, .apk, Windows/Linux directories, or a web site). Apps can also be embedded in existing native apps via an XCFramework, an AAR, or nsgo.NewView in Go desktop programs.
Testing is a real part of the workflow: nsgotest runs headless, while go tool nsgo test -target macos (or Windows, Linux, web in Chrome/Chromium/Edge, iOS simulator or Android) runs the same tests in a real window with native input and saved screenshots. A JUnit report is available for CI-style consumption.
Requirements and current limits
The documented development environment is macOS with Xcode and Go 1.25 or later; the README says that is enough to build every arm64 target, including the Android APK. Device development adds adb from the Android SDK or, for iPhone, an Apple ID, a trusted device and Developer Mode. The android_x64 emulator target additionally needs an Android NDK for cgo. Windows documentation covers running the native app and building Windows and web packages; Linux needs GTK 4.14+, Pango, Cairo, WebKitGTK 6.0 and GStreamer plug-ins.
The author states plainly that there is no release or stable API, and per-platform status is tracked in the architecture document. That means APIs and packaging should be expected to move. The project is Apache-2.0 licensed, with attribution to NSH recorded in NOTICE.
Fit
This is a reasonable early look for Go developers who want native-rendered UI on several platforms and are comfortable with an unstable API. Teams needing a released, frozen API, or those who cannot use the macOS/Xcode build environment, should treat it as not yet ready rather than assume the documented alternative toolchains cover every packaging path.
HotRepo's take
HotRepo observed NSGo on its NEW-REPOSITORY board at 134 stars, #10, on 2026-10-28; this is a single snapshot, not a growth measurement, and there is insufficient daily-board history to infer momentum.
Written by AI from the project's README, updated October 28, 2026. The project's own docs are the source of truth.