Skip to content

Releases: oxc-project/oxc

oxlint v1.12.0

17 Aug 04:29
5887053
Compare
Choose a tag to compare

[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 into Message (#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 into TsGoLintState (#13127) (Sysix)
  • b638371 language_server: Do not check twice for supported extension (#13130) (Sysix)
  • 34ae2f0 linter: Move tsgolint.rs to oxc_linter crate (#13126) (Sysix)
  • 9f924f6 linter: Always explicitly initialize Rayon thread pool (#13122) (overlookmotel)
  • 6c5b8be linter: Create AllocatorPool in Runtime::new (#13106) (overlookmotel)
  • cc2a85b linter: Remove CliRunResult from TsGoLintState (#13119) (Sysix)
  • 23e5642 linter: Move TsGoLintInput creation into own function (#13118) (Sysix)
  • 0453ee3 linter: Rename var for consistency (#13074) (overlookmotel)
  • 5783df2 linter: Dereference Allocator from AllocatorGuard (#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

  • 3bfb235 linter: Implement streaming diagnostics for tsgolint instead of waiting for output to finish (#13098) (copilot-swe-agent)

oxlint v1.11.2

12 Aug 05:04
18cfd18
Compare
Choose a tag to compare

[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 for TsGoLintState.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

09 Aug 10:06
9c5a377
Compare
Choose a tag to compare

[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 of globset for GlobSet (#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 of globset (#12867) (shulaoda)
  • fcdb91d linter/no-restricted-imports: Use fast-glob instead of globset (#12868) (shulaoda)

⚡ Performance

  • d94209b linter/new-cap: Remove unneeded clone (#12883) (camc314)

🧪 Testing

  • 9d946aa oxlint: Skip --type--aware test for big-endian (#12911) (Sysix)
  • 695fbdd oxlint: Fix --type-aware test on big-endian and skip for windows (#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

07 Aug 15:20
d9268fa
Compare
Choose a tag to compare

[1.11.0] - 2025-08-07

🐛 Bug Fixes

  • 9c4bd42 linter/jest/expect-expect: Add support for expect in array expressions (#12877) (camc314)
  • 6b4a7a7 linter: Prevent category rules from being reapplied to already-configured plugins in overrides (#12875) (camc314)

🚜 Refactor

  • 9b9249d oxc_language_server: Remove unnecessary globset (#12861) (shulaoda)

⚡ Performance

  • 2f8fc31 linter/new-cap: Use iterator chaining instead of cloning (#12879) (camc314)

🧪 Testing

  • e15093c linter/new-cap: Add tests for Intl.DateTimeFormat (#12878) (camc314)

oxlint v1.10.0

06 Aug 10:27
5f74a0b
Compare
Choose a tag to compare

[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 in max-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 of default: 'array-simple' (#12607) (yefan)

🚜 Refactor

  • 3f37ed1 linter: Replace lazy_static with std::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 in OxlintOverrides 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

  • 3957fcc linter/no-undef: Add test case for TSImportType (#12800) (camc314)
  • d8ccff7 oxlint: Add Tester::test_fix mehod (#12754) (Sysix)
  • c6bfb8a linter: Add rule configuration consistency test (#12744) (camc314)
  • 2ceb835 linter: Fix offset for partical source texts (#12594) (Sysix)

oxlint v1.9.0

29 Jul 09:10
9220b0a
Compare
Choose a tag to compare

[1.9.0] - 2025-07-29

🚀 Features

  • 3489ce0 linter: Add typescript-eslint/explicit-module-boundary-types (#12402) (Don Isaac)

🐛 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 to lintFile (#12567) (overlookmotel)
  • 0179c86 napi/oxlint: Reverse args of ExternalLinter::new (#12566) (overlookmotel)
  • 491c401 linter: Remove #[must_use] from LintService::with_* methods (#12560) (overlookmotel)
  • d44b0ac linter: Remove Runner trait (#12559) (overlookmotel)
  • bea652f linter: Add vue and regex to BuiltinLintPlugins (#12542) (Sysix)
  • aa9dd21 linter/no-eval: Get source type from Semantic (#12514) (overlookmotel)
  • 5c33fc7 diagnostics: Implement Eq and Ord for InfoPosition (#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 to ruleNames (#12477) (overlookmotel)
  • 7a0da04 diagnostics: Remove Option wrapper from MPSC channel and sender field (#12467) (camc314)

🧪 Testing

  • 56468c7 linter/no-unused-private-class-members: Add more test cases (#12569) (camc314)
  • 191a164 linter/no-unused-private-class-members: Add more test cases (#12563) (camc314)
  • d31adcf linter: Improve sorting diagnostics (#12504) (overlookmotel)

oxlint v1.8.0

22 Jul 11:44
0b17927
Compare
Choose a tag to compare

[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 in unicorn/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 to RawTransferMetadata (#12383) (overlookmotel)
  • 5e3b415 linter: Duplicate RawTransferMetadata in oxc_linter crate (#12382) (overlookmotel)
  • 773fd88 linter: Pass &Allocator into Linter::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 and AllocatorGuard (#12332) (overlookmotel)
  • 26d3a39 linter: Remove ModuleContentOwner abstraction (#12331) (overlookmotel)

📚 Documentation

  • 3c21d94 linter: Correct comment on RawTransferMetadata2 type (#12428) (overlookmotel)

💼 Other

oxlint v1.7.0

16 Jul 23:17
b144048
Compare
Choose a tag to compare

[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 for ignorePatterns (#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 for AssignmentTarget (#12252) (Tyler Earls)
  • c68b607 ast: Rename TemplateLiteral::quasi to TemplateLiteral::single_quasi (#12266) (Dunqing)
  • 32c32af ast: Check whether there is a single quasi in TemplateLiteral::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 to paths (#12241) (overlookmotel)
  • 3adaf98 linter: Simplify getting nodes count (#12239) (overlookmotel)
  • 6e54645 language_server: Store LintService instead of Linter (#12016) (Sysix)
  • 113cf8c linter: Move LintServiceOptions.paths to LintService.with_paths (#12015) (Sysix)
  • acfac68 oxlint: Adjust ignore patterns by counting bytes instead of chars (#12209) (Sysix)
  • 729b82b linter: Rename plugin_name to plugin_specifier (#12148) (overlookmotel)
  • 532b816 linter: Use to_string instead of into (#12147) (overlookmotel)
  • 89f2a69 linter: TODO comment (#12146) (overlookmotel)
  • f90d3e1 linter: Feature gate load_external_plugin by both oxlint2 and disable_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 for PropertyKey (#12108) (camchenry)
  • 228cff5 semantic,linter: Assert that Program is always the first node (#12123) (Ulrich Stark)
  • e8e2a25 ast: Remove AstKind for AssignmentTargetPattern (#12105) (camchenry)
  • f7c675d linter: Rename LintPlugins to BuiltinLintPlugins (#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

  • 2e3db46 linter: Add missing backtick preventing website from building (#12113) (camc314)

⚡ Performance

  • d0f8b88 linter/js-plugins: Do not copy Vec (#12248) (overlookmotel)
  • 4284d19 linter/js-plugins: Use hashmap Entry API + remove temp Vec (#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

07 Jul 05:04
2594d30
Compare
Choose a tag to compare

[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 for ModuleDeclaration (#12022) (camchenry)
  • 754c05a ast: Remove AstKind for TSTypeName (#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 or SideEffect in eslint/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 with icu_segmenter (#12063) (Sysix)

oxlint v1.5.0

02 Jul 01:15
5fe60a9
Compare
Choose a tag to compare

[1.5.0] - 2025-07-02

🚀 Features

  • 899b8b4 linter: Allow namespace re-export in import/no-cycle (#11995) (Boshen)

🐛 Bug Fixes

  • f732589 linter: Panic in consistent-type-imports when the source contains a { (#12002) (camc314)
  • 4b2c658 oxlint: Make --version exit code be 0 (#11986) (camc314)

🚜 Refactor

  • f7a2ae4 ast: Add AstKind for AssignmentTargetPropertyIdentifier, AssignmentTargetPropertyProperty (#11985) (camc314)
  • cfa52c2 ast: Add AstKind for AssignmentTargetRest (#11984) (camc314)
  • 3f91f24 linter: Remove RulesCache (#11981) (camc314)
  • 54582cb ast: Add AstKind for BindingProperty (#11974) (camc314)