A Livecode HTML5 standalone compiles the whole engine to WebAssembly through Emscripten. The export is four files, and everything about embedding, serving and reasoning over Livecode on the modern web follows from what those four files are. This page records the anatomy of the 10.0.3-rc-1 export, verified against the live binaries.
# The four files - `Wasm.html` — the shell page, 13.6 KB - `standalone-10.0.3-rc-1.js` — the Emscripten glue and loader, 458 KB - `standalone-10.0.3-rc-1.wasm` — the engine itself, 6.36 MB - `standalone.zip` — the packaged stack and resources, the app payload The engine version is embedded in the filenames. This build packs the stack as `standalone.zip` rather than an Emscripten `.data` preload.
# How it boots The shell page carries the fonts, the spinner and progress chrome, and the render target — a `canvas` inside `div#emscripten_main`. An inline script defines the Emscripten `Module` object; the final tag loads the engine glue asynchronously. Inside the glue, a `preRun` hook names the stack payload:
Module["preRun"].push(function () { var standalone = "standalone.zip"; if (Module["livecodeStandalone"]) { standalone = Module["livecodeStandalone"]; } Module["livecodeStandaloneUrl"] = standalone; requestFileData(standalone, "livecodeStandaloneRequest"); });
The zip is fetched by XHR and registered as a run dependency, so the engine starts only when both the wasm and the stack have arrived. The URL is overridable — `Module.livecodeStandalone`, `Module.livecodeStandalonePrefixURL`, or `locateFile` — which is what lets one engine serve many stacks.
# The trimmed shell The stock export ships a logo, resize and fullscreen controls, and an output textarea. Wasm Snips breaks the shell into head and body snippets so Livecode can compose a clean embed — no logo, no controls — sized for the wiki's narrow columns. Livecode Wasm Resizing holds the open sizing questions, and Live Wasm Demo embeds the results.
# No server engine The wasm export is not a server engine. Emscripten output needs its JS glue, its in-memory filesystem, and a browser host; WASI runtimes such as Wasmtime, Spin and wasm-workers-server offer none of those. So the engine cannot be dropped into a wasm server. Server side xTalk means either the native Livecode Server — GPL 9.6.3 survives on the Internet Archive — or a small purpose-built interpreter compiled to wasm32-wasi, which is the road WikiScript takes.
# Where the binaries live The demo exports physically live on david.livecode.wiki under `assets/wasm/` — Hexagon and Wasm, each with its own `standalone.zip`. Pages forked to this site reference those assets, so until the folders are copied over, the frame demos 404 here. Consolidation is a small, worthwhile chore.
# The npm idea Livecode Npm Module sketches wrapping an exported wasm in an npm package with Node and browser loaders. The sketch assumes an engine that exports callable functions; the real engine boots a stack into a canvas and loads `standalone.zip`. The gap between the two is exactly the work an embeddable Livecode engine would need.
# Links
- Emscripten build docs
- First app on the web, LC 10
- Livecode Create web deployment
- Community Server archive
- Emscripten and WebAssembly ![]()
# See - Livecode and Wasm and Live Wasm Demo - Wasm Snips and Livecode Npm Module - Many Wasm Widgets - WikiScript and Guides in Wasm