JavaScript toolchain for working with WebAssembly Components
1,001
stars
1,935
commits
Rust
primary language
Sep 11, 2026
updated
jcoJavaScript tooling for WebAssembly Components
A Bytecode Alliance project
Jco (jco) provides a Javascript-native toolchain for working with WebAssembly Components.
Jco aims to be a convenient multi-tool for the JS WebAssembly ecosystem.
With Jco (and related projects in this repository), you can:
jco scaffoldcomponentize-js or componentize-qjswasmtime run/wasmtime serve)wasm-tools as a library from JSAs Jco aims to do many things, it contains many subprojects that are organized in this repository:
| Subproject | Language | Directory | Description |
|---|---|---|---|
jco | Javascript | packages/jco | The jco CLI |
jco-transpile | Javascript | packages/jco-transpile | WebAssembly Component Transpilation functionaltiy |
jco-std | Javascript | packages/jco-std | A "standard library" for Jco which provides integrations for popular JS frameworks/paradigms |
preview2-shim | Javascript | packages/preview2-shim | Library that provides a mapping of WASI Preview 2 for NodeJS and Browsers |
preview3-shim | Javascript | packages/preview3-shim | Library that provides a mapping of WASI Preview 3 for NodeJS |
rolldown-plugin-jco | Javascript | packages/rolldown-plugin-jco | Rolldown and Rollup plugin for importing WebAssembly Components through Jco |
js-component-bindgen | Rust | crates/js-component-bindgen | Enables jco transpile and other features, reusing the Rust WebAssembly ecosystem |
js-component-bindgen-component | Rust | crates/js-component-bindgen-component | WebAssembly component that (when transpiled) makes js-component-bindgen available in JS jco |
wasm-tools-component | Rust | crates/wasm-tools-component | WebAssembly component containing pieces of wasm-tools used by jco |
Jco can be used as either a library import or as a CLI via the jco command.
To install it, use pnpm:
pnpm install @bytecodealliance/jco
[!NOTE] If you're using jco to build components, you should also install
componentize-js, which is dynamically imported:pnpm install @bytecodealliance/componentize-js
Create a TypeScript component project from a WIT file or package directory:
jco scaffold my-component --wit path/to/wit
cd my-component
pnpm install
pnpm check
pnpm test
pnpm build
The generated repository includes everything you need to get started:
[!NOTE] See the Jco Book for language, world, target, and package-manager options.
For more instructions on how to build an example component, see the Component model section on Javascript.
To see examples of common patterns, check out the example components folder (examples/components).
For a deeper guide on the intricacies of Jco, read the Jco Book.
jco and jco-transpile are tested against the current stable version (even numbered release) of NodeJS and
two versions before that one (e.g. if the current NodeJS version is 26.x, 24.x and 22.x are covered under CI)
If installing on Node 18.x with a version of @bytecodealliance/componentize-js 0.18.3 or above, you may need to install oxc-parser manually.
For example, on linux this would mean the following:
pnpm install oxc-parser --ignore-engines
pnpm install @oxc-parser/binding-linux-x64-gnu --ignore-engines
It may be necessary to replace @oxc-parser/binding-linux-x64-gnu with whatever platform is appropriate.
[!NOTE] If you are using pnpm instaed of pnpm, similar installation issues may occur when using an
npmversion older than 11.3.0, due tonpmbugs related to optional dependencies
This project is licensed under the Apache 2.0 license with the LLVM exception. See LICENSE for more details.
See the Contributing chapter of the Jco book.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
(top 30 of 76)
Rust
50.3%
TypeScript
39.4%
JavaScript
9.3%
JavaScript toolchain for working with WebAssembly Components
1,001
stars
1,935
commits
Rust
primary language
Sep 11, 2026
updated
jcoJavaScript tooling for WebAssembly Components
A Bytecode Alliance project
Jco (jco) provides a Javascript-native toolchain for working with WebAssembly Components.
Jco aims to be a convenient multi-tool for the JS WebAssembly ecosystem.
With Jco (and related projects in this repository), you can:
jco scaffoldcomponentize-js or componentize-qjswasmtime run/wasmtime serve)wasm-tools as a library from JSAs Jco aims to do many things, it contains many subprojects that are organized in this repository:
| Subproject | Language | Directory | Description |
|---|---|---|---|
jco | Javascript | packages/jco | The jco CLI |
jco-transpile | Javascript | packages/jco-transpile | WebAssembly Component Transpilation functionaltiy |
jco-std | Javascript | packages/jco-std | A "standard library" for Jco which provides integrations for popular JS frameworks/paradigms |
preview2-shim | Javascript | packages/preview2-shim | Library that provides a mapping of WASI Preview 2 for NodeJS and Browsers |
preview3-shim | Javascript | packages/preview3-shim | Library that provides a mapping of WASI Preview 3 for NodeJS |
rolldown-plugin-jco | Javascript | packages/rolldown-plugin-jco | Rolldown and Rollup plugin for importing WebAssembly Components through Jco |
js-component-bindgen | Rust | crates/js-component-bindgen | Enables jco transpile and other features, reusing the Rust WebAssembly ecosystem |
js-component-bindgen-component | Rust | crates/js-component-bindgen-component | WebAssembly component that (when transpiled) makes js-component-bindgen available in JS jco |
wasm-tools-component | Rust | crates/wasm-tools-component | WebAssembly component containing pieces of wasm-tools used by jco |
Jco can be used as either a library import or as a CLI via the jco command.
To install it, use pnpm:
pnpm install @bytecodealliance/jco
[!NOTE] If you're using jco to build components, you should also install
componentize-js, which is dynamically imported:pnpm install @bytecodealliance/componentize-js
Create a TypeScript component project from a WIT file or package directory:
jco scaffold my-component --wit path/to/wit
cd my-component
pnpm install
pnpm check
pnpm test
pnpm build
The generated repository includes everything you need to get started:
[!NOTE] See the Jco Book for language, world, target, and package-manager options.
For more instructions on how to build an example component, see the Component model section on Javascript.
To see examples of common patterns, check out the example components folder (examples/components).
For a deeper guide on the intricacies of Jco, read the Jco Book.
jco and jco-transpile are tested against the current stable version (even numbered release) of NodeJS and
two versions before that one (e.g. if the current NodeJS version is 26.x, 24.x and 22.x are covered under CI)
If installing on Node 18.x with a version of @bytecodealliance/componentize-js 0.18.3 or above, you may need to install oxc-parser manually.
For example, on linux this would mean the following:
pnpm install oxc-parser --ignore-engines
pnpm install @oxc-parser/binding-linux-x64-gnu --ignore-engines
It may be necessary to replace @oxc-parser/binding-linux-x64-gnu with whatever platform is appropriate.
[!NOTE] If you are using pnpm instaed of pnpm, similar installation issues may occur when using an
npmversion older than 11.3.0, due tonpmbugs related to optional dependencies
This project is licensed under the Apache 2.0 license with the LLVM exception. See LICENSE for more details.
See the Contributing chapter of the Jco book.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
(top 30 of 76)
Rust
50.3%
TypeScript
39.4%
JavaScript
9.3%