strict-web and node-compat modes —
the mode only changes whether the Node host surface is layered on top.
The committed global surface
| Area | Globals |
|---|---|
| Fetch | fetch, Request, Response, Headers, FormData |
| URLs | URL, URLSearchParams, URLPattern |
| Encoding | TextEncoder, TextDecoder |
| Crypto | crypto.subtle (digest, encrypt/decrypt, sign/verify, key ops), crypto.getRandomValues |
| Binary | Blob |
| Abort | AbortController, AbortSignal, DOMException |
| Timers | setTimeout, clearTimeout |
| Console | console.log / info / warn / error / debug |
meow sync writes
.meow/strict-web.d.ts so the globals resolve with nothing installed.
Examples
Not present
meow is a runtime, never a browser. The DOM and browser-host globals are intentionally absent —window, document, localStorage, and WebSocket are
not part of the surface. The generated type config pins lib: ["esnext"] so
those names don’t leak into your editor either.
Crypto & determinism
Instrict-web mode, crypto.getRandomValues() draws from the
seeded RNG by default — deterministic
across runs. crypto.subtle (hashing, signing, key derivation) is unaffected; it’s
deterministic by nature. Grant real entropy with --allow-random when you need it.
Serving HTTP
The server side of the web platform — accepting requests and returningResponse
objects — is the meow:http built-in module:
Beyond the committed surface above, meow also exposes some web APIs transitively —
structuredClone, atob/btoa, performance, EventTarget, and streams beyond
fetch bodies are present but not yet a committed surface, so they aren’t declared
in the strict-web types and may evolve. Build on the committed set for stability.meow:http
The HTTP server module.
Node.js compatibility
When you need
node:fs, process, and CommonJS.