Where Skia comes from
This player runs Skia compiled to WebAssembly. That binary is about 8 MB uncompressed and 2.5 MB compressed, so it is not bundled into your JavaScript. By default it’s fetched from a version-pinned CDN:full build specifically. Serve the .wasm with Content-Type: application/wasm and a long cache lifetime.
Options
The promise resolves once assets are warm and the first frame is on screen, so you can hold a loading state until playback is genuinely ready.
The handle is the same as the WebGL player’s:
tick, playing, hasAudio, muted, play(), pause(), seek(tick), setMuted(muted), setInput(name, value), fire(name) and dispose().
Fonts
A font no loader could supply doesn’t throw and doesn’t substitute; the text draws nothing.onPrewarm is how you find out in development instead of in production:
.clayzo carry their fonts; see Bundles.
Performance
Rendering is GPU-backed and cost scales with pixel count. A glass-heavy 1920×1080 document draws in a few milliseconds on a laptop GPU. If a page has to run on hardware without WebGL, reducewidth and height or show a poster frame; effect-heavy documents won’t hit frame rate on a CPU fallback at any sensible size.
Ticks snap to the document’s frame grid, so playback draws exactly the frames the export would. A frame that is still in flight is skipped rather than queued, so playback never drifts into slow motion.
