Vango Documentation

Build Vango apps the intended way: server-owned state, pure render logic, structured async work, and explicit client boundaries.

#vango#go#framework

Vango Documentation

Vango is a server-driven web framework for Go. Components run on the server, UI updates flow as binary patches over WebSocket, and the browser stays thin by default.

This documentation turns the Vango developer guide into an app-builder reference you can read in sequence.

What Vango optimizes for

  • full-stack Go apps

  • server-owned UI state

  • SPA-feeling navigation without a heavy client runtime

  • structured async work instead of ad hoc goroutines

  • deploy-safe persistence and generated tooling

  • AI-friendly code generation and refactoring

The core model

Vango has a strict ownership model:

  • the server owns authoritative UI state

  • the session loop is the single reactive writer

  • vango.Setup allocates state and lifecycle

  • render stays pure and deterministic

  • setup.Resource owns async reads

  • setup.Action owns live async mutations

  • page Action owns route-bound progressive form posts

  • hooks, islands, and WASM are explicit client boundaries

If you work with that model, Vango apps stay predictable. If you fight it, patch correctness, persistence, and navigation behavior degrade quickly.

Read this in order

  1. Getting Started

  2. Mental Model

  3. Components and Setup

  4. State and Async Work

  5. Building Views with el

  6. Routing and APIs

  7. Forms and Auth

  8. Client Boundaries

  9. Persistence and Deploys

  10. Security and Operations

  11. Testing and Tooling

  12. API Reference

The non-negotiables

  • Use vango.Setup for new stateful components.

  • Allocate reactive primitives unconditionally in Setup.

  • Never allocate reactive primitives in render.

  • Never do blocking I/O on the session loop.

  • Never start manual goroutines in Setup, render, event handlers, OnMount , Effect , or OnChange .

  • Keep route handlers thin and render-only.

  • Never call ctx.Navigate(...) from a page handler or render closure.

  • Use RangeKeyed for dynamic lists.

  • Keep DOM ownership explicit.

  • Persist only deliberate, small durable state.

  • Commit generated routes and state artifacts.

Imports you should reach for first

go
1import "github.com/vango-go/vango"
2import "github.com/vango-go/vango/setup"
3import . "github.com/vango-go/vango/el"

These three packages are the blessed app-authoring surface for almost all normal Vango app code.

Next step

Start with Getting Started if you are new to the framework, or jump straight to Mental Model if you already have a Vango app and want the contracts that matter most.