2025-10-31 01:50:43 -01:00
2025-10-31 00:58:53 -01:00
2025-10-26 00:49:55 +00:00
2025-10-31 00:58:53 -01:00
2025-10-31 00:58:53 -01:00
2025-10-31 00:58:53 -01:00
2025-10-26 00:49:55 +00:00
2025-10-31 01:50:43 -01:00
2025-10-31 00:58:53 -01:00
2025-10-31 00:58:53 -01:00

Via

Pure Go reactive web framework.

Why Via?

Somewhere along the way, the web became tangled in layers of JavaScript, build chains, and frameworks stacked on frameworks. Via takes a radical stance:

  • No templates.
  • No JavaScript.
  • No transpilation.
  • No hydration.
  • No front-end fatigue.
  • Single SSE stream.
  • Full reactivity
  • Pure Go.

Example

package main

import (
	"github.com/go-via/via"
	"github.com/go-via/via/h"
)

type CounterState struct{ Count int }

func main() {
	v := via.New()
	v.Page("/", func(c *via.Context) {

		s := CounterState{Count: 0}

		step := c.Signal(1)

		increment := c.Action(func() {
			s.Count += step.Int()
			c.Sync()
		})

		c.View(func() h.H {
			return h.Div(
				h.P(h.Textf("Count: %d", s.Count)),
				h.Label(
					h.Text("Update Step: "),
					h.Input(h.Type("number"), step.Bind()),
				),
				h.Button(h.Text("Increment"), increment.OnClick()),
			)
		})
	})

	v.Start(":3000")
}

⚠️Via is in it's infancy. Things will break often.

Contributing

Via is intentionally minimal — and so is contributing.

If you love Go, precision, and small, meaningful abstractions — Come along for the ride.

Fork, branch, build, break things.

Follow the loop: Via → Context → State/Signals → View.

Keep every line purposeful.

Credits

Via builds upon the work of these amazing projects:

  • Datastar - The hypermedia powerhouse powering Via's browser reactivity and real-time HTML and signal patches over a always-on SSE event stream.
  • Gomponents - The awesome project that enables Via's Go-native HTML UI composition through the via/h package.
Description
Reactive real-time web engine for Go
Readme MIT 15 MiB
v0.23.0 Latest
2026-02-20 21:38:03 +00:00
Languages
Go 97.6%
CSS 1.2%
JavaScript 0.7%
Shell 0.5%