Skip to main content
interlace
Plugin: react-features

Changelog

Release history for eslint-plugin-react-features

Generated from the release history

Built from this package's CHANGELOG.md at deploy time, so it matches the version these docs describe. The full cross-package history lives on the changelog.

1.7.9

  • Fixno-is-prefix-prop suggested renaming isTTY to tTY
  • Fixjsx-key suggested key={item.id} against callbacks that bind no item
  • Fixno-this-in-sfc reported a declared TS this parameter, and lost class context on a nested class
  • Fixno-object-type-as-default-prop reported any object destructuring default, anywhere

1.7.8

  • Fixfour false positives found by sweeping the plugins over a real corpus

1.7.7

  • Fixjsx-no-script-url now catches control-character-obfuscated javascript: URLs
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.19.5

1.7.6

  • Fixrequire-render-return now requires every path through an if to return, rather than any path. A render() whose only return sits in an if with no else falls through and renders nothing — the shape the rule's own docs print under "❌ Incorrect" — and was silently accepted. if/else where both branches return, and a trailing return after the if, remain valid.
  • FixFP/FN sweep against the burgee corpus — three confirmed rule defects.

1.7.5

  • Fixtwo rules that could not report anything

1.7.4

  • Fixvoid-dom-elements-no-children no longer reports <Link>, <Img>, <Input> and other capitalized components

1.7.3

  • FixThe README logo now links to the plugin's own documentation.

1.7.2

  • Fixexport default class extends Component is still a component
  • Fixclass A extends React['Component'] is the same base class
  • Fixmisspelled members and PropTypes validators read through a string subscript
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.19.2

1.7.1

  • Fixno-arbitrary-token-class scans a tagged className again
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.19.1

1.7.0

  • Fixitems['map'](…) is the same iteration as items.map(…)
  • Fixdeep-link, CORS, IAM and state-mutation gates read a subscripted member
  • FixReact['Component'] is the same base class as React.Component
  • FixReactDOM['render'](…) is the same deprecated call
  • FixReact['findDOMNode'] names the same deprecated API
  • FixReact['createElement'] builds the same element
  • Maintenancehook and state-mutation reads carry string | null instead of casting it away
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.19.0

1.6.1

  • FixAdd an install-size badge to the README prelude, linking to each package's packagephobia page. npm renders the README from the last publish, so a badge only appears on npmjs.com after a release.
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.18.2

1.6.0

  • Feature🐛 Fix — a template literal is a string, in 82 rules that disagreed
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.18.0

1.5.0

  • Fixhooks-exhaustive-deps decides stability by resolving the binding, not by its name
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.17.4

1.4.0

  • Fixno-unknown-property stops reporting on custom elements and xmlns
  • Fixno-unknown-property reported loading, decoding, and fetchPriority — three standard React DOM props for <img> (and <iframe>/<link>/<script> where applicable). loading and decoding have been valid React props for years; fetchPriority is the React 19 camelCase form. All three are in upstream eslint-plugin-react's known-property list; ours was missing them, so every lazy-loaded image in a consumer codebase produced three false positives.
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.17.3

1.3.1

  • Fixpoint meta.docs.url at documentation that exists #683
  • Dependenciesupdated workspace dependencies: @interlace/eslint-devkit@1.17.2

1.3.0

  • Two React rules now judge evidence rather than names. #565
  • DependenciesUpdated internal dependencies

1.2.12

  • Bound the TypeScript peer range and declare the React peer #499

1.2.11

  • Correct the declared ESLint floor: ^8.0.0^8.40.0. #407
  • Correct the ESLint peer range shown in the README Compatibility table. #423
  • meta.hasSuggestions now matches what each rule actually emits. #309
  • DependenciesUpdated internal dependencies

1.2.10

  • Ship the JavaScript without tsc's layout. #411
  • DependenciesUpdated internal dependencies

1.2.9

  • Load rule modules on demand instead of at plugin load. #381
  • Declare what we support, load only what we use #381
  • Fix the ./oxlint subpath export, which pointed at src/oxlint.js — a file no build produces. require('<package>/oxlint') threw MODULE_NOT_FOUND on every published package, while every README documented that exact wiring for oxlint's jsPlugins. The export now points at the build output, dist/src/oxlint.js. #335
  • Fix SDK peer declarations that npm silently ignored #335
  • DependenciesUpdated internal dependencies

1.2.8

  • Add the ecosystem and oxlint marks to the README logo row. Each plugin now #364

1.2.7

  • Fix SDK peer declarations that npm silently ignored #358
  • DependenciesUpdated internal dependencies

1.2.6

  • Re-publish every package so npm carries the optimised artifact #338
  • DependenciesUpdated internal dependencies

1.2.5

  • Rewrite description and keywords on every published package for npm search discovery. npm ranks on name, description, and keywords, and the registry only picks up these fields at publish — so this is metadata-only and takes effect for each package on its next release. #294
  • DependenciesUpdated internal dependencies

1.2.4

  • Docsdocs: dual-logo README header (Interlace mark + ESLint mark side by side) and closing Interlace footer — refreshes the README rendered on npmjs.com. No runtime changes. #269
  • DependenciesUpdated internal dependencies

1.2.3

  • Fix Codecov badge showing "unknown" — switch from flag to component URL format #252

1.2.2

  • CI-only: pin all coverage thresholds at 100% (integration target, merges last). #225

1.2.1

  • no-unknown-property no longer fires on custom React components. The rule now #229

1.2.0

  • Expose the component-api/* rule namespace to consumers. #100
  • Fixfix: remove false meta.fixable: 'code' declarations from 21 rules that had no fix() function #141
  • Consolidation cleanup — no rule behavior change: #186
  • DependenciesUpdated internal dependencies
  • jsx-no-target-blank: replaced /^\/\//.test(href) with href.startsWith('//') (oxlint correctness rule).

1.1.3

  • align codecov component IDs with full package names
  • fix changelog header format across all packages
  • Ofri Peretz

1.1.2

  • align codecov component names and update docs components
  • Ofri Peretz

1.1.1

  • 📘 Launched new documentation site: eslint.interlace.tools
  • 📝 Achieved 100% documentation parity (both .md and .mdx files)

1.1.0

  • infra: migrate from pnpm to npm for Vercel compatibility
  • docs: implement 3-pillar navigation with sidebar tabs
  • docs: deploy new Interlace VI and mobile UX
  • add high-fidelity OG images, banners, and update docs layout
  • release: fix release workflow logic, docs cache, and promote lint warnings to errors
  • docs: resolve MDX compatibility issues and add validation tests
  • docs: revert inappropriate security additions to non-security plugins
  • docs: strict readout alignment to NestJS structure and table consolidation
  • docs: wrap lucide icons with span for title attribute compatibility
  • update rule documentation and docs app UI improvements
  • add Known False Negatives to all rules (173 rules updated)
  • fleet-wide documentation compliance - 160 rules improved
  • update plugin documentation with standardized badges and new OG images
  • finalize readme structure, drop security research coverage
  • remove header and legend artifacts from rules table
  • finalize readme layout with centered badges and strict structure
  • align main README with Interlace branding
  • Ofri Peretz

1.0.0

  • Initial stable release with 53 React rules
  • 1,190+ test cases covering edge cases and TypeScript integration
  • LLM-optimized error messages for AI-assisted development
  • ESLint 9 flat config support
  • TypeScript type definitions for all rule options
  • jsx-no-target-blank - Require rel="noopener" on target="\_blank" links
  • jsx-no-script-url - Disallow javascript: URLs in JSX
  • jsx-no-duplicate-props - Disallow duplicate props
  • no-danger-with-children - Disallow children with dangerouslySetInnerHTML
  • no-deprecated - Disallow deprecated React APIs
  • no-find-dom-node - Disallow findDOMNode
  • no-unsafe - Disallow UNSAFE\_ lifecycle methods
  • void-dom-elements-no-children - Disallow children in void DOM elements
  • no-inline-handlers - Disallow inline function handlers (re-render prevention)
  • no-object-style-literals - Disallow object literals in style prop
  • require-memo - Require React.memo for pure components
  • require-usecallback - Require useCallback for function props
  • require-usememo - Require useMemo for expensive computations
  • Hooks rules: exhaustive-deps, rules-of-hooks compliance
  • Component patterns: naming, structure, composition
  • State management: useState, useReducer patterns
  • recommended - Balanced React best practices
  • strict - All rules as errors
  • performance - Performance-focused subset
  • migration - React upgrade assistance
  • Removed deprecated rules (now in react-a11y)
  • Renamed: react-perf/no-jsx-bindperformance/no-inline-handlers
  • jsx-no-target-blank: Dynamic href variables not detected
  • jsx-no-script-url: Obfuscated patterns in variables not detected
  • Spread props ({...props}) prevent static attribute analysis

1.7.10

  • Fixfive FP/FN rule defects found by the burgee sweep

Building secure JavaScript with Interlace? Star the repo to get new rules and CWE coverage as we ship them — or follow the AI-code-security benchmarks behind them.