Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. vert

vert

MITGo

A Go package providing seamless WebAssembly interop between Go structs and JavaScript values.

GitHubGitHub
108 stars16 forks0 contributors

What is vert?

Vert is a Go package that provides enhanced WebAssembly interoperability between Go and JavaScript values. It solves the limitation in Go's standard `syscall/js` package which cannot handle struct types, enabling seamless conversion of Go structs to JavaScript objects and vice versa.

Target Audience

Go developers building WebAssembly applications that need to exchange complex data structures between Go and JavaScript, particularly those working with WebAssembly in the browser.

Value Proposition

Vert offers a simple, idiomatic API that extends Go's standard WebAssembly support to handle structs and objects, eliminating the need for manual serialization/deserialization when passing complex data between Go and JavaScript.

Overview

WebAssembly interop between Go and JS values.

Use Cases

Best For

  • Converting Go structs to JavaScript objects in WebAssembly applications
  • Passing complex data structures between Go and JavaScript in WASM
  • Building Go WebAssembly applications that interact with browser APIs
  • Extending Go's standard syscall/js package with struct support
  • Creating type-safe WebAssembly bindings between Go and JavaScript
  • Handling tagged struct fields with custom JavaScript property names

Not Ideal For

  • Projects that only exchange primitive data types and don't need struct conversion, where Go's standard syscall/js is sufficient
  • Applications built with other WebAssembly languages like Rust or AssemblyScript, as Vert is Go-specific
  • Teams needing a full WebAssembly framework with UI components or server-side rendering, as Vert focuses only on data interop

Pros & Cons

Pros

Seamless Struct Conversion

Vert automatically converts Go structs to JavaScript objects, solving the syscall/js limitation that panics on struct types, as shown in the examples.

Custom Field Mapping

Supports struct field tags to define custom JavaScript property names, enabling flexible interop without manual serialization, demonstrated in the tagged fields example.

Robust Error Handling

The AssignTo method returns errors for safe value assignment, providing better reliability compared to panics in the standard library, as highlighted in the error handling section.

Idiomatic Go Integration

Builds upon syscall/js with a minimal API that feels natural to Go developers, adhering to the project's philosophy of seamless standard library extension.

Cons

Go-Specific Dependency

Vert is tightly coupled with Go's WebAssembly ecosystem, making it unsuitable for polyglot projects or those using other languages like Rust for WASM.

Limited Documentation Scope

The README provides only basic examples, lacking guidance on advanced use cases like nested structs or performance tuning, which could hinder complex implementations.

Performance Overhead Unclear

No benchmarks or details on conversion overhead are provided, which might be a concern for data-intensive applications requiring high-frequency interop.

Frequently Asked Questions

Quick Stats

Stars108
Forks16
Contributors0
Open Issues1
Last commit3 years ago
CreatedSince 2018

Tags

#javascript-interop#interop#webassembly#go-library#wasm-bindings#golang#go#type-conversion

Built With

G
Go
W
WebAssembly

Included in

Go169.1k
Auto-fetched 1 day ago

Related Projects

tinygotinygo

Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.

Stars17,476
Forks1,047
Last commit2 days ago
domdom

DOM library for Go and WASM

Stars504
Forks58
Last commit6 years ago
go-canvasgo-canvas

Library to use HTML5 Canvas from Go-WASM, with all drawing within go code

Stars271
Forks21
Last commit5 years ago
wasmbrowsertestwasmbrowsertest

Run WASM tests inside your browser

Stars207
Forks27
Last commit2 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub