Releases: oxc-project/oxc
Releases · oxc-project/oxc
oxlint v1.12.0
[1.12.0] - 2025-08-17
Announcing Oxlint Type-Aware Preview
🚀 Features
- 09b597f linter: Handle help message from tsgolint (#13143) (Boshen)
- aecacae linter: Support
ignorePatterns
for nested configs (#12210) (Sysix) - c661bac linter: Add eslint/prefer-template rule (#13117) (yefan)
- 920e06f linter: Implement fixer for jsx_curly_brace_presence (#13005) (RoelGo)
- 1c79d02 linter: Add react/jsx-fragments rule (#12988) (Peter Cardenas)
- a799982 linter/consistent-type-specifier-style: Add fixer for
top-level
style config (#13023) (Li Wei) - 61112a3 linter: Add 36 new TypeScript ESLint rules with comprehensive test fixtures (#12893) (Copilot)
- 4ce252c linter: Add dangerous suggestion for
jsx-a11y/tabindex-no-positive
(#12963) (Sysix)
🐛 Bug Fixes
- 66a350e oxlint: Should type linting files after ignore (#13149) (Boshen)
- 81b0162 linter: Preserve json key order for
oxlint --init
(#13121) (Boshen) - f97791a linter/no-this-alias: Update NoThisAliasConfig default config (#13095) (camc314)
- 43b1c5a linter: Do not count type-aware rules, when not enabled (#13062) (Sysix)
- 618ee87 linter/array-callback-return: Fix handling of default case in switch statements for array-callback-return rule (#13081) (Li Wei)
- c211d32 linter: Fix whitespace handling in disable directives (#13083) (Li Wei)
- a0ccada tsgolint: Handle non-zero exit status from tsgolint process (#13087) (camc314)
- b0558a4 linter: Prevent unsound use of
Allocator
across threads (#13032) (overlookmotel) - 2d287d0 linter/no-unused-private-class-members: False positive with private member in compound assignments (#13053) (yefan)
🚜 Refactor
- 700b412 linter: Add impl for
TsGoLintDiagnostic
intoMessage
(#13144) (Sysix) - 437a63d linter:
message_to_message_with_position
helper function (#13140) (Sysix) - 8459a12 linter: Pass paths to
TsGoLintState.lint
method (#13131) (Sysix) - 0dd7908 linter: Fix dead code warnings when compiling
napi/oxlint2
(#13132) (overlookmotel) - f0a517f linter: Pass cwd instead of
LintServiceOptions
intoTsGoLintState
(#13127) (Sysix) - b638371 language_server: Do not check twice for supported extension (#13130) (Sysix)
- 34ae2f0 linter: Move
tsgolint.rs
tooxc_linter
crate (#13126) (Sysix) - 9f924f6 linter: Always explicitly initialize Rayon thread pool (#13122) (overlookmotel)
- 6c5b8be linter: Create
AllocatorPool
inRuntime::new
(#13106) (overlookmotel) - cc2a85b linter: Remove
CliRunResult
fromTsGoLintState
(#13119) (Sysix) - 23e5642 linter: Move
TsGoLintInput
creation into own function (#13118) (Sysix) - 0453ee3 linter: Rename var for consistency (#13074) (overlookmotel)
- 5783df2 linter: Dereference
Allocator
fromAllocatorGuard
(#13073) (overlookmotel) - 1d77d92 linter: Avoid unnecessary var initialization (#13072) (overlookmotel)
- 1c15288 linter: Extract duplicated
is_jsx_fragment
function to shared utils (#13093) (Copilot) - 0b61338 linter/jsx-curly-brace-presence: Iter over chars rather than using regex (#13094) (Copilot)
- 74fb6c9 linter: Reduce repeated code (#13070) (overlookmotel)
⚡ Performance
oxlint v1.11.2
[1.11.2] - 2025-08-12
🐛 Bug Fixes
- c461a86 oxlint: Fix type-aware linting crash when Vue files are present (#13007) (Copilot)
- 42de3d1 linter: Update warn_correctness to correctly warn when using vitest plugin (#12991) (camc314)
- 1b0136e linter/exhaustive-deps: Use codegen in fixer rather than manual string manipulation (#12987) (camc314)
- 2936545 linter/tsgolint: Report an error if tsgolint executable failed to spawn (#12984) (camc314)
- 166f5cc linter: Fix no-fallthrough rule, when the default condition is not last (#12927) (Li Wei)
- d7e1ddb linter/config: Ensure that overrides correctly replace base rules (#12941) (camc314)
- a13b3ee oxlint: Run
tsgolint.CMD
under windows (#12932) (Sysix)
🚜 Refactor
- 69303de oxlint: Pass
DiagnosticService
as a parameter forTsGoLintState.lint()
(#13004) (Sysix)
🧪 Testing
- fb8cbbf oxlint: Enable tsgolint test with config parameter for windows (#13001) (Alexander S.)
- d59f3bb oxlint: Match
x.ys
when replacing var (#12990) (camc314) - 6b054b6 linter/expect-expect: Add test case for calling expect as return arg (#12983) (camc314)
- d7cca12 linter: Add test for extended configs and overrides for tsgolint (#12924) (camchenry)
oxlint v1.11.1
[1.11.1] - 2025-08-09
🐛 Bug Fixes
- 8c57153 npm/oxlint: Fix
oxlint-tsgolint
version range for yarn (Boshen) - 7fc907f linter: Resolve configured rules for every file linted by
tsgolint
(#12886) (camchenry) - c8e200c linter:
react/jsx-curly-brace-presence
report for JSXAttributeItem with quote char inside (#12888) (Sysix) - dac0f33 linter:
react/jsx-curly-brace-presence
report for JSXAttributeItem with padding space (#12887) (Sysix)
🚜 Refactor
- 51aaafd rust: Enable
unnecessary_unwrap
lint (#12908) (camc314) - 106e7a7 linter/expect-expect: Use visitor pattern to detect
expect
calls (#12906) (camc314) - 238b183 linter: Use
fast-glob
instead ofglobset
forGlobSet
(#12870) (shulaoda) - c072e01 all: Add missing lifetimes in function return types (#12895) (overlookmotel)
- 9e3963f linter: Allow marking rule as a tsgolint rule (#12890) (Cam McHenry)
- 6437a3b linter/label-has-associated-control: Remove unnecessary globset (#12863) (shulaoda)
- 78c311c linter/no-unassigned-import: Use
fast-glob
instead ofglobset
(#12867) (shulaoda) - fcdb91d linter/no-restricted-imports: Use
fast-glob
instead ofglobset
(#12868) (shulaoda)
⚡ Performance
🧪 Testing
- 9d946aa oxlint: Skip
--type--aware
test forbig-endian
(#12911) (Sysix) - 695fbdd oxlint: Fix
--type-aware
test onbig-endian
and skip forwindows
(#12910) (Sysix) - 38118ab oxlint: Fix
--type-aware
snapshot + add non tsgolint rule (#12909) (Sysix) - 281f939 linter/expect-expect: Add test case for
expect
call in for loop (#12907) (camc314)
oxlint v1.11.0
oxlint v1.10.0
[1.10.0] - 2025-08-06
🚀 Features
- 44ac5a1 linter: Add eslint/no-unassigned-vars rule (#11365) (yefan)
- ce6eeee linter: Add
eslint/prefer-destructuring
rule (#12721) (yefan) - 9b35600 linter/jsx-a11y: Add support for mapped attributes in label association checks (#12805) (camc314)
- 5475075 vscode/language_server: Add
tsConfigPath
option (#12484) (Sysix) - a754f7a linter: Support
countVoidThis
option inmax-params
rule (#12604) (yefan)
🐛 Bug Fixes
- 2c1dab6 linter/no-unassigned-vars: False positive with variables in for loop (#12833) (camc314)
- 5a24574 linter/func-style: Fix more false positives (#12828) (camc314)
- 33a7320 linter/no-throw-literal: Fix unconditional recursion in
could_be_error
(#12819) (camc314) - a3aec6a linter/explicit-module-boundary-types: Debug assertion fail with top level return (#12820) (camc314)
- 6efe457 linter/no-empty-function: Respect allow options for functions and arrow functions (#12814) (camc314)
- 1c21c46 linter/new-cap: Fix panic with computed member expr (#12804) (camc314)
- 45206dd linter: Apply fix span offset after fixing the section source text (#12758) (Sysix)
- 1e97e35 linter/unicorn/prefer-structured-clone: Update Default implementation for
PreferStructuredCloneConfig
(#12791) (camc314) - d382159 linter/unicorn/prefer-object-from-entries: Update Default implementation for
PreferObjectFromEntriesConfig
(#12790) (camc314) - b07d29c linter/typescript/no-this-alias: Update Default implementation for
NoThisAliasConfig
(#12789) (camc314) - 0db34ab linter/react/jsx-filename-case: Update Default implementation for
JsxFilenameExtensionConfig
(#12788) (camc314) - ff84eff linter/jest/prefer-lowercase-title: Update Default implementation for
PreferLowercaseTitleConfig
(#12787) (camc314) - 5175c6d linter/jest/no-large-snapshots: Update Default implementation for
NoLargeSnapshotsConfig
(#12786) (camc314) - 0eaebcd linter/jest/no-deprecated-functions: Update Default implementation for
JestConfig
(#12785) (camc314) - 4265db7 linter/import/no-anonymous-default-export: Update Default implementation for
NoAnonymousDefaultExport
config (#12784) (camc314) - 6a360e3 linter/import/extensions: Update Default implementation for ExtensionsConfig (#12783) (camc314)
- 42c8f29 linter: Default options for
eslint/no-else-return
(#12762) (Sysix) - 4eac511 linter: Default options for
eslint/no-unneeded-ternary
(#12761) (Sysix) - 9c01dbf linter: Default options for
eslint/new-cap
(#12760) (Sysix) - b25406f linter/explicit-function-return-types: Update default values in ExplicitFunctionReturnTypeConfig (#12718) (camc314)
- ce5876d parser: Validate inner expression of type assertions in assignment targets (#12614) (camc314)
- 5383331 linter/explicit-mod-boundary-types: False positive with jsx elements (#12678) (camc314)
- d0e99b5 linter/explicit-mod-boundary-types: False positive with call expressions (#12677) (camc314)
- 525137e linter: Add missing options to no-inner-declarations (#12661) (camc314)
- fc4a327 linter: No-unused-vars false positive with class property initializers (#12660) (camc314)
- 6af8631 linter/no-unused-vars: False positive with chain expression (#12609) (camc314)
- 744ef52 linter: Correct
array-type
handling ofdefault: 'array-simple'
(#12607) (yefan)
🚜 Refactor
- 3f37ed1 linter: Replace
lazy_static
withstd::sync::LazyLock
(#12822) (Copilot) - 69fd08d semantic: Improve unused label tracking and add debug assertions (#12812) (camc314)
- 030e397 linter: Simplify parsing CLI args (#12802) (overlookmotel)
- c0e224a linter: Store
ExternalRuleId
inOxlintOverrides
not raw names (#12502) (camc314) - 61587e4 linter: Correct comment (#12792) (overlookmotel)
- 5adcb98 linter: Use
u32
to keep track of last fixed source text position (#12696) (Sysix) - 77acc11 linter, transformer: Use
Scoping::symbol_is_unused
(#12666) (overlookmotel) - ecf1cff language_server: Simplify offset adjustment by using
Message.move_offset
(#12647) (Sysix) - 7695393 linter: Simplify offset adjustment by using
Message.move_offset
(#12595) (Sysix) - b36dc92 linter: Refactor large arrays to reduce binary size (#12603) (Boshen)
- 3b9f1f0 linter: Update iter_outer_expressions to take AstNodes reference (#12583) (camc314)
📚 Documentation
- e760fd4 linter: Complete linter rules documentation with missing "Why is this bad?" sections (#12757) (Copilot)
- 514322c rust: Add minimal documentation to example files in crates directory (#12731) (Copilot)
- 1d910d5 linter: Fix typescript/consistent-type-imports rule options to match TypeScript ESLint (#12707) (Copilot)
- 45e2fe8 rust: Fix typos and grammar mistakes in Rust documentation comments (#12715) (Copilot)
- 7660a88 linter: Improve linter rule documentation with "Why is this bad?" sections and enhanced examples (#12711) (Copilot)
- de1de35 rust: Add comprehensive README.md documentation for all Rust crates (#12706) (Copilot)
⚡ Performance
- 09ae2a9 linter: Eliminate unnecessary Iterator::collect() allocations (#12776) (Copilot)
- 693673b linter: Reduce iterations when collecting directories for nested configs (#12329) (overlookmotel)
🎨 Styling
- cacbd1e linter/no-empty-function: Order match arms consistently (#12815) (camc314)
- c15da81 codegen, formatter, linter, minifier, transformer: Re-order imports (#12725) (Copilot)
🧪 Testing
oxlint v1.9.0
[1.9.0] - 2025-07-29
🚀 Features
🐛 Bug Fixes
- 0fd3e87 linter: Default options for
eslint/yoda
(#12540) (Sysix) - 724776f linter: Default options for
unicorn/switch-case-braces
(#12539) (Sysix) - fda45ea linter/promise/prefer-await-to-callbacks: False positive for
addEventListener
(#12537) (Copilot) - 1a710e3 linter/array-type: Fix more false negatives (#12501) (camc314)
- 2b5bf98 linter: Consistent-function-scoping false positive with hoisted var declarations (#12523) (camc314)
- cc19c8b vscode: Fix statusbar icon order (#12544) (Christian Fehmer)
- 209d006 linter: Parse vue lang attribute without quotes (#12517) (Sysix)
- 85a34ce linter/array-type: False negative with arrays in generic args (#12500) (camc314)
- 98c1fbb linter/require-await: Improve async keyword detection in get_delete_span function (#12494) (camc314)
- 7c75dba linter/require-await: Improve span calculation for object properties (#12490) (camc314)
- 2b261cf linter/exhaustive-deps: False positive in exhaustive deps (#12471) (camc314)
🚜 Refactor
- a696227 linter: Remove AstKind for SimpleAssignmentTarget (#12401) (Tyler Earls)
- 7af38e1 napi/oxlint: Simplify
ExternalLinterLintFileCb
type (#12572) (overlookmotel) - 543fd53 napi/oxlint: Rename
run
tolintFile
(#12567) (overlookmotel) - 0179c86 napi/oxlint: Reverse args of
ExternalLinter::new
(#12566) (overlookmotel) - 491c401 linter: Remove
#[must_use]
fromLintService::with_*
methods (#12560) (overlookmotel) - d44b0ac linter: Remove
Runner
trait (#12559) (overlookmotel) - bea652f linter: Add
vue
andregex
toBuiltinLintPlugins
(#12542) (Sysix) - aa9dd21 linter/no-eval: Get source type from
Semantic
(#12514) (overlookmotel) - 5c33fc7 diagnostics: Implement
Eq
andOrd
forInfoPosition
(#12505) (overlookmotel) - 8c8c8bc napi/oxlint: Diagnostics communicate which rule via rule index, not rule ID (#12482) (overlookmotel)
- e2d9b4d fixer: Add Debug trait to PossibleFixes and Message structs (#12493) (camc314)
- f0b1f0d napi/oxlint, napi/parser: Remove source length from
RawTransferMetadata
(#12483) (overlookmotel) - 7e4959a napi/oxlint: Rename
rules
toruleNames
(#12477) (overlookmotel) - 7a0da04 diagnostics: Remove Option wrapper from MPSC channel and sender field (#12467) (camc314)
🧪 Testing
oxlint v1.8.0
[1.8.0] - 2025-07-22
NOTE: While custom JS plugins are mentioned in the release notes, they are not yet supported in this release. We are actively building them out.
🚀 Features
- 6d2b549 napi/oxlint: Pass AST in buffer to JS (#12350) (overlookmotel)
- 14f0159 linter/exhaustive-deps: Add auto-fixer (#12354) (Don Isaac)
🐛 Bug Fixes
- 99e105f linter: Correct autofix in
unicorn/prefer-number-properties
for Infinity (#12445) (yefan) - 0b539e3 linter:
unicorn/catch-error-name
wasn't using the ignore property (#12446) (Parbez) - 05fba9b linter: Don't panic on
TSNonNullExpression
inunicorn/prefer-array-find
(#12400) (Sysix) - 46e33d5 linter: Improve error handling in config file lookup (#12391) (camc314)
- 4621872 linter: Parse second script block for
svelte
files (#12390) (Sysix) - fbe7eb4 linter/filename-case: Fix default config when no config is provided (#12389) (camc314)
- fea9df4 linter: Report errors with the correct severity for custom plugins (#12362) (camc314)
- 652c038 linter: Mark correctly enabled default rules for
--rules
(#12163) (Sysix) - eadc359 linter: Correct source text for vue files having script attributes containig ">" char inside (#12375) (Sysix)
- 54d143a linter/exhaustive-deps: More descriptive messages for always-rerender violations (#12336) (Don Isaac)
- dac4db9 linter/exhaustive-deps: Better diagnostics for missing dependencies (#12337) (Don Isaac)
- 119d23a linter/prefer-array-flat-map: Error for
.flat(1.0)
(#12360) (overlookmotel)
🚜 Refactor
- 2d9291c linter/prefer-number-properties: Simplify fixer logic (#12451) (camc314)
- c5dff1e linter, napi/parser: Add
source_len
field toRawTransferMetadata
(#12383) (overlookmotel) - 5e3b415 linter: Duplicate
RawTransferMetadata
inoxc_linter
crate (#12382) (overlookmotel) - 773fd88 linter: Pass
&Allocator
intoLinter::run_external_rules
(#12374) (overlookmotel) - b10ed11 linter: Make unwrap unconditional (#12371) (overlookmotel)
- a0631d4 linter: Move running external rules into feature-gated function (#12370) (overlookmotel)
- 4fc4e7c linter: Make feature gates for
oxlint2
feature consistent (#12369) (overlookmotel) - 50b1786 linter: Clarify usage of
Allocator
andAllocatorGuard
(#12332) (overlookmotel) - 26d3a39 linter: Remove
ModuleContentOwner
abstraction (#12331) (overlookmotel)
📚 Documentation
- 3c21d94 linter: Correct comment on
RawTransferMetadata2
type (#12428) (overlookmotel)
💼 Other
oxlint v1.7.0
[1.7.0] - 2025-07-16
🚀 Features
- 4f50750 linter: Load custom JS plugins configured in overrides (#12324) (camc314)
- 5e428a4 linter/eslint-plugin-next: No-html-link-for-pages rule addition (#12194) (Gabriel Díaz Aguilera)
- c551b8f linter: Report diagnostics from custom plugins (#12219) (camc314)
- d387729 linter: JS custom rules config (#12160) (camc314)
- 152e59d napi/oxlint: Read source text into start of allocator (#12122) (overlookmotel)
- bde1ef1 linter: Load custom JS plugins (#11980) (camc314)
- d4ebd14 linter: Add
oxlint2
/disable_oxlint2
feature flags (#12130) (camc314) - a4dae73 linter: Introduce
LintPlugins
to store builtin + custom plugins (#12117) (camc314)
🐛 Bug Fixes
- 3f9a1f0 linter/no-unused-private-class-members: Fix false positive with nullish coalescing assignments (#12317) (camc314)
- 47fad0e linter/no-empty-file: False positive with empty file with triple slash directive (#12293) (camc314)
- 633ba30 linter: False positive with unknown plugins when unmatched eslint rule (#12285) (camc314)
- 9720774 linter: Report implicit config parse errors (#12260) (Simon Buchan)
- 1920c6b language_server: Respect the root
.oxlintrc.json
file forignorePatterns
(#12171) (Sysix) - 98708eb linter: Fix inconsistent behavior in
no-duplicate-imports
rule (#12192) (yefan) - 853d2bc linter, language_server: Correctly identify usage of
import
plugin (#12157) (overlookmotel)
🚜 Refactor
- b28e447 linter: Remove dead code (#12328) (overlookmotel)
- ee761de ast: Remove
AstKind
forAssignmentTarget
(#12252) (Tyler Earls) - c68b607 ast: Rename
TemplateLiteral::quasi
toTemplateLiteral::single_quasi
(#12266) (Dunqing) - 32c32af ast: Check whether there is a single
quasi
inTemplateLiteral::quasi
(#12265) (Dunqing) - 8f6a1da linter/js-plugins: Use
u32
for IDs (#12243) (overlookmotel) - 36cd364 linter/js-plugins: Clean up code (#12242) (overlookmotel)
- 8c02ebd linter/js-plugins: Rename
specifiers
topaths
(#12241) (overlookmotel) - 3adaf98 linter: Simplify getting nodes count (#12239) (overlookmotel)
- 6e54645 language_server: Store
LintService
instead ofLinter
(#12016) (Sysix) - 113cf8c linter: Move
LintServiceOptions.paths
toLintService.with_paths
(#12015) (Sysix) - acfac68 oxlint: Adjust ignore patterns by counting bytes instead of chars (#12209) (Sysix)
- 729b82b linter: Rename
plugin_name
toplugin_specifier
(#12148) (overlookmotel) - 532b816 linter: Use
to_string
instead ofinto
(#12147) (overlookmotel) - 89f2a69 linter: TODO comment (#12146) (overlookmotel)
- f90d3e1 linter: Feature gate
load_external_plugin
by bothoxlint2
anddisable_oxlint2
features (#12141) (overlookmotel) - 12e4ec7 linter: Make
tokio
dependency optional (#12140) (overlookmotel) - 1d2eaca oxlint2: Introduce
force_test_reporter
feature for consistent graphical outputs (#12133) (camc314) - 8814c53 ast: Remove
AstKind
forPropertyKey
(#12108) (camchenry) - 228cff5 semantic,linter: Assert that Program is always the first node (#12123) (Ulrich Stark)
- e8e2a25 ast: Remove
AstKind
forAssignmentTargetPattern
(#12105) (camchenry) - f7c675d linter: Rename
LintPlugins
toBuiltinLintPlugins
(#12116) (camc314) - a9e5ec0 linter: Access plugins through config instead of storing directly (#12115) (camc314)
- 9736a7f linter: Simplify
unicorn/require-post-message-target-origin
(#12110) (shulaoda)
📚 Documentation
⚡ Performance
- d0f8b88 linter/js-plugins: Do not copy
Vec
(#12248) (overlookmotel) - 4284d19 linter/js-plugins: Use hashmap
Entry
API + remove tempVec
(#12247) (overlookmotel) - c7889c3 semantic,linter: Simplify implementation and uses of ancestors iterators (#12164) (Ulrich Stark)
- f99959c linter: Move work out of loop (#12145) (overlookmotel)
- 514d40c linter: Do not create
Resolver
unless required (#12142) (overlookmotel) - 7103527 linter/no-constructor-return: Optimize loop (#12138) (overlookmotel)
🎨 Styling
🧪 Testing
oxlint v1.6.0
[1.6.0] - 2025-07-07
🐛 Bug Fixes
- 3f0e03e linter: Fix inconsistent behavior in
no-duplicate-imports
rule (#12051) (yefan) - 6dbacea linter/no-barrel-file: No diagnostic tag when some modules arent resolved (#12049) (camc314)
- dd6b1ee linter/extensions: False positives with non configured extensions (#11872) (camc314)
- 5851d2c oxlint: Always follow symlinks; remove cli flag
--symlinks
(#12048) (Boshen) - eb1c596 linter/consistent-index-object-style: Fix default impl for rule config (#12031) (camc314)
🚜 Refactor
- 54cf5cb semantic: Remove Option from parent_* methods (#12087) (Ulrich Stark)
- 8d1be94 language_server: Fix todo by avoiding allocation (#12096) (Ulrich Stark)
- 72418ca linter:
RuntimeFileSystem::write_file
take&str
(#12075) (overlookmotel) - 2f7cbda linter: Move napi bindings out of oxc_linter (#12072) (camc314)
- 9254252 linter: Move code (#12071) (overlookmotel)
- 2319710 linter: Shorten code (#12070) (overlookmotel)
- 387762d linter/no-unused-vars: Simplify check for export nodes (#12044) (Dunqing)
- f1d4086 ast: Remove
AstKind
forModuleDeclaration
(#12022) (camchenry) - 754c05a ast: Remove
AstKind
forTSTypeName
(#11990) (camchenry) - 0c7f9e8 linter: Remove a branch (#12032) (overlookmotel)
📚 Documentation
- 85ec382 linter: Add good/bad example for
nextjs/no-page-custom-font
(#12092) (Sysix) - 9240342 linter: Add docs for
nextjs/no-script-component-in-head
(#12091) (Sysix) - 0878414 linter: Add good/bad example for
nextjs/no-head-import-in-document
(#12061) (Sysix) - 222bc73 linter: Add bad/good example for
nextjs/no-head-element
(#12059) (Sysix) - a7e9f50 linter: Add good/bad example for
nextjs/no-title-in-document-head
(#12065) (Sysix) - 51c6818 linter: Add good/bad example for
nextjs/no-document-import-in-pages
(#12064) (Sysix) - c7b38f9 consistent-indexed-object-style: Clarify docs (#12019) (Luca Ban)
⚡ Performance
- 04e2de5 linter: Avoid iteration when checking import is
AllButDefault
orSideEffect
ineslint/no-duplicate-imports
(#12093) (Sysix) - e2a7d6a linter: Check filepath before running
nextjs/no-head-element
(#12062) (Sysix) - 00a9fd9 linter: Check for filename before running
nextjs/no-head-import-in-document
rule (#12060) (Sysix) - 62a3ce0 linter: Replace
unicode-segmentation
crate withicu_segmenter
(#12063) (Sysix)
oxlint v1.5.0
[1.5.0] - 2025-07-02
🚀 Features
🐛 Bug Fixes
- f732589 linter: Panic in
consistent-type-imports
when the source contains a{
(#12002) (camc314) - 4b2c658 oxlint: Make
--version
exit code be0
(#11986) (camc314)
🚜 Refactor
- f7a2ae4 ast: Add
AstKind
forAssignmentTargetPropertyIdentifier
,AssignmentTargetPropertyProperty
(#11985) (camc314) - cfa52c2 ast: Add
AstKind
forAssignmentTargetRest
(#11984) (camc314) - 3f91f24 linter: Remove
RulesCache
(#11981) (camc314) - 54582cb ast: Add
AstKind
forBindingProperty
(#11974) (camc314)