#20491·Tailwind CSS

Relax `engines.node` from `>= 20` to `>= 10` (N-API 3 runtime compatibility)

Author: moneko-oCreated Sep 14, 2026Updated Sep 14, 2026

The @tailwindcss/oxide package.json currently sets:

"engines": {
  "node": ">= 20"
}

This prevents installation and usage on Node.js versions below 20, even though the package's prebuilt native binaries are compiled against N-API version 3.

Expected behavior

The engines.node field should reflect runtime compatibility, not build-time requirements. Since @tailwindcss/oxide uses N-API 3, the runtime compatibility should be:

"engines": {
  "node": ">= 10"
}

Why this matters

  • N-API 3 is stable and supported since Node.js 10.0.0 (and experimentally since 8.11.0).
    See: N-API version matrix

  • The >= 20 constraint is only necessary for building from source, not for consuming the prebuilt binaries distributed via npm.

  • Many projects (CI/CD pipelines, Docker images, legacy systems) still run on Node.js 14/16/18 LTS versions that fully support N-API 3. The current engines restriction forces unnecessary upgrades.

  • Other N-API packages in the ecosystem (e.g. via napi-rs) typically set engines to match the N-API version they target, not the toolchain used to build them.

Proposed change

Update package.json to:

"engines": {
  "node": ">= 10"
}

Or, if you prefer a more conservative lower bound that still aligns with N-API 3:

"engines": {
  "node": ">= 12"
}

Additional context

  • Package name: @tailwindcss/oxide
  • Current version: (e.g. 4.3.3)
  • N-API version used: 3
  • Build toolchain: likely napi-rs based on project structure

Thank you for considering this change! Appreciate all the work on Tailwind CSS.

Source: tailwindlabs/tailwindcss