VulCode
Plazer in the browser: what loads at start and what waits until it is needed
Technology

Plazer in the browser: what loads at start and what waits until it is needed

A Rust encryption core shipped as WebAssembly and split into a start part and the rest, and camera effects fetched on first use: figures measured on the web version

DualFroz - VulCode CEODualFroz - VulCode CEO·24 October 2026·2 min read

Plazer encrypts private conversations and groups with a Rust core shared with its native apps, shipped to the browser as WebAssembly. Encryption, voice, video effects and server settings add up to a lot of code, so each part arrives only when needed. The figures come from measuring the web version: a cold start in Chromium with the cache off, each file compressed on its own with gzip -9.

What the browser fetches, and when

PartCompressedWhen
English sign-in screen, with its font105 kB in 24 fileson the first visit
Encryption core, start part536 kBon every start after signing in
Encryption core, the rest239 kBon password sign-in, registration, pairing a device, private groups and sending in encrypted conversations
Blurred or replaced camera background3.76 MB: the MediaPipe engine in WebAssembly, its model and the effect's codewhen a background effect is first turned on

The background effect alone weighs 36 times the sign-in screen, and whoever never uses it never downloads a byte.

A split the linker decides

Function names do not decide what moves to the rest. A split script reads the relocations rust-lld leaves with --emit-relocs: calls, function indices in tables and data addresses. A function moves only when no start path reaches it, so a start never runs into missing code. Binaryen's wasm-split then moves those functions, and wasm-opt optimises each part separately. An encrypted conversation's message box starts fetching the rest with the first word typed, so a send rarely waits, and an end-to-end test checks that a start alone never fetches it.

How Plazer was built is in its case study, and custom web apps are on our web apps and PWA page.