Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Support Matrix

Caution

WASM Threading is not standized. Rust and wasm-bindgen frequently change the RUSTFLAGS needed to compile with threading support enabled. If you cannot build with the example .cargo/config.toml in this guide, please open an issue on GitHub.

See the source-of-truth for cargo configs Here

Note

This page is last updated on: 2026-08-23

Toolchain minimum versions

  • Rust: Nightly 2026-05-06 (latest tested 1.100.0-nightly)
    • Nightly toolchain is required
  • Wasm-bindgen: >=0.2.127
  • Wasm-pack: master

    Note

    The current latest stable version 0.15.0, has a version of binaryen over 2 years old. The master branch contains a new version required to parse some syntax in the DeadCodeElimination pass.

    You can install wasm-pack from GitHub directly with

    cargo install wasm-pack --git https://github.com/wasm-bindgen/wasm-pack --branch master
    

Engine minimum versions

The JS engine must support the Exception Handling with exnref and Threading WASM features. See WebAssembly Feature Status for the most up-to-date version matrix.

The test suite in this project runs all examples on Google Chrome, Microsoft Edge, Firefox, Webkit, NodeJS v24, NodeJS v26, Deno and Bun. You can use the Playground to run the examples with your current browser.

  • Chromium >=151.0
  • Firefox >=153.0
  • Webkit >=revision 2092
  • NodeJS >=24.15 (latest tested 24.19.0)
    • Earlier versions may work through the --experimental-wasm-exnref flag
  • Deno >=2.3.2 (latest tested 2.9.5)
    • *Note that Deno has an issue it takes ~5x longer to spin up a worker compared to other engines.
  • Bun >=1.3.14 (latest tested 1.4.0)
    • *Note that Bun has an issue where it sometimes segfaults when trying to glow WASM memory.

Warning

Even though technically the versions can be relaxed if you do not use panic=unwind (meaning you do not need support for Exception Handling with exnref), the test suite only runs for the versions indicated above. Lower engine versions are not guaranteed to work since there can be subtle bugs or behavior differences in the APIs that we depend on.

wasm-pack Target Support

Target\EngineChromium1Firefox1Webkit1NodeJS2Deno3Bun2
no-modules
web
nodejs4,7
deno4,5
bundler4,5,6

Notes:

  • 1: Browsers use WebWorker API
  • 2: NodeJS and Bun use node:worker_threads API
  • 3: Deno uses Worker API because there were issues with node:worker_threads in the test harness setup. However this might change in the future if the test harness can workaround this issue.
  • 4: Targets other than no-modules and web are supported, but you have to also generate the bindgen script for either no-modules or web. See Setup Guide for more details.
  • 5: Additional setup is needed because bundler and deno target does not support the wasm_bindgen::module() API. See Setup Guide for more details.
  • 6: None of the engines can natively import the package generated by the bundler target. The test suite uses vite with the vite-plugin-wasm plugin.
  • 7: The nodejs target generates CommonJS and is not recommended if your project is modern and uses ESM. You either need to rename the generated script to .cjs extension or remove "type": "module" from package.json, which may have additional consequences.