A Rust framework for building interactive client-side web apps by compiling to WebAssembly, with a JSX-like macro for HTML.
maxence-charriere/go-app
A Go package for building progressive web apps with WebAssembly, using a declarative, component-based UI written entirely in Go.
- Stars
- 8,973
- Forks
- 406
- Open issues
- 52
- Last commit
- yesterday
What is it?
go-app lets developers build progressive web apps in Go. UI is written as reusable components that create and compose HTML elements directly in Go code, so no separate JavaScript or template language is needed on the front end. The Go code is compiled to WebAssembly to run in the browser.
The package follows the standard Go net/http model, so an app can be served through http.Handle and http.ListenAndServe like any other Go web server. Apps built with it can run in their own window, support offline mode, and are designed to be SEO friendly. Routing between components is handled with app.Route.
The project requires Go 1.18 or newer and is installed as a Go module. The documentation site at go-app.dev covers declarative syntax and a getting started guide.
Key features
- 01Build UI entirely in Go with a declarative, component-based syntax.
- 02Compile Go to WebAssembly to run in the browser.
- 03Follows the standard Go net/http interfaces for serving apps.
- 04Supports offline mode and running in its own window as a PWA.
- 05Provides component routing with app.Route.
Use cases
- Building a web or PWA frontend for a team that prefers to write everything in Go.
- Creating installable, offline-capable web apps that also need to be indexed by search engines.
- Sharing Go types and logic between a backend server and a browser-side UI.
Quick start
- 1
Initialize a Go module in your project folder
go mod init - 2
Install the go-app package
go get -u github.com/maxence-charriere/go-app/v11/pkg/app - 3
Follow the Getting Started guide on go-app.dev to build your first app
Topics
FAQ
- What is go-app?
- A Go package for building progressive web apps with WebAssembly, using a declarative, component-based UI written entirely in Go. go-app lets developers build progressive web apps in Go. UI is written as reusable components that create and compose HTML elements directly in Go code, so no separate JavaScript or template language is needed on the front end. The Go code is compiled to WebAssembly to run in the browser.
- Is go-app free to use? What license does it have?
- go-app is open source under the MIT license. Check the license terms before using it in commercial products.
- Is go-app still maintained?
- Actively maintained. The last commit to go-app was on Oct 21, 2026.
- What can I use go-app for?
- Building a web or PWA frontend for a team that prefers to write everything in Go. Creating installable, offline-capable web apps that also need to be indexed by search engines. Sharing Go types and logic between a backend server and a browser-side UI.
- How do I install go-app?
- Initialize a Go module in your project folder: go mod init Install the go-app package: go get -u github.com/maxence-charriere/go-app/v11/pkg/app Follow the Getting Started guide on go-app.dev to build your first app
- Where can I get go-app?
- The source code and installation instructions are on GitHub: https://github.com/maxence-charriere/go-app
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Rust framework for building web, desktop, and mobile apps from a single codebase, with React-like components and signals.
A JavaScript library for building interactive user interfaces from composable components, usable on the web, server and native platforms.
A frontend workshop for building, documenting and testing UI components in isolation, supporting React, Vue, Angular, Svelte and more.
A compiler that turns declarative web components into efficient JavaScript that surgically updates the DOM.
Python framework for building web, desktop and mobile apps with a Flutter-based UI, no frontend experience needed.