A cross-platform, native, declarative GUI library for building desktop and mobile apps in Rust.
oneo-me/nsgo
A cross-platform native UI engine where app logic runs in Go and each platform draws with its own native views.
- Stars
- 198
- Forks
- 9
- Open issues
- 1
- Last commit
- 20 hours ago
What is it?
NSGo lets developers build user interfaces in Go. Application logic, the reactive graph built from signals, memos and effects, and flexbox or grid layout all run in Go, while each target platform draws with its own native views and text rather than a custom canvas. It is a Go port of Native Shell (NSH), a Rust framework with the same design.
The project targets iOS, Android, macOS, Windows, Linux and the web, and covers text, images, canvas, shaders, animations, services and unstyled base components. Apps can be written in Go or in TSX styled with Tailwind CSS classes. The nsgo command builds, runs and tests apps, with hot reload in development, release packages per platform, and a headless test mode alongside real-window tests with screenshots.
The project is early and has no stable release or stable API yet. Embedding NSGo views in existing iOS, Android or Go desktop apps is also supported.
Key features
- 01Reactive state with signals, memos and effects, written in Go
- 02Flexbox and grid layout rendered with each platform's native views
- 03Targets iOS, Android, macOS, Windows, Linux and the web
- 04Apps can be written in TSX with Tailwind CSS classes
- 05Headless tests plus real-window tests with screenshots
- 06Hot reload in development and release packaging per platform
Use cases
- Building a cross-platform app in Go that looks native on each platform
- Embedding a Go-built UI inside an existing iOS, Android or desktop app
- Teams that want the NSH model without writing Rust
Quick start
- 1
Check requirements: macOS with Xcode and Go 1.26 or later
- 2
Add the nsgo tool to your module
go get -tool github.com/oneo-me/nsgo/cmd/nsgo - 3
Run the app once with the dev command
go tool nsgo dev
Things to know
- NSGo is early and has no release or stable API yet.
- Development requires macOS with Xcode for the full set of targets.
- Some targets need extra tools, such as adb for Android or an Android NDK for the x86_64 emulator.
In collections
Topics
FAQ
- What is nsgo?
- A cross-platform native UI engine where app logic runs in Go and each platform draws with its own native views. NSGo lets developers build user interfaces in Go. Application logic, the reactive graph built from signals, memos and effects, and flexbox or grid layout all run in Go, while each target platform draws with its own native views and text rather than a custom canvas. It is a Go port of Native Shell (NSH), a Rust framework with the same design.
- Is nsgo free to use? What license does it have?
- nsgo is open source under the Other license. Check the license terms before using it in commercial products.
- Is nsgo still maintained?
- Actively maintained. The last commit to nsgo was on Nov 6, 2026.
- What can I use nsgo for?
- Building a cross-platform app in Go that looks native on each platform Embedding a Go-built UI inside an existing iOS, Android or desktop app Teams that want the NSH model without writing Rust
- How do I install nsgo?
- Check requirements: macOS with Xcode and Go 1.26 or later Add the nsgo tool to your module: go get -tool github.com/oneo-me/nsgo/cmd/nsgo Run the app once with the dev command: go tool nsgo dev
- Where can I get nsgo?
- The source code and installation instructions are on GitHub: https://github.com/oneo-me/nsgo
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Python framework for building web, desktop and mobile apps with a Flutter-based UI, no frontend experience needed.
TypeScript UI runtime that renders native pixels on handhelds, desktops and embedded screens, with no DOM or WebView.
A framework for building native iOS, Android and visionOS apps with JavaScript or TypeScript, using native UI and APIs directly.
A cross-platform GUI toolkit and app API for Go, designed to build desktop and mobile apps from a single codebase.
An Elixir library for building native desktop apps with declarative UI rendered by the Rust-based GPUI framework.