Repolode
oneo-me

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

    Check requirements: macOS with Xcode and Go 1.26 or later

  2. 2

    Add the nsgo tool to your module

    go get -tool github.com/oneo-me/nsgo/cmd/nsgo
  3. 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