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

Supported modules

The current compatibility target is Node.js 24.20.0. Implementations that predate that patch retain their pinned Node 24 provenance; node:stream/iter specifically targets the release where it was introduced. The unenv-backed modules are audited against unenv@2.0.0-rc.24; upgrading unenv requires rerunning the compatibility suites.

These entry points are namespaced by two independent versions: the WASI version they adapt Node to, and the Node major they implement. The modules below live under wasi/0.2.x/node/<major>.x.x, where 0.2.x means the latest WASI p2 release and <major>.x.x means any release of that Node major – most modules under 24.x.x, and node:ffi, which does not exist before Node 26, under 26.x.x. Both axes move on their own – Node’s builtin semantics change across majors, and the same module adapted to WASI p3 is a different implementation – so a new Node major or a p3 adaptation is added alongside rather than replacing what is there.

Downstream projects should use explicit versions matching what they target, and Jco pins both when it bundles, so what is being built for is always explicit.

Automatically selecting the right WASI and NodeJS versions at build time, or detecting them, is planned.

Note

To support node/path remains as an alias for wasi/0.2.x/node/24.x.x/path, so imports written before the entry points were versioned keep resolving.

It is the only such alias: modules added after the split, including node:assert, are available only under a versioned entry point.

Each API page describes its implementation, host capabilities, examples, and compatibility limits. Related submodules share their parent API page. See the compatibility overview for setup and bundling.

APINotes
node:assert, node:assert/strictAdapted from the MIT-licensed Node.js 24 implementation. Requires no WIT capability.
node:async_hooksSynchronous scopes only. Requires no WIT capability. Asynchronous use is refused rather than silently losing the store.
node:bufferCovers the commonly used modern Buffer operations. Jco controls deprecated and runtime-dependent exports.
node:child_processSynchronous APIs over an explicit application-provided host capability; denied by default.
node:clusterPrimary/worker control over an explicit host capability. Partly unsupported.
node:consoleGuest console over an explicit application-provided host capability; denied by default, so every call throws until the application maps a provider.
node:cryptoSynchronous SHA-1/SHA-256 hash and HMAC helpers; randomness delegates to engine WebCrypto. Other operations have explicit limits.
node:dgramUDP sockets over an explicit host capability; denied by default. StarlingMonkey supports the Node passthrough.
node:diagnostics_channelChannels and tracing channels. Requires no WIT capability. Bound stores are scoped synchronously.
node:dns, node:dns/promisesName resolution over an explicit host capability; denied by default.
node:domainDeprecated upstream in its entirety. Resolves so the failure explains itself; every use throws ERR_JCO_UNSUPPORTED_DEPRECATED_NODE_API.
node:eventsCovers the complete Node 24 module surface, including the on() async iterator and EventEmitterAsyncResource. Requires no WIT capability.
node:ffiNode 26 only. Native calls and host memory over an explicit host capability; denied by default. Callbacks and guest-buffer addresses are refused.
node:fs, node:fs/promisesSynchronous, callback, and promise facades over an explicit filesystem capability; denied by default.
node:httpClient and server APIs over a selectable direct, Preview 2 sockets, or Preview 2 WASI HTTP implementation. Servers need direct or wasi-sockets.
node:http2Client and server sessions over selectable direct or WASI socket implementations.
node:httpsThe node:http core with the https: profile and a TLS-aware Agent; same implementation selection. TLS uses jco:node/tls, optionally delegating to wasi:tls.
node:inspector, node:inspector/promisesSession, console, and broadcast surface over an explicit host capability; denied by default. The host calls back through a guest-exported interface.
node:moduleClassification, source maps and require.resolve are exact. Everything that loads throws ERR_JCO_UNSUPPORTED_NODE_API. Requires no WIT capability.
node:netTCP clients, servers, and address utilities over Preview 2 wasi:sockets; native handles and IPC are unsupported.
node:osMachine and user information over an explicit host capability; denied by default. Static POSIX constants resolve without a provider.
node:path, node:path/posix, node:path/win32Jco’s portable path implementation, connected to wasi:cli/environment for the guest working directory and environment.
node:perf_hooksPortable timing and observers; native telemetry throws. See the API page for runtime requirements.
node:processHost process state and operations over jco:node/process@0.1.0; lazy default properties, named functions and objects. See the API page for process restrictions.
node:querystringCovers the complete Node 24 module surface and shares the audited Buffer core used by node:buffer.
node:readline, node:readline/promisesNode 24.20 line parsing, questions, terminal editing and cursor actions over supplied streams. No WIT capability.
node:replNode 24.20 REPL over the readline port and supplied streams; useGlobal: true only, bundles acorn. No WIT capability.
node:sqliteSQLite over an explicit typed host capability; denied by default. Synchronous SQL callbacks are unsupported.
node:stream, node:stream/promisesClassic streams, pipelines, operators, disposal, and Web adapters. No WIT capability.
node:stream/consumersPortable Node 24 collection helpers over async iterables and engine globals. Requires no WIT capability.
node:stream/iterExperimental Node 24.20 iterable streams. Requires no WIT capability. Classic output adapters are explicitly unsupported.
node:string_decoderGuest-local streaming decoder for Node 24. Requires no WIT capability.
node:test, node:test/reportersSerial component tests, hooks, assertions, mocks, and reporters. No additional WIT imports. Runner requires engine AbortController; see the API page for engine limits.
node:timers, node:timers/promisesNode 24 timer handles and promise timers over engine task scheduling; see the API page for runtime limits.
node:tlsEncrypted sockets, contexts, and inspection over jco:node/tls; denied by default.
node:trace_eventsCategory control and real host trace capture through an explicitly mapped provider. Denied by default.
node:ttyNode 24.20 isatty, ReadStream and WriteStream over the host process’s descriptors through an explicit host capability; denied by default.
node:urlNode 24 URL, URLSearchParams, URLPattern, domain and file conversions; relative file paths use optional WASI environment imports.
node:util, node:util/typesPortable Node 24 utilities, sharing assertion equality and console formatting. No WIT capability; see the API page for engine and process restrictions.
node:v8Native V8 serialization, host heap diagnostics and profiling through an explicit provider; guest engine hooks are unsupported.
node:vfsNode 26 memory VFS, default-denied Node passthrough, and WASI filesystem storage with configurable preopen placement.
node:vmSame-context script evaluation and function compilation in the guest. No WIT capability; separate realms, native caches and VM modules are unsupported.
node:wasiNode 24.19 WASI construction over an explicit host capability, denied by default; start() and initialize() refuse because a component cannot instantiate a nested module.
node:worker_threadsReal Node host workers over an explicit capability, with guest-local environment data. Native ports, shared memory and profiling are unsupported.
node:zlibNative zlib, Brotli and Zstandard through an explicit compression capability; denied by default.

Globals and Errors document runtime-wide Node.js APIs. They are not importable as node:globals or node:errors.