#364

Support Convex linting rules for Biome and Oxlint

Requested

Submitted June 12, 2026

I’d love to see official support for Convex best-practice linting in Biome and/or Oxlint, in addition to the existing @convex-dev/eslint-plugin.

Many modern TypeScript monorepos are moving away from ESLint as the primary lint/format tool and standardizing on faster toolchains like Biome or Oxlint. In my project, I use Biome for formatting, import organization, and general linting across a React + Convex monorepo. I still want the Convex-specific safety checks, but today those require keeping a separate ESLint setup just for Convex.

The rules I’d most like to see supported are the existing Convex ESLint rules:

  • @convex-dev/no-filter-in-query
  • @convex-dev/no-collect-in-query
  • @convex-dev/require-argument-validators
  • @convex-dev/explicit-table-ids
  • @convex-dev/import-wrong-runtime
  • @convex-dev/no-old-registered-function-syntax

A few possible ways to support this:

  1. Provide equivalent Biome rules, if Biome’s plugin/rule system supports this.
  2. Provide equivalent Oxlint rules or an Oxlint plugin/package.
  3. Provide a standalone Convex linter CLI, for example convex lint, that can run these checks without ESLint.
  4. Provide documented guidance for Biome/Oxlint users, including the recommended minimal ESLint fallback if full support is not yet possible.

The main motivation is developer experience. Convex’s lint rules catch important correctness and performance issues, especially around query filtering, unbounded collects, validators, and runtime boundaries. But requiring a parallel ESLint setup adds friction in projects that otherwise use Biome or Oxlint exclusively.

Even a first-party convex lint command would be valuable because it would let teams keep Biome/Oxlint as their main linter while still enforcing Convex-specific best practices in CI.

Thanks for considering this. I think it would make Convex feel much smoother in modern TypeScript monorepos.

Development Updates

No updates yet