oxlint v1.68.0 β Vue and TypeScript Rules
The headline additions in oxlint v1.68.0 are two Vue-specific linter rules.
vue/no-reserved-component-names prevents using reserved names for Vue component definitions. Vue reserves names like Switch, KeepAlive, and Teleport β using them as local component names can cause rendering issues, especially when used with resolveComponent or in .vue file <script> blocks.
vue/component-definition-name is the counterpart rule that catches when component definition names conflict with HTML elements or Vue built-in components.
On the TypeScript side, the new method-signature-style rule enforces a consistent style for interface and class method declarations. It flags cases where a class method could be written as an interface method signature, helping keep TypeScript codebases uniform.
Also new in v1.68.0: override::exclude_files lets you exclude specific files from rule overrides, giving finer control over per-directory lint configuration without complex glob patterns.
oxfmt v0.53.0 β Formatter Updates
oxfmt ships alongside oxlint with formatting improvements. The full changelog for v0.53.0 is available on the oxc-project/oxc releases page.
Parser: Tighter TypeScript Ambient Context Validation
This release brings a significant batch of parser improvements focused on TypeScript ambient context enforcement. The parser now emits precise error codes for a range of invalid declarations:
- TS1094 β accessor type parameters (setters/getters with type parameters)
- TS1095 β setters with a return type annotation
- TS1051 β optional parameters in setters
- TS1221 / TS1222 β generators and overload signatures in ambient contexts
- TS1268 / TS1337 β invalid index signature parameter types
- TS1038 / TS1036 β
declarein already-declared ambient contexts and statements in ambient blocks - TS1316 β export-as-namespace inside a namespace body
- TS1183 β function implementations in ambient contexts (e.g., inside
declareblocks)
The parser also now rejects class member modifiers in invalid combinations, module-referencing imports/exports inside namespaces, and implements clauses where the class name itself is implements.
Performance Work
Three changes target parser throughput:
- Cached token kind reuse in delimited-list loops β avoids redundant token kind lookups in array/object literals, function parameters, and similar delimited constructs.
- peek_token instead of lookahead on the modifier path β a lighter token peek replaces the heavier lookahead when scanning modifiers, reducing redundant token inspection.
- Deferred declare lookup for empty accessors β skips unnecessary symbol resolution for accessors without bodies, shaving time during semantic analysis.
Full Changelog
The complete release notes for oxc crates v0.134.0, oxlint v1.68.0, and oxfmt v0.53.0 are on the oxc-project/oxc GitHub releases page.
FAQ
Q: How does oxlint compare to ESLint? oxlint is a drop-in replacement for ESLint written in Rust. It aims for compatibility with ESLint rules and configs while delivering 10β100x faster performance on large codebases.
Q: Can oxfmt replace Prettier? oxfmt is a Rust-based formatter that supports JavaScript, TypeScript, JSX, and Vue. It is Prettier-compatible for most formatting decisions and is significantly faster on large projects.
Q: What projects use Oxc? Rolldown (the Rust-based Rollup successor), T ranspilation pipelines in production tooling, and various framework internal toolchains use Oxc under the hood.