Skip to main content
Figentra uses Oxlint as its primary linter. Oxlint is written in Rust, which makes it orders of magnitude faster than JavaScript-based linters on large codebases — a full lint pass on the entire monorepo typically finishes in under a second. Its rule set is compatible with the ESLint rules your team already knows, so the transition requires almost no relearning. Zero-configuration defaults mean you can get meaningful feedback from day one without writing a single line of config.

What is Oxlint?

Oxlint is a fast, Rust-based linter that implements a growing subset of ESLint-compatible rules plus its own correctness and performance checks. Key properties:
  • 50–100× faster than ESLint on equivalent rule sets
  • No plugin ecosystem complexity — rules ship as part of the binary
  • ESLint-compatible rule namesno-unused-vars, prefer-const, and friends work exactly as you expect
  • Language-server support — integrates with any editor that speaks LSP

Installation

Add Oxlint as a dev dependency in each package, or install it once at the monorepo root if you run it via the root package.json scripts:

Configuration

Create an .oxlintrc.json file at the root of each package (or at the monorepo root to share a single config):
.oxlintrc.json
Oxlint picks up .oxlintrc.json automatically when you run it from a directory that contains the file. You do not need to pass a --config flag in most cases.

Running Oxlint

Add the standard lint script to your package.json so contributors and CI can use a consistent entry point:
package.json

IDE Integration

Install the official Oxlint extension from the VS Code Marketplace (oxc.oxlint). Once installed:
  1. Open your workspace settings (Cmd+, / Ctrl+,).
  2. Search for “oxlint” and enable Format On Save.
  3. Set Oxlint as the default formatter for TypeScript files if you want auto-fix on save:
.vscode/settings.json
Lint diagnostics appear inline as you type, with quick-fix actions available via the lightbulb menu.

CI Integration

Add the strict lint step to your CI workflow so that warnings become blocking errors before code reaches the main branch:
.github/workflows/ci.yml
Run this step after your typecheck step and before your test step. Linting is fast enough that it adds negligible time to the pipeline.

Full Coverage with TypeScript

Oxlint catches style and correctness issues, but it does not perform type-aware analysis. Run tsc --noEmit alongside Oxlint to get full coverage: Oxlint handles code quality rules and TypeScript handles type errors. Add both to your package.json scripts and run them together in CI:
This combination gives you the fastest possible feedback loop with no gaps in coverage.