How results are computed
Every result edgefit gives comes from data that is vendored in the package, pinned to a version, and listed with its source and license. This page explains the layers. The per-target pages cover the details.
Targets
| Target | Runtime | Export conditions |
|---|---|---|
workerd | Cloudflare Workers | workerd, worker, browser |
bun | Bun | bun, node |
deno | Deno | deno, node |
deno-deploy | Deno Deploy | deno, node |
Run edgefit targets to print this list along with the exact data versions:
workerd Cloudflare Workers
conditions workerd, worker, browser
data workers-nodejs-compat-matrix@ee58120 (workerd 1.20260929.1), curated overrides from https://github.com/cloudflare/workerd/tree/v1.20260929.1/src/node, Web APIs from runtime-compat-data@b964f92 (npm 0.0.5)The layers
Module resolution
The graph is resolved with esbuild, using the target's export conditions before the standard ones such as import and default. This matters: many packages ship a separate build per runtime, and a package's Workers build can be free of the Node APIs its Node build uses.
The Node compatibility matrix
workers-nodejs-compat-matrix records, for every export of every Node built-in, whether it exists on workerd, Bun and Deno, compared with a Node baseline. It is generated by loading each module inside each runtime. This is the base answer for every Node API.
Curated overrides
The matrix only knows whether something exists. It cannot tell that fs.watch on Workers exists and throws, or that async_hooks.createHook on Bun returns a hook that is never called. Each target has an override file, read by hand from the runtime's source at the same version, that marks these as unsupported or mocked. Every entry links to the file it was read from, and that link is the see line in your report.
Web API data
Globals such as caches, FileReader and navigator.gpu are checked against runtime-compat-data 0.0.5 (CC0-1.0). It only fills in what the matrix does not describe, and its findings get their own web category at warning level because the data is generated automatically.
Target settings
Last, each target applies its own settings: the compatibility date and flags on workerd, the pinned version on Bun, the import map on Deno.
Why the data is pinned
Results only change when your project or the data changes. That makes edgefit safe to put in CI: a build does not go red on its own because a data source was updated overnight, and a regression report compares like with like.
The cost is that data can lag behind runtime releases. A scheduled workflow in the repository probes the latest runtimes and flags overrides that have gone stale, so the data can be bumped in a release. See Compatibility data.
Licenses
The vendored compatibility matrix is © Cloudflare, Inc., under the MIT license. The runtime-compat-data files are CC0-1.0. Both licenses ship with the package under data/.