Skip to content
Latchkey

Rust wasm32 Build Failures - Native Deps & getrandom in CI

A build for a wasm32 target failed because a dependency relies on native code or OS facilities that don’t exist in wasm - the classic being getrandom having no entropy source on wasm32-unknown-unknown without the js backend enabled.

What this error means

A --target wasm32-unknown-unknown (or wasm32-wasi) build fails with a compile error from a dependency about an unsupported target, missing OS APIs, or getrandom not being supported. The same crate builds fine for a native target.

cargo output
error: the wasm32-unknown-unknown targets are not supported by default; you may
need to enable the "js" feature. For more information see:
https://docs.rs/getrandom/#webassembly-support
   --> getrandom/src/lib.rs

Common causes

A dependency needs a wasm-specific backend

getrandom (pulled in by rand, uuid, etc.) has no entropy source on bare wasm32-unknown-unknown. It needs the js feature (browser) or a custom backend, or the build fails.

Native-only code in the dependency graph

A crate using C bindings, threads, filesystem, or other OS facilities not available on wasm can’t compile for the target unless those parts are feature-gated off.

How to fix it

Enable the wasm backend for getrandom

For browser-targeted wasm, turn on the js feature so getrandom has an entropy source.

Cargo.toml
[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2", features = ["js"] }

Gate native dependencies off for wasm

  1. Use a cfg(not(target_arch = "wasm32")) target table for native-only crates.
  2. Disable default features that pull in OS/native code on the wasm target.
  3. Use wasm32-wasi instead of unknown-unknown when you need a fuller std/OS surface.

How to prevent it

  • Configure getrandom/RNG backends per the wasm target before building.
  • Target-gate native-only dependencies with cfg(target_arch = ...).
  • Build the wasm target in CI so unsupported deps surface on every PR.

Frequently asked questions

What causes "wasm32 build failure"?
getrandom (pulled in by rand, uuid, etc.) has no entropy source on bare wasm32-unknown-unknown. It needs the js feature (browser) or a custom backend, or the build fails.
How do I fix wasm32 build failure?
For browser-targeted wasm, turn on the js feature so getrandom has an entropy source.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card