As WebAssembly grows in adoption and capability, more projects based on this technology are being developed alongside it. Dozens of projects on GitHub, including libraries, frameworks, runtimes, and more, leverage WebAssembly’s portability and security to forward the technology’s use cases across the web, cloud, and beyond. From Walt to Enarx, there’s a project for just about every developer. Below are a few projects to check out this year that are mature, have strong support, and are novel in functionality.
Sycamore
Sycamore is a Rust and WebAssembly-powered library for building reactive web applications without writing a single line of JavaScript. While a newer project on the WebAssembly block, the GitHub repository has 3k+ stars, dozens of contributors, and a Sycamore book similar to Rust’s book. The book highlights Sycamore’s low barrier of entry, as a developer only needs to install Rust, the WebAssembly target, and Trunk (Sycamore is currently developing their own CLI tool) to get started. At its core, Sycamore offers fine-grained reactivity, which means the state is stored in lightweight “signals” and only DOM nodes depending on a changed signal are updated, meaning no virtual-DOM diffing required. This ensures rerenders are minimal and fast.
When launching an application, the trunk serve command spins up hot-reloading speedily, mirroring the convenience of Vite or Next.js. Sycamore offers server-side rendering built-in, so the HTML for the page is sent fully formed to the browser and therefore users can see content immediately without having to wait for JavaScript and WebAssembly to download. To boost interactivity, Sycamore’s server-side rendering ships a small hydration WebAssembly bundle that attaches event listeners and reactive state alongside the component HTML. As a swift and powerful library, Sycamore suits use cases for content-heavy sites where the time to the first byte matters, including news, e-commerce, and blog sites.
WasmCloud
WasmCloud is an open source framework and runtime for building distributed applications using WebAssembly. As an incubating CNCF project, wasmCloud carries strong community support. WasmCloud “runs anywhere” from servers to edge devices, handling common functionalities like messaging, storage, and networking.
WasmCloud leverages WebAssembly components, which are small and sandboxed .wasm files, include the logic of the application and can be written in the developer’s language of choice (as long as it compiles to WebAssembly). Components are stateless and portable, so a component can run the same on a Kubernetes cluster or on a Raspberry Pi. Since the components are sandboxed by design, capability providers implement interfaces, such as wasi:http, and can be swapped out at runtime without recompiling. The wasmCloud host connects to a lightweight NATS server, joining a lattice that handles networking, scaling, and resiliency. The lattice load-balances traffic between the clusters, edge devices, or other components replacing service discovery and sidecars.
Photon
An interesting project to note in the WebAssembly space is Photon, the Rust library for processing images with WebAssembly. Photon offers “safe, blazing fast” image processing natively, on the web, or on Node. The library’s codebase is 100% Rust, which is a plus given the well-founded push to utilize memory-safe languages. Photon can be used to create a snappy client-side photo editor, on-the-fly thumbnail generation Cloudflare edge worker, or a local, privacy-sensitive image processing application.
With tiny WebAssembly modules around 200 KB, Photon provides any host that can run WebAssembly with access to around 100 image-processing functions, including resizing, cropping, filters, color correction, and more. Photon is not only just as capable, but also four to ten times faster than JavaScript even on mobile browsers. Just like other WebAssembly projects, Photon offers strong portability with no platform-specific binaries, so the same .wasm file will work in Chrome, Safari, Node.js, Deno, or elsewhere.
Spin
Spin is an open source framework for building serverless applications out of WebAssembly components. Spin was developed by Fermyon, a company dedicated to developing WebAssembly cloud-based solutions. As a minimalistic configuration, Spin simplifies writing, deploying, and managing serverless functions, called components, using WebAssembly. Spin’s lightweight runtime handles routing, triggers, and integration points, making it easier to compose and deploy serverless applications.
With Spin, each function is a .wasm file and a spin.toml file. The spin.toml file instructs the host to run the component when a request, such as HTTP, Redis, Kafka, or cron event, arrives. Events are wired with just a few lines in the spin.toml file, so no API Gateway or queue setup. The Spin runtime is fast, as in 0.5ms cold-start time fast, so it’s a great option for latency-sensitive applications like chat messaging, gaming, and machine learning inference.
Wrap Up
As WebAssembly develops, so will WebAssembly projects, so keep an eye out for new features and capabilities in these production-ready projects. If you’re interested in learning more about WebAssembly, take a look at articles like How Secure Are WebAssembly Smart Contracts? or WebAssembly’s Moment: Wasm Has Problems, But There’s A Solution.
About the Author
Aleks Jones is a technical trainer and course author at the Linux Foundation, focusing on emerging technologies like WebAssembly and cybersecurity. As an editor for the Evil Tux blog, she evaluates technical articles, sharing insight on artificial intelligence and cybersecurity. In her leisure, she participates in capture the flag competitions.
