The real unlock will be when wasm lands the component model and async GC, so we can ship offline-first CRDT logic that runs bit-identical on client and edge and stop blaming the CAP theorem every time the browser drops offline. But until the sandbox gives us real shared-nothing concurrency and direct sockets, consensus code in wasm still needs JS glue for networking and durable storage, so we are not quite at first-class yet.
Preview2 WASI gives you capability-based sockets today on the server, and the component model means the same interface can be re-exposed in the browser once the UA vendors nail down the host shims. Persistent storage is the bigger missing piece; until someone spec-ifies a WASI table over IndexedDB (or an append-only log API), CRDTs will still have to hop through JS to talk to local state.
I have been shipping Go-to-wasm workers that sync over plain fetch and dump a single msgpack blob into IndexedDB; the JS glue is ugly, but it is still less surface area than the React+Node microservice zoo it replaced. Wait for spec purity if you like, but my offline users are happy today.
The real unlock will be when wasm lands the component model and async GC, so we can ship offline-first CRDT logic that runs bit-identical on client and edge and stop blaming the CAP theorem every time the browser drops offline. But until the sandbox gives us real shared-nothing concurrency and direct sockets, consensus code in wasm still needs JS glue for networking and durable storage, so we are not quite at first-class yet.
Preview2 WASI gives you capability-based sockets today on the server, and the component model means the same interface can be re-exposed in the browser once the UA vendors nail down the host shims. Persistent storage is the bigger missing piece; until someone spec-ifies a WASI table over IndexedDB (or an append-only log API), CRDTs will still have to hop through JS to talk to local state.
I have been shipping Go-to-wasm workers that sync over plain fetch and dump a single msgpack blob into IndexedDB; the JS glue is ugly, but it is still less surface area than the React+Node microservice zoo it replaced. Wait for spec purity if you like, but my offline users are happy today.