perf(oxfmt)!: Avoid config pre-scan#22258
Merged
graphite-app[bot] merged 1 commit intoMay 15, 2026
Merged
Conversation
Member
Author
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
I know it's not ready, but I couldn't wait and gave it a go. The changes in this PR improve the times from 3.4s -> 2.8s, so 600ms savings 🎉 |
camc314
reviewed
May 11, 2026
64672e4 to
d62f0fd
Compare
This was referenced May 13, 2026
This was referenced May 13, 2026
d62f0fd to
a7f4392
Compare
a7f4392 to
abf8de4
Compare
This was referenced May 15, 2026
Contributor
Merge activity
|
Fixes #22250 > I'm benchmarking oxfmt on a big repo with around 50k directories. > #22225 > > The changes in this PR improve the times from 3.4s -> 2.8s, so 600ms savings 🎉 > #22258 (comment) When I tested this on a local repo of about 20k, I didn't see as much improvement as reported, but there was definitely an improvement. --- > [!WARNING] > This PR changes the CLI behavior in the following nitch cases. - When you have nested configs, - and one of which is invalid, - and you run it in "write" mode Previously, the CLI would pre-scan the all config files, so an error would be reported immediately and no files would be formatted at all. With this PR, while it will still report an error and abort upon finding an invalid config file, it will now proceed to format the files for any parts where a valid config can be applied. In other words, it is highly unlikely that you will encounter this change.
abf8de4 to
21bb5d1
Compare
overlookmotel
added a commit
that referenced
this pull request
May 15, 2026
# Oxlint ### 🚀 Features - 5478fb5 linter/jsdoc: Implement `require-throws-description` rule (#22386) (Mikhail Baev) - b46d4de linter: Add `--debug` options and add per-rule timing info (#22282) (camchenry) - c73225e linter/eslint: Implement `prefer-arrow-callback` rule (#22312) (박천(Cheon Park)) - de82b59 linter: Add support for `eslint-plugin-jsx-a11y-x` (#22356) (mehm8128) - b170da3 linter: Implement no-implicit-globals (#22249) (Jovi De Croock) - f44b6c8 linter: Fill schemas `DummyRuleMap` with built-in rules (#22288) (Sysix) - 5cdb80d linter/jsx-a11y/: Implement no-interactive-element-to-noninteractive-role (#22332) (anarefolio) - 2749422 linter/jsx-a11y: Add no-noninteractive-element-interactions (#22337) (Pablo Tovar) - ba2a1d3 linter/jsdoc: Implement `require-throws-type` rule (#22358) (Mikhail Baev) - d90729d linter/jsx-a11y: Implement control-has-associated-label (#21985) (mehm8128) - 1d04903 linter/jsdoc: Implement `require-yields-type` rule (#22331) (Mikhail Baev) ### 🐛 Bug Fixes - 04c4609 linter/no-nullable-type-assertion-style: Mark as suggestion (#22450) (camc314) - 1c2b7ec linter/no-unused-vars: Handle shadowed self assignments (#22387) (camc314) - 9faa1d5 linter/no-noninteractive-tabindex: Check conditional expressions (#22435) (camc314) - 0854b3a linter/prefer-arrow-callback: Preserve TSX generic arrows in fixer (#22434) (camc314) - 410b814 linter: Supply `source_type` to codegen fixer (#22433) (camc314) - 3c1bb6f linter: Skip per-node dispatch for run_once-only rules in large files (#22398) (Connor Shea) - 5206cde linter/no-unused-vars: Improve type-only rest parameters diagnostic (#22385) (camc314) - c9a22b5 linter/consistent-function-scoping: Allow imported bindings (#22384) (camc314) - c1e966d linter: Report type-only unused parameters in no-unused-vars (#22368) (camchenry) - 4818d98 linter: Check whether path is under root before ignoring it (#20101) (Leonabcd123) - 41fcdcf linter: Fix rule count not including override rules (#19898) (Daniel Osmond) - 59b4f0e linter: Fix 'explicit-module-boundary-types' false positive with 'allowOverloadFunctions' (#22341) (camchenry) ### ⚡ Performance - 6d42395 linter: Narrow no-unsafe-optional-chaining dispatch (#22437) (camchenry) - 08595fb linter: Optimize no-unreachable (#22397) (camchenry) - 3b46a8d linter: Optimize `no-loss-of-precision` (#22395) (camchenry) - b3e2dc9 linter: Optimize `oxc/bad-array-method-on-arguments` (#22393) (camchenry) ### 📚 Documentation - dcbf62c linter: Remove some duplicate spaces (#22359) (camc314) # Oxfmt ### 💥 BREAKING CHANGES - 21bb5d1 oxfmt: [**BREAKING**] Avoid config pre-scan (#22258) (leaysgur) ### 🐛 Bug Fixes - 441d724 oxfmt: Fix "race probe" logic with unit tests (#22378) (leaysgur) - e49ee26 formatter: Respect `singleQuote` for jsdoc `import()` type paths (#22353) (Colin Lienard) - 43b9978 formatter/sort_imports: Treat subpath imports as internal (#22440) (leaysgur) - 7c5cfa0 formatter: Handle jsx trailing comment with parens (#22370) (leaysgur) - ac5f120 formatter: Fix erroneous formatting inside a template literal with parentheses (#22262) (Jovi De Croock) - 3c53a95 formatter/sort_imports: Handle ignore comment as boundary (#22369) (leaysgur) - 4dd83dd oxfmt: Send expandedStates variants as shared refs (#22366) (leaysgur) - 055cc61 formatter: Expand JSX logical chain with leading line comment (#22346) (leaysgur) - 8046222 formatter: Preserve type alias comment break (#22261) (Jovi De Croock) ### ⚡ Performance - 123c493 oxfmt: Reduce more syscalls (#22380) (leaysgur) Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Fixes #22250
When I tested this on a local repo of about 20k, I didn't see as much improvement as reported, but there was definitely an improvement.
Warning
This PR changes the CLI behavior in the following nitch cases.
Previously, the CLI would pre-scan the all config files, so an error would be reported immediately and no files would be formatted at all.
With this PR, while it will still report an error and abort upon finding an invalid config file, it will now proceed to format the files for any parts where a valid config can be applied.
In other words, it is highly unlikely that you will encounter this change.