ESLint
Rationale
We use ESLint as the main static linter for TypeScript source code.
- It is an old-school TypeScript linter, which means it has many rules implemented and has been thoroughly tested.
- It is open source.
- It has a huge number of typing checks.
- It supports caching already-reviewed files for performance.
- It provides a language server out of the box, considerably affecting development experience.
- It integrates in-editor typing using its VS Code extension for the development experience.
- As it is built in JavaScript, it has serious performance limitations.
Alternatives
Below are alternatives we are currently considering as possible replacements to ESLint:
Biome
- Biome is a static linter and formatter, meaning that it not only replaces ESLint but also formatting tools like Prettier.
- It is open source.
- It does not have as many typing checks as ESLint, but is getting there very fast.
- Although it currently does not support caching, it is still much faster compared to ESLint.
- It provides a language server out of the box, considerably improving development experience.
- It integrates in-editor typing using its VS Code extension for the development experience.
- As it is built in Rust, it is considerably faster compared to other linters and formatters, up to a point where performance is no longer a concern.
Biome was last reviewed on Aug 5, 2025.
Oxc
- Oxc is a static linter; it does not support formatting yet.
- It is open source.
- It does not have as many typing checks as ESLint, but is getting there very fast.
- Although it currently does not support caching, it is still much faster compared to ESLint.
- It provides a language server out of the box, considerably improving development experience.
- It integrates in-editor typing using its VS Code extension for the development experience .
- As it is built in Rust, it is considerably faster compared to other linters and formatters, up to a point where performance is no longer a concern.
Oxc was last reviewed on Aug 5, 2025.
Usage
We use ESLint to enforce strict code quality on all of Fluid Attacks’ TypeScript source code.
Last updated on