Patch Changes
-
#1651
ffc2d14Thanks @aidenybai! - Upgrade the Oxc parser and Oxlint runtime while preserving hard failures for broken JS plugins. -
#1652
f7efb7dThanks @aidenybai! - Keep ESLint presets on React Doctor's curated low-noise rule behavior and honor configured capabilities when a rule declaresdisabledWhen, including suppressing manual-memoization diagnostics for React Compiler projects. -
#1646
05ef989Thanks @aidenybai! - Keep the interactive score header intact in narrow split views and invalidate locally stale scan results when rule implementations change.Report standalone Three.js render loops that use
requestAnimationFrameinstead of the renderer-managedsetAnimationLoopAPI.Include standalone Three.js, supported React framework, Remotion, and React Three Fiber ecosystem packages in automatic workspace project discovery.
-
#1739
a04b933Thanks @aidenybai! - Avoidartifact-env-leakfalse positives from vendored source-map content and intentionally public token names. -
#1730
adc3a91Thanks @skoshx! - Fixrn-no-raw-textfalse positives in components that return only direct<fbt>or<fbs>elements. -
#1732
2c4560fThanks @skoshx! - Classify fragment returns that contain only translation elements and static text as text-producing components. -
#1723
e1d4c51Thanks @skoshx! - Preventrn-no-raw-textreports for<fbt>content passed through verified React Native text wrappers. -
#1658
905607fThanks @skoshx! - Prevent stack overflows while resolving deeply nested local function references. React Doctor now stops following a reference chain after a bounded number of steps instead of aborting the lint scan. -
#1717
17eeeb5Thanks @skoshx! - Fix arerender-state-only-in-handlersfalse positive when a member hook consumes state. -
#1706
afa1780Thanks @aidenybai! - Avoid false positives for loading resets infinally, animation duration utilities, and string message substring searches. -
#1734
025d69dThanks @skoshx! - Fixjs-set-map-lookupsfalse positives for substring checks on values returned by the globalStringconstructor. -
#1725
0f59a3bThanks @aidenybai! - Runtest-noiserules in ambiguous product-named directories such astools,demo, andmigrationswhen they are below a recognized application source root. Explicit test surfaces and root-level tooling or example directories remain excluded. -
#1668
5bc88aeThanks @skoshx! - Ignore browser-global names in TypeScript-only positions so interface and type property keys are not reported as unsafe module-scope runtime access. -
#1673
4bf7affThanks @aidenybai! - Use the nearest workspace root when detecting Fast Refresh ownership so nested checkouts keep the correct rule coverage. -
#1671
bd08406Thanks @aidenybai! - Stop recommendingflatMapas a guaranteed performance improvement for.map().filter(Boolean). The rule now suggests a single-passreduceorfor...ofrewrite only for measured hot paths. -
#1663
2b0f06eThanks @aidenybai! - Improve repeated effect analysis and deeply nested JSX performance, preserve derived-state detection through transparent TypeScript wrappers, and upgrade Oxc parser and linter dependencies. -
#1624
8c2f03aThanks @aidenybai! - Make React cleanup a first-class part of React Doctor with diagnostics for complex React functions and repeated JSX composition. Keep whole-project unused file, export, type, dependency, and import-cycle analysis as explicit opt-in rules while removing the separate Deslop packages, experimental language server, and IDE extensions. -
#1654
6416370Thanks @aidenybai! - Add component-composition and correctness rules for shadcn, Radix UI, Base UI, React Aria, TanStack Table, and TanStack Virtual behind six new project capabilities (shadcnfromcomponents.json; the rest from their package dependencies). Dialog surfaces that render no title part and carry no accessible name are reported across all three libraries (shadcn DialogContent/SheetContent/AlertDialogContent/DrawerContent, Radix Dialog.Content and AlertDialog.Content, Base UI Dialog.Popup and AlertDialog.Popup). Icon-sized shadcn Buttons with no accessible name, shadcn FormItem fields wrapping a FormControl without a FormLabel, and Base UI Field.Root controls without a Field.Label are reported as unlabeled. Raw Input, Textarea, and Button controls placed directly inside shadcn InputGroup are reported in favor of its InputGroupInput, InputGroupTextarea, and InputGroupAddon parts, and presence-onlydata-[selected]:/data-[disabled]:Tailwind variants on command items are reported because cmdk renders both attributes as"true"or"false". TanStack Form submit handlers that call the form'shandleSubmitwithoutevent.preventDefault()are reported because the browser still performs a native full-page submission. Tabs triggers provably inside the root without the list part are reported for shadcn, Radix, and Base UI; the existingshadcn-tabs-trigger-requires-listrule is now enabled by default for shadcn projects through the capability gate and no longer risks false positives on extracted trigger subcomponents. React Aria Dialogs without a Heading or aria-label are reported as unnamed. TanStack Tabledata/columnsoptions that provably get a new array identity every render (inline literals, render-scoped const arrays, fresh?? []fallbacks, inline.filter()/.map()transforms) are reported for rebuilding row and column models each render and looping auto-reset features, and elements measured by TanStack Virtual'smeasureElementwithout adata-indexattribute are reported because the virtualizer drops the measurement. -
#1742
28d4343Thanks @aidenybai! - Avoid cleanup false positives for callback refs, observer iteration, and effect-local stored disposers.