Skip to content

Oxlint Beta

We are thrilled to announce that Oxlint is now in beta release, after more than a year of development by the community!

This milestone represents a significant step forward in feature completeness, performance, and stability.

How to use ​

At this stage, Oxlint can be used to fully replace ESLint in small to medium projects.

For larger projects, our advice is to turn off ESLint rules via eslint-plugin-oxlint, and run Oxlint before ESLint in your local or CI setup for a quicker feedback loop.

To test Oxlint in your codebase, you can use the package manager of your choice at the root of your codebase:

sh
$ npx oxlint@latest
sh
$ pnpm dlx oxlint@latest
sh
$ yarn dlx oxlint@latest
sh
$ bunx oxlint@latest
sh
$ deno run npm:oxlint@latest

For more detailed instructions on how to use Oxlint and integrate it with your project or editor, check out the installation guide.

Highlight of new features since general availability ​

  • Significant performance improvements, up to twice as fast compared to the previous release
  • Includes over 500 rules built-in, with no extra installation required
  • Many rules from the typescript, unicorn, react, react-perf, nextjs, import, jsdoc, jsx-a11y, node, promise, jest, vitest plugins are now complete.
  • Support for configuration via .oxlintrc.json files, including nested configuration files, using extends to share configuration between files, applying overrides to specific files, and more.
  • Supports linting <script> content in .astro, .svelte and .vue files with no additional configuration needed.
  • Allows applying automatic fixes and suggestions to files.

More rules, more performance ​

We have focused on making Oxlint more feature complete, supporting many of the most commonly used ESLint rules and plugins, but we have also made Oxlint much faster as well.

The first generally available (GA) release of Oxlint had 205 rules in total, with 70 of those being enabled by default. This beta release now includes 502 rules in total, with 99 of those being enabled by default (a 41% increase in the number of rules enabled by default).

Rule typeRule count (GA)Rule count (beta)Increase
Default rules7099+29 rules
Correctness88173+88 rules
Performance09+9 rules
Restrictions1564+49 rules
Pedantic4379+36 rules
Style38137+99 rules
Suspicious728+21 rules
Total rules205502+297 rules

Despite adding many new rules that are enabled by default, Oxlint is now much faster than it ever has been. Here are some benchmarks on some popular repositories:

RepositoryFile countLint time (GA)Lint time (beta)Speedup
elastic/kibana68,5916.02s3.11s1.94x
microsoft/vscode5,7031.697s0.792s2.14x
vitest-dev/vitest1,732105ms50ms2.1x
vuejs/core1,063217ms89ms2.44x

Roadmap ​

One of the most commonly requested features for Oxlint is support for existing custom ESLint plugins. We have been busy working on the prerequisites for this feature, and to enable fast linter plugins written in JavaScript. We hope to have this feature available for the next major release, and more information to share about it in the near future.

We also are planning to continue improving the IDE/editor integrations, with improved support for VSCode, Zed, coc.nvim, and IntelliJ plugins.

Acknowledgements ​

Oxlint beta would not have been possible without the over 200 contributors to the project.

Special thanks goes to:

  • @cam314, @mysteryven, and @shulaoda for implementing many sophisticated lint rules, testing, and constantly improving everything.
  • @Sysix for maintaining eslint-plugin-oxlint.
  • @DonIsaac for improving configuration, documentation and website, and for representing Oxc at SquiggleConf 2024.
  • @leaysgur for the RegExp parser and JSDoc plugin.
  • @u9g and @rzvxa for implementing control flow graph analysis.
  • @branchseer for implementing the multi-file analysis runtime.
  • @camchenry for implementing nested configuration support.

Released under the MIT License.