Skip to content

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

Description

@moneko-o

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions