Skip to content

oxlint-plugin-react-doctor@0.9.13

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Sep 04:36
· 8 commits to main since this release
fd23edc

Patch Changes

  • #1651 ffc2d14 Thanks @aidenybai! - Upgrade the Oxc parser and Oxlint runtime while preserving hard failures for broken JS plugins.

  • #1652 f7efb7d Thanks @aidenybai! - Keep ESLint presets on React Doctor's curated low-noise rule behavior and honor configured capabilities when a rule declares disabledWhen, including suppressing manual-memoization diagnostics for React Compiler projects.

  • #1646 05ef989 Thanks @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 requestAnimationFrame instead of the renderer-managed setAnimationLoop API.

    Include standalone Three.js, supported React framework, Remotion, and React Three Fiber ecosystem packages in automatic workspace project discovery.

  • #1739 a04b933 Thanks @aidenybai! - Avoid artifact-env-leak false positives from vendored source-map content and intentionally public token names.

  • #1730 adc3a91 Thanks @skoshx! - Fix rn-no-raw-text false positives in components that return only direct <fbt> or <fbs> elements.

  • #1732 2c4560f Thanks @skoshx! - Classify fragment returns that contain only translation elements and static text as text-producing components.

  • #1723 e1d4c51 Thanks @skoshx! - Prevent rn-no-raw-text reports for <fbt> content passed through verified React Native text wrappers.

  • #1658 905607f Thanks @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 17eeeb5 Thanks @skoshx! - Fix a rerender-state-only-in-handlers false positive when a member hook consumes state.

  • #1706 afa1780 Thanks @aidenybai! - Avoid false positives for loading resets in finally, animation duration utilities, and string message substring searches.

  • #1734 025d69d Thanks @skoshx! - Fix js-set-map-lookups false positives for substring checks on values returned by the global String constructor.

  • #1725 0f59a3b Thanks @aidenybai! - Run test-noise rules in ambiguous product-named directories such as tools, demo, and migrations when they are below a recognized application source root. Explicit test surfaces and root-level tooling or example directories remain excluded.

  • #1668 5bc88ae Thanks @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 4bf7aff Thanks @aidenybai! - Use the nearest workspace root when detecting Fast Refresh ownership so nested checkouts keep the correct rule coverage.

  • #1671 bd08406 Thanks @aidenybai! - Stop recommending flatMap as a guaranteed performance improvement for .map().filter(Boolean). The rule now suggests a single-pass reduce or for...of rewrite only for measured hot paths.

  • #1663 2b0f06e Thanks @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 8c2f03a Thanks @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 6416370 Thanks @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 (shadcn from components.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-only data-[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's handleSubmit without event.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 existing shadcn-tabs-trigger-requires-list rule 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 Table data/columns options 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's measureElement without a data-index attribute are reported because the virtualizer drops the measurement.

  • #1742 28d4343 Thanks @aidenybai! - Avoid cleanup false positives for callback refs, observer iteration, and effect-local stored disposers.