feat: add source-patched native Oxlint path - #1664
Draft
aidenybai wants to merge 7 commits into
Draft
Conversation
commit: |
Contributor
|
React Doctor found no new issues. 🎉 Reviewed by React Doctor for commit |
Contributor
Interactive terminal E2ETerminal Control verified the built CLI at
|
aidenybai
force-pushed
the
codex/oxc-source-patch
branch
from
August 21, 2026 06:21
926212e to
fc576d5
Compare
aidenybai
force-pushed
the
codex/oxc-source-patch
branch
from
August 21, 2026 06:39
fc576d5 to
1e12d5f
Compare
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.
Why
React Doctor rules currently cross the Rust-to-JavaScript bridge, allocate JavaScript AST objects, and traverse them in V8. A native rule path removes that overhead, but maintaining a long-lived Oxc fork would create a permanent merge and distribution burden.
This keeps the published Oxlint JavaScript launcher and replaces only its N-API binding with a reproducible patch against an exact upstream commit. Stock behavior remains the default.
What changed
html-has-lang,no-access-key,no-clone-element,no-will-update-set-state,self-closing-comp,no-distracting-elements, and CFG-backedrequire-render-return.forward-ref-uses-ref,aria-props,aria-unsupported-elements,no-unescaped-entities,scope,no-set-state,no-find-dom-node, andreact-in-jsx-scope.createElement, property-key, and React API matching semantics across native rules; native utility injection resolves transitive helper dependencies.cargo lintgen.REACT_DOCTOR_NATIVE_OXLINT_BINDING_PATH; unported rules remain in the JavaScript plugin and the published binding remains the default.Validation
oxlint_v1.79.0at0db127cc16d28b97d84bac4ebeb302caf1a78c7eThe benchmarks isolate JavaScript-plugin overhead removed by native rules; they do not claim the same whole-project React Doctor speedup while most rules remain in JavaScript.
Daytona pull-request parity is unavailable in this shell because neither
DAYTONA_API_KEYnorDAYTONA_API_TOKENis present. The deterministic repository and adversarial native-versus-JavaScript comparisons are the local fallback. The PR remains draft because the native path is still opt-in research infrastructure.Test plan
nr test— 12 / 12 tasks passed; CLI suite 2,492 passed / 24 skippednr lintnr typechecknr format:checknr smoke:json-reportnr native:oxlint:verify -- --source tmp/oxc-upstreamnr native:oxlint:check -- --source tmp/oxc-upstream@react-doctor/fuzzruns for every added rule