- Go developers can be competitive frontend developers.
- Share Go code between your frontend & backend.
- Reusability by sharing components via Go packages so that others can simply import them.
- Designed from the ground up to be easily mastered by newcomers (like Go).
- Efficient & understandable performance, small bundle sizes, same performance as raw JS/HTML/CSS.
- Nest components to form your entire user interface, seperating them logically as you would any normal Go package.
- Designed for Go (implicit)
- Written from the ground up asking the question "What is the best way to solve this problem in Go?", not simply asking "How do we translate $POPULAR_LIBRARY to Go?"
- Small bundle sizes: 0.5 MB hello world (see section below).
- Fast expectation-based browser DOM diffing ('virtual DOM', but less resource usage).
Vecty is currently considered to be an experimental work-in-progress. Prior to widespread production use, we must meet our v1.0.0 milestone goals, which are being completed slowly and steadily as contributors have time (Vecty is over 4 years in the making!).
Early adopters may make use of it for real applications today as long as they are understanding and accepting of the fact that:
- APIs will change (maybe extensively).
- A number of important things are not ready:
- Extensive documentation, examples and tutorials
- URL-based component routing
- Ready-to-use component libraries (e.g. material UI)
- Server-side rendering
- And more, see milestone: v1.0.0
- The scope of Vecty is only ~80% defined currently.
- There are a number of important open issues.
For a list of projects currently using Vecty, see the doc/projects-using-vecty.md file.
Small bundle sizes
Vecty uses extremely minimal dependencies and prides itself on producing very small bundle sizes (mostly limited by the compiler), making it suitable for modern web development:
|Example||Compiler||Bundle size||Compressed (gzip)|
||Go + WebAssembly||2.3 MB||0.5 MB|
||Go + WebAssembly||4.2 MB||0.9 MB|
||Go + WebAssembly||3.4 MB||0.7 MB|
||GopherJS||0.5 MB||0.1 MB|
||GopherJS||2.6 MB||0.4 MB|
||GopherJS||1.7 MB||0.3 MB|
See the doc/CHANGELOG.md file.