eslint-plugin-react-perf icon indicating copy to clipboard operation
eslint-plugin-react-perf copied to clipboard

Performance-minded React linting rules for ESLint

eslint-plugin-react-perf

Performance-minded React linting rules for ESLint (motivated by esamatti's post "React.js pure render performance anti-pattern").

Installation

$ npm i eslint-plugin-react-perf

Add plugins section and specify eslint-plugin-react-perf as a plugin.

{
  "plugins": ["react-perf"]
}

List of supported rules

  • react-perf/jsx-no-new-object-as-prop: Prevent {...} as JSX prop value
  • react-perf/jsx-no-new-array-as-prop: Prevent [...] as JSX prop value
  • react-perf/jsx-no-new-function-as-prop: Prevent function as JSX prop value
  • react-perf/jsx-no-jsx-as-prop: Prevent JSX as JSX prop value

Configuration

As of v3.3.0, each eslint-plugin-react-perf rule supports configuration to control whether native elements (lower case first letter React components) are ignored.

With this configuration, all native elements are ignored for this rule:

{
  "react-perf/jsx-no-new-object-as-prop": [
    "error",
    {
      "nativeAllowList": "all"
    }
  ]
}

With this configuration, the "style" attribute is ignored for native elements for this rule:

{
  "react-perf/jsx-no-new-object-as-prop": [
    "error",
    {
      "nativeAllowList": ["style"]
    }
  ]
}

Recommended

This plugin exports a recommended configuration that enforce React good practices.

To enable this configuration use the extends property in your .eslintrc config file:

{
  "extends": ["plugin:react-perf/recommended"]
}

See ESLint documentation for more information about extending configuration files.

The rules enabled in this configuration are:

  • react-perf/jsx-no-new-object-as-prop
  • react-perf/jsx-no-new-array-as-prop
  • react-perf/jsx-no-new-function-as-prop
  • react-perf/jsx-no-jsx-as-prop

All

This plugin also exports an all configuration that includes every available rule.

{
  "plugins": [
    "react-perf"
  ],
  "extends": ["plugin:react-perf/all"]
}

Test anti-patterns in runtime

Try out cvazac/test-ref-pattern.

License

eslint-plugin-react-perf is licensed under the MIT License.