Skip to content

Commit d8833d2

Browse files
committed
feat: oxlint 1.0 release post
1 parent 733087a commit d8833d2

File tree

4 files changed

+157
-3
lines changed

4 files changed

+157
-3
lines changed

.vitepress/config/en.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export const enConfig = defineLocaleConfig("root", {
2323
{
2424
text: "Resources",
2525
items: [
26-
{ text: "Blog", link: "/blog/2025-03-15-oxlint-beta" },
26+
{ text: "Blog", link: "/blog/2025-06-01-oxlint-stable" },
2727
{ text: "Team", link: "/team" },
2828
{ text: "Branding", link: "/branding" },
2929
{ text: "Website GitHub", link: "https://github.com/oxc-project/oxc-project.github.io" },

.vitepress/sidebar.blog.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
[
2+
{
3+
"text": "Oxlint Stable",
4+
"link": "/blog/2025-06-01-oxlint-stable"
5+
},
26
{
37
"text": "Oxlint Beta",
48
"link": "/blog/2025-03-15-oxlint-beta"

.vitepress/theme/components/Banner.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ const hide = () => {
1616
document.documentElement.classList.add("banner-dismissed");
1717
};
1818
19-
const slug = "/blog/2025-03-15-oxlint-beta";
19+
const slug = "/blog/2025-06-01-oxlint-stable";
2020
2121
const bannerDismissed = useLocalStorage<boolean>(`oxc-banner-dismissed-${slug}`, false);
2222
@@ -45,7 +45,7 @@ const dismiss = () => {
4545

4646
<template>
4747
<div ref="el" class="banner banner-dismissed">
48-
<div class="text"><a :href="slug">Announcing Oxlint Beta</a> 🎉</div>
48+
<div class="text"><a :href="slug">Announcing Oxlint</a> 🎉</div>
4949

5050
<button type="button" @click="dismiss">
5151
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">

src/blog/2025-06-01-oxlint-stable.md

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
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+
![CLI Demo](./oxlint-cli-demo.gif)
71+
_Oxlint running in the terminal with detailed error reporting_
72+
73+
![VS Code Integration](./oxlint-vscode.png)
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

Comments
 (0)