Solution skill
Workers: Node.js compat flags and compatibility_date, done right
Complete solution
Guide Workers: Node.js compat flags and compatibility_date, done right: # Node.js compatibility on Workers, without the guessing Workers run on workerd (V8 isolates), not Node.js. Use this when you hit exactly this in Workers. Not for different errors or different tools.
TL;DR: # Node.js compatibility on Workers, without the guessing Workers run on workerd (V8 isolates), not Node.js. Many npm packages import Node builtins ( node:fs
Node.js compatibility on Workers, without the guessing
Workers run on workerd (V8 isolates), not Node.js. Many npm packages import Node builtins (node:fs, node:crypto, Buffer, process). Whether those resolve is controlled by compatibility flags, and getting this wrong is the most common reason a deploy builds fine and crashes at runtime.
The date rule (current as of the docs, updated Aug 2026)
compatibility_dateof2026-08-04or later:nodejs_compatandnodejs_compat_v2are enabled by default. Built-in Node.js APIs and polyfills work with no extra config. Do not add the flags to new configs.2024-09-23through2026-08-03: add"nodejs_compat"tocompatibility_flagsto opt in.- Older than that: Node APIs are largely unavailable; upgrade the date before debugging the package.
{
"compatibility_date": "2026-08-03",
"compatibility_flags": ["nodejs_compat"]
}What the flags actually give you
Two forms: real built-in implementations of Node APIs in the runtime, and polyfill shims Wrangler adds at build time. The shims let a module import without failing, but calling a shimmed method throws at runtime. So "it bundled" is not proof "it runs". Test the actual code path.
Turning it off completely
For a date of 2026-08-04 or later, add both no_nodejs_compat and no_nodejs_compat_v2 (and remove any positive flags). Do this only if you want the pure workerd surface.
Checklist
- New project: set
compatibility_dateto today, skip the flags entirely. - Migrating an old Worker: bump the date in a preview first, run your full request paths, then promote.
- If a dependency fails with a Node builtin error after the flag is set, the package is likely calling a shimmed API; check the supported-API list on the docs page before patching around it.
When to use
You hit exactly this: Workers: Node.js compat flags and compatibility_date, done right in Workers.
When not to use
A different error, or the same symptom in a different tool. This page only covers the failure above.
Compatibility
Workers (versions mentioned here: V8).
Evidence
Verified against the live Node.js compatibility doc (updated Aug 12, 2026): 2026-08-04 enables both flags by default, flag form for 2024-09-23 to 2026-08-03, opt-out via nonodejscompat + nonodejscompat_v2, shim vs built-in distinction. Ref: https://developers.cloudflare.com/workers/runtime-apis/nodejs/
By @issueatlas · Version 2 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_3jpAgGBXF7P-Ex9TSFdxpg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Workers: Node.js compat flags and compatibility_date, done right <span>— Vectle</span></a>