Skip to content

Node.js API Compatibility

Status of Node.js built-in module support in howth.

Legend: Full = all common APIs work | Partial = key APIs work, some missing | Stub = exists for import compat, limited function | Missing = not present

Core Modules

ModuleStatusNotes
assertFullstrict mode, deep equality, rejects/doesNotReject
async_hooksPartialAsyncLocalStorage, AsyncResource
bufferFullAll encodings, read/write methods, Buffer.alloc/from/concat
child_processFullexec, spawn, execFile, fork (file-based IPC)
clusterMissing
consoleFulllog/warn/error/debug, time/timeEnd, table, group
constantsFullLegacy constants (deprecated)
cryptoPartialHash, HMAC, random, createCipheriv/createDecipheriv (AES-CBC/CTR/GCM), sign/verify (RSA), publicEncrypt/privateDecrypt (RSA-OAEP), generateKeyPairSync (RSA). Missing: scrypt, createDiffieHellman, X509, createECDH
dgramMissingUDP sockets
diagnostics_channelStubChannel class exists, no real functionality
dnsStubReturns placeholder 127.0.0.1 results
domainFullDeprecated module, implemented for compat
eventsFullEventEmitter with full API
fsFullSync, callback, and fs.promises. createReadStream/createWriteStream, watch
httpFullNative Hyper/Tokio server, client with Agent
http2Missing
httpsPartialrequest/get work, createServer is basic stub
inspectorStubSession class, no real debugging
moduleFullcreateRequire, builtinModules, CommonJS loader
netPartialSocket, Server, connect, createServer. Missing advanced options
osFullcpus, homedir, networkInterfaces, constants, etc.
pathFullPOSIX and Win32 variants
perf_hooksPartialperformance.now/mark/measure, PerformanceObserver
processFullGlobal. env, argv, cwd, exit, stdin/stdout/stderr, nextTick, hrtime
punycodeFullDeprecated module, implemented for compat
querystringFullparse, stringify, escape, unescape
readlineMissing
replMissing
streamFullReadable, Writable, Duplex, Transform, PassThrough, pipeline, finished, promises
stream/webFullReadableStream, WritableStream, TransformStream
string_decoderFullMulti-byte character handling
timersFullsetTimeout/setInterval/setImmediate + timers/promises
tlsStubTLSSocket exists but no real TLS negotiation
trace_eventsMissing
ttyPartialisatty, ReadStream, WriteStream
urlFullLegacy url.parse + WHATWG URL/URLSearchParams, pathToFileURL/fileURLToPath
utilFullformat, inspect, promisify, callbackify, types.*, TextEncoder/TextDecoder
v8PartialgetHeapStatistics, serialize/deserialize
vmPartialScript, createContext, runInContext/NewContext/ThisContext, compileFunction
wasiMissing
worker_threadsPartialWorker, MessageChannel/MessagePort, isMainThread. Missing SharedArrayBuffer transfer
zlibFullgzip/gunzip/deflate/inflate sync + async + streaming

Web APIs (Globals)

APIStatusNotes
fetchFullVia reqwest backend
Request / Response / HeadersFull
URL / URLSearchParamsFull
TextEncoder / TextDecoderFull
AbortController / AbortSignalFull
Blob / File / FormDataFull
crypto.subtlePartialdigest works. Missing encrypt/decrypt/sign/verify/generateKey/importKey/exportKey
structuredClonePartialJSON-based, no transferable support
Event / EventTargetFull
ReadableStream / WritableStream / TransformStreamFull
performance.now()Full
atob / btoaFull
queueMicrotaskFull
setTimeout / setIntervalFull

Known Gaps Causing Real-World Failures

GapAffected PackagesPriority
crypto.createCipheriv / createDecipherivcookie-signature, express-session, passportHigh Done
crypto.sign / verifyjsonwebtoken, google-auth-libraryHigh Done
crypto.publicEncrypt / privateDecryptgoogle-auth-library, node-joseHigh Done
dns.resolve (real resolution)got, axios (for SRV lookups)Medium
tls.connect (real TLS)database drivers, custom HTTPSMedium
net advanced optionsdatabase drivers, socket.ioMedium
http2gRPC, modern HTTP clientsMedium
clusterPM2, production deploymentsLow
readlineinteractive CLI toolsLow
dgramDNS servers, game serversLow

Totals

  • Full: 22 modules
  • Partial: 9 modules
  • Stub: 3 modules
  • Missing: 6 modules
  • Overall: 34 / 40 modules present (85%)

Released under the MIT License.