Docs/Compatibility

Node.js compatibility

Stable

Which Node modules are Stable, what each contract covers, and what stays out.

Amber is not a drop-in Node.js replacement. Each module below is Stable only for the methods named in its contract. Everything else in src/nodejs_core/ is Preview. For a searchable view, use the compatibility page.

Modules and loading

APIIdNotes
CommonJS require, module.exports, require.resolve, createRequireG28 (provisional)node_modules walk, "exports" / "imports" / "main", JSON, TS, and ESM via require. No require.cache; resolve errors have no code.
node: and bare builtin namesG28Loading a builtin does not make its whole API Stable.

File system and paths

APIIdNotes
fs, fs/promisesG8Byte read and write, mkdir, stat, copyFile, rm, realpath, fds, chmod, access, existsSync, readdir dirents, system errors. Async work runs on the isolate thread at the next tick.
fs.watch, fs.watchFileG64 (tentative)Real OS watcher and stat polling. No fs.promises.watch.
pathG17POSIX semantics. path.win32 only changes sep and delimiter.

fs.glob, fs.cp, fs.opendir, and fs.statfs are not implemented.

Core utilities

APIIdNotes
events (EventEmitter)G18No events.on async iterator.
buffer / BufferG19from, alloc, concat, byteLength, toString, slice. compare and readUInt* are outside the pin.
utilG22, G59format, shallow inspect, promisify, callbackify, inherits, listed util.types.
processG22, G44, G53, G54nextTick, env, cwd, pid, platform, stdout.write, hrtime, memoryUsage. Heap fields are estimates; process.on / off are no-ops and not Stable.
osG20, G62, G63Host info, hostname, real networkInterfaces.
querystringG38Fixed & and = separators.
string_decoderG39, G68UTF-8 plus latin1, ascii, base64, hex, utf16le. No base64url.
assertG40, G69ok, strictEqual, deepStrictEqual, throws, match, rejects, and a few more. Loose equal semantics are not pinned.
timers, timers/promisesG42, G50Same functions as the globals; Promise setTimeout and setImmediate with AbortSignal.
tty.isattyG49Always false on Windows today.
vmG55, G66 (tentative)runInThisContext and runInNewContext. Not full Contextify.
diagnostics_channelG56 (tentative)channel pub/sub and tracingChannel.traceSync.
async_hooksG57 (tentative)AsyncResource and AsyncLocalStorage. No createHook.
readlineG46 (tentative)question() on host stdin and stdout only.

Crypto and compression

APIIdNotes
crypto hashes and randomG23createHash, createHmac (md5, sha1, sha256, sha384, sha512, blake3), randomBytes, randomUUID, timingSafeEqual. Returns Uint8Array.
crypto AES ciphersG43, G51, G52createCipheriv / createDecipheriv for AES-CBC, AES-GCM, and AES-CTR.
zlibG21, G48, G58Sync and callback gzip, deflate, and raw deflate.

KDF, sign and verify, key pairs, KeyObject, brotli, and streaming createGzip are not Stable.

Processes and networking

APIIdNotes
child_process syncG25execSync, spawnSync. pid is 0.
child_process asyncG47, G60, G67exec, execFile, spawn with captured output, and fork with JSON IPC. No live stdio pipes.
http serverG37 (tentative)createServer, listen, buffered responses, keep-alive.
net server and clientG45, G61 (tentative)createServer listen and accept; net.connect client.
dnsG27, G65lookup, resolve*, reverse, getServers from the OS resolver.
urlG26POSIX fileURLToPath and pathToFileURL. Legacy parse is outside.
streamG24Readable, Writable, PassThrough. No Transform, Duplex, or pipeline.

Not supported

These fail or reject instead of pretending to work:

  • http.request, http.get, http.Agent, the https module, and http2.
  • Streaming zlib.createGzip family, brotli, and zlib.constants.
  • Node native addons beyond the Experimental N-API hello loader.

Conformance

The Node conformance scorecard in tests/conformance/ is 56/56 on main. See Stability levels for what that number does and does not mean.

Edit this page on GitHub