The WebAssembly.compileStreaming() static method compiles a WebAssembly.Module directly from a streamed underlying source. This function is useful if it is necessary to compile a module before it can be instantiated (otherwise, the WebAssembly.instantiateStreaming() function should be used).

Note: Webpages that have strict Content Security Policy (CSP) might block WebAssembly from compiling and executing modules. For more information on allowing WebAssembly compilation and execution, see the script-src CSP.





A Response object or a promise that will fulfill with one, representing the underlying source of a Wasm module you want to stream and compile.

Return value

A Promise that resolves to a WebAssembly.Module object representing the compiled module.


  • If source is not a Response or Promise resolving to a Response, the promise rejects with a TypeError.
  • If compilation fails, the promise rejects with a WebAssembly.CompileError.
  • If the source is a Promise that rejects, the promise rejects with the error.
  • If the source's Result has an error (e.g. bad MIME type), the promise rejects with an error.


Compile streaming

The following example (see our compile-streaming.html demo on GitHub, and view it live also) directly streams a Wasm module from an underlying source then compiles it to a WebAssembly.Module object. Because the compileStreaming() function accepts a promise for a Response object, you can directly pass it a Promise from calling fetch(), without waiting for the promise to fulfill.

const importObject = {
  my_namespace: { imported_func: (arg) => console.log(arg) },

  .then((module) => WebAssembly.instantiate(module, importObject))
  .then((instance) => instance.exports.exported_func());

The resulting module instance is then instantiated using WebAssembly.instantiate(), and the exported function invoked.


WebAssembly Web API
# dom-webassembly-compilestreaming

Browser compatibility

BCD tables only load in the browser

See also