|
| 1 | +--- |
| 2 | +title: Oxlint 1.0 |
| 3 | +outline: deep |
| 4 | +authors: |
| 5 | + - camc314 |
| 6 | +--- |
| 7 | + |
| 8 | +<AppBlogPostHeader /> |
| 9 | + |
| 10 | +After eighteen months of dedicated development and hundreds of contributions from our community, Oxlint 1.0 is here! This milestone represents our commitment to building a production-ready linter that developers can rely on. |
| 11 | + |
| 12 | +Oxlint is a Rust-powered linter for JavaScript and TypeScript that ships with 500+ built-in rules and is designed to be fast, extensible, and simple to adopt. Unlike many side projects that come and go, Oxlint has been our full-time focus—we've invested deeply in creating a tool that meets the demanding needs of modern JavaScript development. |
| 13 | + |
| 14 | +## Quick Start |
| 15 | + |
| 16 | +Getting started with Oxlint is straightforward. Run it in your codebase using your preferred package manager: |
| 17 | + |
| 18 | +::: code-group |
| 19 | + |
| 20 | +```sh [npm] |
| 21 | +$ npx oxlint@latest |
| 22 | +``` |
| 23 | + |
| 24 | +```sh [pnpm] |
| 25 | +$ pnpm dlx oxlint@latest |
| 26 | +``` |
| 27 | + |
| 28 | +```sh [yarn] |
| 29 | +$ yarn dlx oxlint@latest |
| 30 | +``` |
| 31 | + |
| 32 | +```sh [bun] |
| 33 | +$ bunx oxlint@latest |
| 34 | +``` |
| 35 | + |
| 36 | +```sh [deno] |
| 37 | +$ deno run npm:oxlint@latest |
| 38 | +``` |
| 39 | + |
| 40 | +::: |
| 41 | + |
| 42 | +Oxlint is configurable via an .oxlintrc.json file. Each source file is linted with the nearest configuration, and you can use overrides to target specific glob patterns. You can also extend shared configs to keep teams consistent. |
| 43 | + |
| 44 | +For more detailed instructions on how to use Oxlint and integrate it with your project or editor, check out the [installation guide](/docs/guide/usage/linter). |
| 45 | + |
| 46 | +## Highlights |
| 47 | + |
| 48 | +**Comprehensive Rule Coverage** |
| 49 | +Oxlint includes over 500 carefully implemented rules from trusted sources: |
| 50 | + |
| 51 | +- Complete ESLint rule set, including TypeScript-specific rules from typescript-eslint |
| 52 | +- Popular plugin rules from `eslint-plugin-unicorn`, `eslint-plugin-jsdoc`, `eslint-plugin-react`, `eslint-plugin-react-hooks`, `eslint-plugin-jest`, and `eslint-plugin-import` |
| 53 | +- Unique Oxlint rules like [bad comparison sequence](../docs/guide/usage/linter/rules/oxc/bad-comparison-sequence), [const comparisons](../docs/guide/usage/linter/rules/oxc/const-comparisons), and [only used in recursion](../docs/guide/usage/linter/rules/oxc/only-used-in-recursion) |
| 54 | + |
| 55 | +**Flexible Configuration** |
| 56 | +Configure Oxlint through `.oxlintrc.json` files with support for: |
| 57 | + |
| 58 | +- Nested configurations that apply to specific directories |
| 59 | +- Override patterns for targeting specific file types or locations |
| 60 | +- Shared configuration extending for team consistency |
| 61 | + |
| 62 | +**Editor Integration** |
| 63 | +First-class editor support with extensions for: |
| 64 | + |
| 65 | +- [VS Code](https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode) |
| 66 | +- [IntelliJ IDEA and WebStorm](https://plugins.jetbrains.com/plugin/27061-oxc) |
| 67 | +- [Zed Editor](https://zed.dev/extensions?query=oxc) |
| 68 | +- Language server protocol support for other editors |
| 69 | + |
| 70 | + |
| 71 | +_Oxlint running in the terminal with detailed error reporting_ |
| 72 | + |
| 73 | + |
| 74 | +_Real-time linting feedback in VS Code_ |
| 75 | + |
| 76 | +## Adoption |
| 77 | + |
| 78 | +**From ESLint**: Migrating from ESLint is seamless. Oxlint uses familiar configuration patterns and rule names, making the transition smooth for existing projects. |
| 79 | + |
| 80 | +**For New Projects**: Start fresh with modern defaults. Oxlint's built-in rule set covers common patterns and best practices out of the box. |
| 81 | + |
| 82 | +**In CI/CD**: Integrate Oxlint into your build pipeline for fast, reliable code quality checks that won't slow down your deployment process. |
| 83 | + |
| 84 | +**For Large Codebases**: Scale confidently with Oxlint's performance-first architecture that handles monorepos and large JavaScript applications efficiently. |
| 85 | + |
| 86 | +For detailed adoption guidance, see our [installation guide](/docs/guide/usage/linter). |
| 87 | + |
| 88 | +## Performance |
| 89 | + |
| 90 | +We benchmarked Oxlint vs ESLint on large, real-world codebases using the same rule configurations to measure performance under consistent conditions. |
| 91 | + |
| 92 | +### Repository Benchmark Summary |
| 93 | + |
| 94 | +| Repository | File count | Lint time | Commit Hash | |
| 95 | +| ------------------ | ---------- | --------- | -------------------------------------------- | |
| 96 | +| `microsoft/vscode` | 5,955 | 0.356s | (`1a99a26db899152df71fcfd1914e63804d5d0d57`) | |
| 97 | +| `elastic/kibana` | 71,160 | 1.948 s | (`f635e2a3b06526195d393b67f0d4534ce792815e`) | |
| 98 | + |
| 99 | +### Linting Visual Studio Code |
| 100 | + |
| 101 | +For a more direct comparison, we ran Oxlint and ESLint on the Visual Studio Code codebase using exactly the same enabled rules and configurations. |
| 102 | + |
| 103 | +```sh |
| 104 | +hyperfine --warmup 3 'oxlint -c .oxlintrc.json' './node_modules/.bin/eslint -c eslint2.config.js' -i |
| 105 | +``` |
| 106 | + |
| 107 | +Oxlint was compiled in release mode at commit e2f0f0a. |
| 108 | + |
| 109 | +| Tool | Time | |
| 110 | +| ------ | -------- | |
| 111 | +| oxlint | 603.1 ms | |
| 112 | +| eslint | 36.597 | |
| 113 | + |
| 114 | +Summary |
| 115 | + |
| 116 | +⚡ Oxlint ran ~60x faster than ESLint on the same codebase and configuration. |
| 117 | + |
| 118 | +This demonstrates Oxlint’s dramatic performance advantage when linting large codebases, making it a compelling drop-in replacement for ESLint in CI pipelines and local development. |
| 119 | + |
| 120 | +## Roadmap |
| 121 | + |
| 122 | +**Custom Rules** – JavaScript plugin support is coming soon, enabling teams to write custom rules that integrate seamlessly with Oxlint's architecture. |
| 123 | + |
| 124 | +**Performance Optimizations** – Continued improvements to parsing and analysis speed. |
| 125 | + |
| 126 | +## Acknowledgements |
| 127 | + |
| 128 | +Oxlint 1.0 represents the collective effort of over 200 contributors who have shaped this project. We're grateful for every bug report, feature request, and code contribution. |
| 129 | + |
| 130 | +Special recognition goes to: |
| 131 | + |
| 132 | +- [@branchseer](https://github.com/branchseer) for implementing the multi-file analysis runtime. |
| 133 | +- [@camc314](https://github.com/camc314), [@mysteryven](https://github.com/mysteryven), and [@shulaoda](https://github.com/shulaoda) for implementing many sophisticated lint rules, testing, and constantly improving everything. |
| 134 | +- [@camchenry](https://github.com/camchenry) for implementing nested configuration support. |
| 135 | +- [@DonIsaac](https://github.com/DonIsaac) for improving configuration, documentation and website, and for representing Oxc at [SquiggleConf 2024](https://2024.squiggleconf.com). |
| 136 | +- [@leaysgur](https://github.com/leaysgur) for the RegExp parser and JSDoc plugin. |
| 137 | +- [@Sysix](https://github.com/Sysix) for maintaining `eslint-plugin-oxlint` and significant contributions to the language server and VSCode extension. |
| 138 | +- [@u9g](https://github.com/u9g) and [@rzvxa](https://github.com/rzvxa) for implementing control flow graph analysis. |
| 139 | + |
| 140 | +We'd love to hear your feedback on Oxlint! Please reach out to us on [Discord](https://discord.gg/oxlint) or [GitHub Discussions](https://github.com/oxc-project/oxc/discussions) with any questions, suggestions, or issues you encounter. Your input is invaluable in helping us make Oxlint even better. |
| 141 | + |
| 142 | +## Join the Community |
| 143 | + |
| 144 | +We're excited to see how Oxlint helps improve your development workflow. Connect with us: |
| 145 | + |
| 146 | +- **Discord**: Join our [community server](https://discord.gg/9uXCAwqQZW) for real-time discussions |
| 147 | +- **GitHub**: Share feedback on [GitHub Discussions](https://github.com/oxc-project/oxc/discussions) |
| 148 | +- **Issues**: Report bugs or request features on our [issue tracker](https://github.com/oxc-project/oxc/issues) |
| 149 | + |
| 150 | +Your feedback drives Oxlint's evolution. Let's build better JavaScript tooling together. |
0 commit comments