bb-plane-fork/docs/linting.md
sriram veeraghanta c5542438a1
fix: replace eslint with oxlint (#8677)
* fix: replace eslint with oxlint

* chore: adding max warning

* fix: formatting
2026-03-03 00:46:05 +05:30

2.7 KiB

Linting in Plane - How It Works

We use OxLint for linting across the entire monorepo. OxLint is a single Rust binary that's 50-100x faster than ESLint, with zero Node.js dependencies at runtime.

Key Points

  1. Single Root Config - One .oxlintrc.json at the repo root handles all packages and apps
  2. No Build Required - OxLint doesn't need TypeScript build artifacts, so lint runs independently of build
  3. Plugin Coverage - react, typescript, jsx-a11y, import, promise, unicorn, oxc

How to Run

From the root of the repo:

# Check for lint errors
pnpm check:lint

# Auto-fix lint errors
pnpm fix:lint

To lint a specific package:

pnpm turbo run check:lint --filter=@plane/ui

VS Code Integration

Install the OxLint extension for inline errors/warnings as you type.

What Gets Linted

The config applies to all TypeScript and JavaScript files across:

  • apps/web, apps/admin, apps/space, apps/live
  • All packages in packages/

Ignored paths:

  • node_modules/, dist/, build/, .next/, .turbo/
  • Config files (*.config.{js,mjs,cjs,ts})
  • Public folders, coverage, storybook-static

Rules Overview

OxLint uses category-based configuration:

Category Level What It Catches
correctness error Real bugs that will cause runtime errors
suspicious warn Code patterns that are likely mistakes
perf warn Performance anti-patterns

Additional rule overrides:

  • react/prop-types off (TypeScript handles prop validation)
  • no-unused-vars warns with _ prefix pattern ignored
  • Several noisy unicorn rules disabled

Backward Compatibility

OxLint supports eslint-disable comments, so existing inline suppressions continue to work.

Suppressing Warnings

// Single line
// eslint-disable-next-line no-unused-vars
const data = response;

// Block
/* eslint-disable no-unused-vars */
// ... code
/* eslint-enable no-unused-vars */

Please use sparingly - most warnings indicate real issues that should be fixed.

Pre-commit Hook

Lint-staged runs automatically on commit via Husky:

  • oxfmt formats your staged files
  • OxLint fixes what it can (with --deny-warnings)

If the commit fails due to lint errors, fix them before committing.

Reference Files