Skip to content

Commit 7a6c346

Browse files
feat: oxlint 1.0 release post (#375)
* feat: oxlint 1.0 release post * chore: add info banner regarding publishing * chore: add canonical --------- Co-authored-by: Alexander Lichter <github@lichter.io>
1 parent 6d8fcef commit 7a6c346

File tree

4 files changed

+188
-5
lines changed

4 files changed

+188
-5
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-10-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: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
[
2+
{
3+
"text": "Oxlint v1.0 Stable",
4+
"link": "/blog/2025-06-10-oxlint-stable"
5+
},
26
{
37
"text": "Oxlint Beta",
48
"link": "/blog/2025-03-15-oxlint-beta"
59
},
610
{
7-
"text": "Oxc Minifier Alpha",
11+
"text": "Minifier Alpha",
812
"link": "/blog/2025-03-13-minifier-alpha"
913
},
1014
{
1115
"text": "Oxlint v0.10 Release",
1216
"link": "/blog/2024-10-18-oxlint-v0.10-release"
1317
},
1418
{
15-
"text": "Oxc Transformer Alpha",
19+
"text": "Transformer Alpha",
1620
"link": "/blog/2024-09-29-transformer-alpha"
1721
},
1822
{

.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-10-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 v1.0 Stable</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-10-oxlint-stable.md

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
---
2+
title: Oxlint v1.0 Stable
3+
outline: deep
4+
authors:
5+
- boshen
6+
- cameron
7+
canonical: https://voidzero.com/posts/announcing-oxlint-1-stable
8+
---
9+
10+
<AppBlogPostHeader />
11+
12+
<br>
13+
14+
:::info
15+
16+
This blog post was [originally published on the VoidZero website](https://voidzero.com/posts/announcing-oxlint-1-stable).
17+
18+
:::
19+
20+
<br>
21+
22+
TL;DR: The first stable version Oxlint has been released! With a [50~100x](#benchmark) performance improvement over ESLint, support for over 500 ESLint rules, and [usage in major companies](#real-world-impact) like Shopify, Airbnb, and Mercedes-Benz, you should give it a try. [Get started now](#quick-start).
23+
24+
---
25+
26+
Oxlint is a Rust-powered linter for JavaScript and TypeScript is designed to be fast and simple to adopt. Since its first announcement back in December 2023, Oxlint has undergone significant improvements and is now shipping its first stable version, 1.0.
27+
In addition to the stable release, we also want to announce that Oxlint has a dedicated full-time maintainer, [Cameron](https://github.com/camc314), and a growing core team working on maintaining and improving the linter.
28+
29+
## Real-World Impact
30+
31+
We are extremely proud of the performance of Oxlint and its impact on real, large-scale codebases, which has led to reduced CI costs.
32+
33+
We are thankful for our [5,200 early adopters](https://github.com/oxc-project/oxc/network/dependents) and for companies and projects such as:
34+
35+
- **Shopify**, where the front-end platform team uses Oxlint in the Shopify admin console.
36+
- **Airbnb**, where they use multi-file analysis `oxc/no-barrel-file` and `import/no-cycle` on their 126,000+ files, which completes in 7s on CI. ESLint's implementation of these rules times out.
37+
- [**Mercedes-Benz**](https://www.mercedes-benz.io/blog/2025-05-16-how-can-modern-tooling-save-mercedes-benz-io-engineering-time), where they observed a 71% decrease in lint time when swapping ESLint to Oxlint, with some project seeing up to a 97% speedup.
38+
- Large Open Source projects, from runtimes like [Bun](https://github.com/oven-sh/bun/blob/main/oxlint.json) to frameworks like [Preact](https://github.com/preactjs/preact/blob/main/oxlint.json).
39+
40+
On the largest repository we found, Oxlint reported:
41+
42+
```
43+
Finished in 22.5s on 264925 files with 101 rules using 10 threads.
44+
```
45+
46+
Based on real-world cases posted on [X](https://x.com/boshen_c/status/1928264877115597053) and [Bluesky](https://bsky.app/profile/boshen.github.io/post/3lqe47xi47c2e),
47+
Oxlint runs at approximately 10,000 files per second, depending on the total number of threads used.
48+
49+
## Quick Start
50+
51+
Oxlint is perfect for developers who want to start linting their code without spending hours configuring tools. With zero setup required, you can start catching issues immediately:
52+
53+
**Run it, no config required.**
54+
55+
::: code-group
56+
57+
```sh [npm]
58+
$ npx oxlint@latest
59+
```
60+
61+
```sh [pnpm]
62+
$ pnpm dlx oxlint@latest
63+
```
64+
65+
```sh [yarn]
66+
$ yarn dlx oxlint@latest
67+
```
68+
69+
```sh [bun]
70+
$ bunx oxlint@latest
71+
```
72+
73+
```sh [deno]
74+
$ deno run npm:oxlint@latest
75+
```
76+
77+
:::
78+
79+
While no setup or configuration is needed, Oxlint is configurable via an `.oxlintrc.json` file, which is useful for larger projects or projects that require more customization.
80+
This configuration format is based on ESLint v8’s flat config, making migration easy and familiar.
81+
Each source file is linted with the nearest applicable configuration, and you can use overrides to target specific glob patterns.
82+
You can also extend shared configs to keep teams consistent.
83+
84+
For projects already using ESLint, [oxlint-migrate](https://github.com/oxc-project/oxlint-migrate) can be used to migrate an existing ESLint flat-config file to Oxlint.
85+
Additionally, [eslint-plugin-oxlint](https://github.com/oxc-project/eslint-plugin-oxlint) can disable overlapping ESLint rules while both linters are used together.
86+
It is recommended to run `oxlint && eslint` to benefit from Oxlint's faster feedback cycle.
87+
88+
For more detailed instructions on how to use Oxlint and integrate it with your project or editor, check out the [installation guide](https://oxc.rs/docs/guide/usage/linter).
89+
90+
## Versioning
91+
92+
Unlike libraries that ship runtime code, a linter only changes the diagnostics it returns. Oxlint adheres to semantic versioning:
93+
94+
- Patch releases: Bug fixes only.
95+
- Minor releases: Expand rule coverage and diagnostics, without requiring configuration changes.
96+
- Major releases: CLI or configuration changes, that may require migration.
97+
Note that minor releases can still break your CI if newly added rules uncover previously hidden issues. Learn more in our [Versioning guide](https://oxc.rs/docs/guide/usage/linter/versioning).
98+
99+
## Highlights
100+
101+
### Comprehensive Rule Coverage
102+
103+
Oxlint includes over 500 rules from various sources:
104+
105+
- Complete ESLint rule set, including TypeScript-specific rules from `typescript-eslint` (excluding type checked rules).
106+
- Popular plugin rules from `eslint-plugin-unicorn`, `eslint-plugin-jsdoc`, `eslint-plugin-react`, `eslint-plugin-react-hooks`, `eslint-plugin-jest`, and `eslint-plugin-import`
107+
- Unique Oxlint rules like [bad comparison sequence](https://oxc.rs/docs/guide/usage/linter/rules/oxc/bad-comparison-sequence), [const comparisons](https://oxc.rs/docs/guide/usage/linter/rules/oxc/const-comparisons), and [only used in recursion](https://oxc.rs/docs/guide/usage/linter/rules/oxc/only-used-in-recursion)
108+
109+
### Flexible Configuration
110+
111+
Configure Oxlint through `.oxlintrc.json` files with support for:
112+
113+
- Nested configurations that apply to specific directories
114+
- Override patterns for targeting specific file types or locations
115+
- Shared configuration extending for team consistency
116+
117+
### Editor Integration
118+
119+
First-class editor support with extensions for:
120+
121+
- [VS Code](https://marketplace.visualstudio.com/items?itemName=oxc.oxc-vscode)
122+
- [IntelliJ IDEA and WebStorm](https://plugins.jetbrains.com/plugin/27061-oxc)
123+
- [Zed Editor](https://zed.dev/extensions?query=oxc)
124+
- Language server protocol support for other editors
125+
126+
### Helpful Diagnostics
127+
128+
Oxlint is built to deliver clear, actionable error messages - not just describing the issue, but visualizing it and suggesting how to fix it.
129+
130+
![CLI Demo](https://github.com/oxc-project/oxc/assets/1430279/094a3b24-0433-42ae-aad2-48a7dec2b985)
131+
_Oxlint running in the terminal with detailed error reporting_
132+
133+
## Benchmark
134+
135+
Our [benchmark](https://github.com/oxc-project/bench-javascript-linter) reveals that Oxlint is around 50~100 times faster than ESLint with the same setup.
136+
137+
| Tool | Time |
138+
| ---------------------- | -------- |
139+
| oxlint (multi thread) | 615.3 ms |
140+
| oxlint (single thread) | 1.840 s |
141+
| eslint | 33.481 s |
142+
143+
## Roadmap
144+
145+
Oxlint 1.0 is just the beginning! While it is stable, we still have important features and improvements planned for future releases:
146+
147+
**Custom Rules** – JavaScript plugin support is coming soon, enabling teams to write custom rules that integrate seamlessly with Oxlint's architecture.
148+
149+
**Performance Optimizations** – Continued improvements to parsing and analysis speed.
150+
151+
**Fine-grained (per-glob) configuration** - ESLint v9 configuration
152+
153+
## Acknowledgements
154+
155+
Oxlint 1.0 represents the collective effort of [over 200 contributors](https://github.com/oxc-project/oxc/graphs/contributors) who have shaped this project. We're grateful for every bug report, feature request, and code contribution.
156+
157+
Special recognition goes to:
158+
159+
- [@branchseer](https://github.com/branchseer) for implementing the multi-file analysis runtime.
160+
- [@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.
161+
- [@camchenry](https://github.com/camchenry) for implementing nested configuration support.
162+
- [@DonIsaac](https://github.com/DonIsaac) for improving configuration, documentation and website, and for representing Oxc at [SquiggleConf 2024](https://2024.squiggleconf.com).
163+
- [@leaysgur](https://github.com/leaysgur) for the RegExp parser and JSDoc plugin.
164+
- [@Sysix](https://github.com/Sysix) for maintaining `eslint-plugin-oxlint` and significant contributions to the language server and VSCode extension.
165+
- [@u9g](https://github.com/u9g) and [@rzvxa](https://github.com/rzvxa) for implementing control flow graph analysis.
166+
167+
## Join the Community
168+
169+
We'd love to hear your feedback on Oxlint and are excited to see how it helps improve your development workflow. Connect with us:
170+
171+
- **Discord**: Join our [community server](https://discord.gg/9uXCAwqQZW) for real-time discussions
172+
- **GitHub**: Share feedback on [GitHub Discussions](https://github.com/oxc-project/oxc/discussions)
173+
- **Issues**: Report bugs or request features on our [issue tracker](https://github.com/oxc-project/oxc/issues)
174+
175+
Your feedback drives Oxlint's evolution.
176+
177+
## Give It a Try
178+
179+
To get started, follow the [installation guide](https://oxc.rs/docs/guide/usage/linter), or learn more about the [Oxc project](https://oxc.rs/docs/guide/introduction).

0 commit comments

Comments
 (0)