Node.js vs Bun vs Deno: npm package compatibility

Compare how tested npm packages load in Node.js, Bun and Deno. Each result names an exact package version, the tested runtimes and a report you can inspect or reproduce.

Node.js support does not establish Bun or Deno npm compatibility. Compare ESM import, CommonJS require and explicit subpaths using the same installed dependencies. A runtime may pass its observed checks while overall coverage remains limited.

These are loading tests on Linux amd64 / glibc, with install scripts and execution networking disabled. Passing does not prove functional correctness. Versions listed here are tested versions, not necessarily the latest releases. Reports prefer the current environment and fall back to eligible earlier observations.

Tested npm packages

  • mongodb@7.7.0

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 15:51 UTC

    Full loading report for mongodb@7.7.0
  • bcrypt@6.0.0

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 14:49 UTC

    Full loading report for bcrypt@6.0.0
  • mongoose@9.11.1

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 14:56 UTC

    Full loading report for mongoose@9.11.1
  • @opentelemetry/sdk-node@0.223.0

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 15:57 UTC

    Full loading report for @opentelemetry/sdk-node@0.223.0
  • ai@7.0.136

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 6 passed · 0 failed
    • Node.js 26.10.0: Passed · 6 passed · 0 failed
    • Bun 1.4.2: Passed · 6 passed · 0 failed
    • Deno 2.9.7: Passed · 6 passed · 0 failed

    Observed 2026-10-09 13:49 UTC

    Full loading report for ai@7.0.136
  • tailwind-merge@3.7.0

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 6 passed · 0 failed
    • Node.js 26.10.0: Passed · 6 passed · 0 failed
    • Bun 1.4.2: Passed · 6 passed · 0 failed
    • Deno 2.9.7: Passed · 6 passed · 0 failed

    Observed 2026-10-05 13:07 UTC · Earlier execution environment

    Full loading report for tailwind-merge@3.7.0
  • react@19.3.0

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 8 passed · 0 failed
    • Node.js 26.10.0: Passed · 8 passed · 0 failed
    • Bun 1.4.2: Passed · 8 passed · 0 failed
    • Deno 2.9.7: Passed · 8 passed · 0 failed

    Observed 2026-10-09 10:13 UTC · Earlier execution environment

    Full loading report for react@19.3.0
  • undici@8.11.2

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 10:07 UTC · Earlier execution environment

    Full loading report for undici@8.11.2
  • drizzle-orm@0.45.4

    Inconclusive Planned coverage complete

    • Node.js 24.21.0: Inconclusive · 774 passed · 12 failed · 108 need optional peers
    • Node.js 26.10.0: Inconclusive · 774 passed · 12 failed · 108 need optional peers
    • Bun 1.4.2: Mixed results · 782 passed · 112 failed
    • Deno 2.9.7: Inconclusive · 774 passed · 12 failed · 108 need optional peers

    Observed 2026-10-09 14:54 UTC

    Full loading report for drizzle-orm@0.45.4
  • sharp@0.35.5

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 11:12 UTC

    Full loading report for sharp@0.35.5
  • nodemailer@10.0.16

    Inconclusive Coverage limited

    • Node.js 24.21.0: Passed · 42 passed · 0 failed
    • Node.js 26.10.0: Passed · 42 passed · 0 failed
    • Bun 1.4.2: Passed · 42 passed · 0 failed
    • Deno 2.9.7: Passed · 42 passed · 0 failed

    Observed 2026-10-09 13:55 UTC

    Full loading report for nodemailer@10.0.16
  • @grpc/grpc-js@1.14.6

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 15:59 UTC

    Full loading report for @grpc/grpc-js@1.14.6
  • polylinai@1.0.2

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 16:15 UTC

    Full loading report for polylinai@1.0.2
  • redis@6.3.0

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-04 18:09 UTC · Earlier execution environment

    Full loading report for redis@6.3.0
  • mysql2@3.24.5

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 6 passed · 0 failed
    • Node.js 26.10.0: Passed · 6 passed · 0 failed
    • Bun 1.4.2: Passed · 6 passed · 0 failed
    • Deno 2.9.7: Passed · 6 passed · 0 failed

    Observed 2026-10-09 13:56 UTC

    Full loading report for mysql2@3.24.5
  • @tanstack/react-start@1.168.60

    Inconclusive Planned coverage complete

    • Node.js 24.21.0: Inconclusive · 11 passed · 4 failed · 2 need optional peers
    • Node.js 26.10.0: Inconclusive · 11 passed · 4 failed · 2 need optional peers
    • Bun 1.4.2: Mixed results · 11 passed · 6 failed
    • Deno 2.9.7: Inconclusive · 11 passed · 4 failed · 2 need optional peers

    Observed 2026-10-08 20:59 UTC · Earlier execution environment

    Full loading report for @tanstack/react-start@1.168.60
  • express@5.2.1

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 11:09 UTC

    Full loading report for express@5.2.1
  • preact@11.0.0

    Inconclusive Planned coverage complete

    • Node.js 24.21.0: Inconclusive · 26 passed · 0 failed · 4 need optional peers
    • Node.js 26.10.0: Inconclusive · 26 passed · 0 failed · 4 need optional peers
    • Bun 1.4.2: Inconclusive · 26 passed · 3 failed · 1 needs an optional peer
    • Deno 2.9.7: Inconclusive · 26 passed · 0 failed · 4 need optional peers

    Observed 2026-10-09 06:03 UTC · Earlier execution environment

    Full loading report for preact@11.0.0
  • @convex-dev/agent@0.7.3

    Inconclusive Planned coverage complete

    • Node.js 24.21.0: Inconclusive · 8 passed · 2 failed · 2 need optional peers
    • Node.js 26.10.0: Inconclusive · 8 passed · 2 failed · 2 need optional peers
    • Bun 1.4.2: Mixed results · 8 passed · 4 failed
    • Deno 2.9.7: Inconclusive · 8 passed · 2 failed · 2 need optional peers

    Observed 2026-10-05 11:22 UTC · Earlier execution environment

    Full loading report for @convex-dev/agent@0.7.3
  • ioredis@6.0.0

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 14:52 UTC

    Full loading report for ioredis@6.0.0
  • openai@7.31.0

    Inconclusive Coverage limited

    • Node.js 24.21.0: Passed · 76 passed · 0 failed
    • Node.js 26.10.0: Passed · 76 passed · 0 failed
    • Bun 1.4.2: Passed · 76 passed · 0 failed
    • Deno 2.9.7: Passed · 76 passed · 0 failed

    Observed 2026-10-09 15:54 UTC

    Full loading report for openai@7.31.0
  • jsdom@30.1.2

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 2 passed · 0 failed
    • Node.js 26.10.0: Passed · 2 passed · 0 failed
    • Bun 1.4.2: Passed · 2 passed · 0 failed
    • Deno 2.9.7: Passed · 2 passed · 0 failed

    Observed 2026-10-09 14:57 UTC

    Full loading report for jsdom@30.1.2
  • jose@6.2.12

    Inconclusive Coverage limited

    • Node.js 24.21.0: Passed · 18 passed · 0 failed
    • Node.js 26.10.0: Passed · 18 passed · 0 failed
    • Bun 1.4.2: Passed · 18 passed · 0 failed
    • Deno 2.9.7: Passed · 18 passed · 0 failed

    Observed 2026-10-09 15:58 UTC

    Full loading report for jose@6.2.12
  • kysely@0.29.6

    Passed Planned coverage complete

    • Node.js 24.21.0: Passed · 14 passed · 0 failed
    • Node.js 26.10.0: Passed · 14 passed · 0 failed
    • Bun 1.4.2: Passed · 14 passed · 0 failed
    • Deno 2.9.7: Passed · 14 passed · 0 failed

    Observed 2026-10-09 14:51 UTC

    Full loading report for kysely@0.29.6