The TinyWasm project focuses on providing libraries for building applications with web technologies using Go as the main language, compiling to the frontend via WebAssembly with the minimum possible binary size (TinyGo compatibility first).
Go's WebAssembly potential is incredible, but traditional applications face a critical challenge: massive binary sizes that make web deployment impractical.
Every Go project needs string manipulation, type conversion, and error handling - but importing standard library packages (fmt, strings, strconv, errors) creates significant binary bloat that hurts:
- 🌐 Web app performance - Slow loading times and poor user experience
- 📱 Edge deployment - Resource constraints on small devices
- 🚀 Distribution efficiency - Large binaries for simple operations
TinyWasm provides lightweight, manual implementations that deliver:
- 🏆 Drastic size reduction - Optimized for WebAssembly
- ✅ Full TinyGo compatibility - No compilation issues or warnings
- 🎯 Predictable performance - No hidden allocations or overhead
- 🔧 Familiar API - Drop-in replacement for standard library functions
The main framework for development is tinywasm/app. It serves as the primary tool for building, watching, and deploying your TinyWasm applications.
| Package | Description | Status |
|---|---|---|
| app | Full stack TUI development environment with live reload, test, deploy, CI/CD for web applications (PWA). | 🚧 In Development |
| assetmin | A lightweight and efficient web asset packager and minifier for Go applications. | ✅ Ready |
| binary | High-performance binary serialization library for Go, specifically designed for TinyGo compatibility. | ✅ Ready |
| broker | A lightweight broker that mediates HTTP requests and responses. | 🚧 In Development |
| bus | Minimal pub/sub event bus for the tinywasm ecosystem. | ✅ Ready |
| cdproto | Generated commands, types, and events for the Chrome DevTools Protocol domains. | ✅ Ready |
| chromedp | A faster, simpler way to drive browsers supporting the Chrome DevTools Protocol. | ✅ Ready |
| client | Tinywasm compilation toolbox designed to streamline the compilation of Go packages to WebAssembly. | 🚧 In Development |
| components | HTML components for the go web framework tinywasm. | 🚧 In Development |
| context | Minimalist context library for TinyGo. | ✅ Ready |
| crudp | A simple binary CRUD protocol for Go structs. | ✅ Ready |
| crypto | CryptoAutoLib port for TinyGo. | ✅ Ready |
| deploy | Automated deployment service for Go applications. | 🚧 In Development |
| depfind | A Go tool to find reverse dependencies - lists packages that import specified target packages. | ✅ Ready |
| devbrowser | Lightweight Go library for launching and controlling web browsers programmatically. | ✅ Ready |
| devflow | Complete Go development automation: project init, testing, versioning, updates, and backups. | ✅ Ready |
| devtui | Reusable terminal user interface abstraction for Go development tools. | 🚧 In Development |
| devwatch | fsnotify implementation that watches file system changes in a project directory. | ✅ Ready |
| dom | Ultra-minimal DOM & event toolkit for Go (TinyGo WASM-optimized). | ✅ Ready |
| fetch | A lightweight Go library that unifies HTTP requests across environments. | ✅ Ready |
| fmt | Lightweight Go library that provides comprehensive string manipulation and formatting. | ✅ Ready |
| form | Form generation using DOM and structs. | 🚧 In Development |
| gobuild | Minimal build handler for compiling Go or WebAssembly targets via CLI. | ✅ Ready |
| goflare | Lightweight handler for building and deploying Go-based WebAssembly and JavaScript modules to Cloudflare. | 🚧 In Development |
| gorun | Go package to run, monitor, and stop external programs. | ✅ Ready |
| imagemin | Image size reduction tool for web projects. | ✅ Ready |
| indexdb | IndexDB implementation with WebAssembly compiled with Go. | 🚧 In Development |
| json | A lightweight JSON wrapper for Go that optimizes WebAssembly binary size. | ✅ Ready |
| jsvalue | Efficient conversions between JavaScript and Go for a WebAssembly environment. | ✅ Ready |
| keyring | A secure credentials manager using DPAPI. | ✅ Ready |
| kvdb | TinyGo–compatible key–value store with a minimal API. | ✅ Ready |
| mcp | Go implementation of the Model Context Protocol (MCP). | ✅ Ready |
| mcpserve | MCP server for TinyWasm ecosystem. | 🚧 In Development |
| modules | Common isomorphic modules for SSR and CSR (WebAssembly) compatible with TinyGo. | 🚧 In Development |
| passkeys | Demo/Example of how to add passkeys. | 🎨 Design |
| PDF library designed for web rendering with WebAssembly, optimized for TinyGo compatibility. | ✅ Ready | |
| pwa | Experimental / Placeholder. | 🎨 Design |
| rbac | RBAC implements Role-Based Access Control to manage roles and permissions. | ✅ Ready |
| screenshot | Go library to capture desktop to image. | ✅ Ready |
| server | Go package that encapsulates the logic for running a development and production server. | 🚧 In Development |
| site | Minimal site rendering engine for Go (WASM-friendly). | 🚧 In Development |
| sqlite | WebAssembly-first port of modernc.org/sqlite. | 🚧 In Development |
| sse | Client and event server, SSE protocol compatible with TinyGo. | ✅ Ready |
| test-permissions | Test permissions repository. | 🎨 Design |
| time | TinyGo-compatible time package for Go. | ✅ Ready |
| unixid | Go library for generating unique, time-based IDs using Unix timestamps. | ✅ Ready |
| user | User management library. | 🚧 In Development |
| wasi | WASI runtime for tinywasm. | 🚧 In Development |
| wasmbrowsertest | Run WASM tests inside your browser. | ✅ Ready |
| wizard | Modular, pluggable wizard orchestrator for TinyGo applications. | 🚧 In Development |