# @zohodesk/eslint-plugin-react-performance

> To improve performance in react redux applications

Latest version **1.0.8** (published 2026-02-19) · ISC license · 0 weekly downloads

## Install

```sh
npm install @zohodesk/eslint-plugin-react-performance
pnpm add @zohodesk/eslint-plugin-react-performance
yarn add @zohodesk/eslint-plugin-react-performance
bun add @zohodesk/eslint-plugin-react-performance
```

## Health

**Score 45/100 (D)** — status: stable.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 1.0.8 |
| Published | 2026-02-19 |
| First published | 2019-12-10 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.10.0 |
| Dependencies | 4 |
| Unpacked size | 324.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Zoho Desk |
| Maintainers | deekay.npm, vimalesan, skumaresan, selvasupriya, kathiresan.r, jesinth, sriramamoorthy, lingam, ponkumar.s, kdsankar, sudalaimuthu, iniankarthick, johnson_raavanan, ksamy2020, kumaresanm, villuvicky, _dev_johnson, karuppiah.r, lakshmi_ts, iambk, vallinayagam.t, ganeshkumar.m, muthumari, antro.j, mariappan.r, prakash.m, maheshmdr, esakkimuthu1512, madhubalan, selvakumar.pl, mahalingam.chinnasamy, krishna_kumar_r, hariharan_vs, ramkumar90, sankara.subramanian, eldhose_saji, aravindh.ts, deekay.zoho, rajsekar.haribalan, sheikbasheeth, arunkumar.ps, jos33, navas-0968, arunramadhas, immanuel.sm, ravikumars, rajagopal.g, sangeetha-19940, ramarajkiren.rs, ponkumar_zoho, mssethulakshmi, renukadevi06, siva.subramanian, sureshk, aravind.subbukutti |
| Keywords | eslint, eslintplugin, eslint-plugin |

## Links

- npm: https://www.npmjs.com/package/@zohodesk/eslint-plugin-react-performance
- npm.io page: https://npm.io/package/@zohodesk/eslint-plugin-react-performance

## Dependencies (4)

- [ignore](https://npm.io/package/ignore.md) 7.0.4
- [requireindex](https://npm.io/package/requireindex.md) ~1.1.0
- [eslint-rule-composer](https://npm.io/package/eslint-rule-composer.md) ^0.3.0
- [@eslint-community/eslint-utils](https://npm.io/package/@eslint-community/eslint-utils.md) ^4.4.1

## Alternatives

- [eslint-plugin-sonarjs](https://npm.io/package/eslint-plugin-sonarjs.md) — 2.9M weekly downloads
- [eslint-config-expo](https://npm.io/package/eslint-config-expo.md) — 1.5M weekly downloads
- [@matter/protocol](https://npm.io/package/@matter/protocol.md) — 63.5K weekly downloads
- [@eventcatalog/linter](https://npm.io/package/@eventcatalog/linter.md) — 24.8K weekly downloads
- [@pandacss/eslint-plugin](https://npm.io/package/@pandacss/eslint-plugin.md) — 18.7K weekly downloads

## Recent versions

- 1.0.8 (latest) — 2026-02-19
- 1.0.5-exp.1 (exp) — 2025-05-20
- 1.0.7 — 2025-12-23
- 1.0.6 — 2025-11-13
- 1.0.5 — 2025-05-19
- 1.0.4-exp.1 — 2025-05-14
- 1.0.4 — 2024-12-18
- 1.0.3 — 2020-03-25
- 1.0.2 — 2020-03-24
- 1.0.1 — 2019-12-11
- 1.0.0 — 2019-12-10

## README

# eslint-plugin-react-performance

To improve performance in react redux applications

## Installation

You'll first need to install [ESLint](http://eslint.org):

```
$ npm i eslint --save-dev
```

Next, install `eslint-plugin-react-performance`:

```
$ npm install eslint-plugin-react-performance --save-dev
```

**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-react-performance` globally.

## Usage

Add `react-performance` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:

```json
{
    "plugins": [
        "react-performance"
    ]
}
```


Then configure the rules you want to use under the rules section.

```json
{
    "rules": {
        "react-performance/rule-name": 2
    }
}
```

## Supported Rules

* Fill in provided rules here

# 1.0.8
- Improved Event listener cleanup linter.

# 1.0.7

- Improved resource cleanup linter with more scenarios.


# 1.0.5

- Linters to Ensure Memory leaks via event listener and intervals and window variables.

- Finding performance issues via new reference on selector functions file excludes changed to use glob pattern rather than regex.
```
Before

no-new-ref-on-selector-functions: [error, {filenameRegex: /selectors?.js$/i}]

Now

no-new-ref-on-selector-functions: [error, {include: [
        "**/*selector.js",
        "**/*selectors.js",
        "**/*Selector.js",
        "**/*Selectors.js",
        "**/selectors/**/*.js",
]}]
```

- Finding performance issues via mapstatetoProps new reference, we include a few changes to find out new patterns
```
function mapStateToProps(state) {
    const newRef = {};

    return {
        newRef  // before it won't errored out, now it will be.
    }
}

function mapStateToProps() {
    const {newRefviaDefaultAssignment = {}} = state; // before it won't errored out, now it will be.
}

```

- Remove redundant running of useselector function. when passing inline or new reference created function on selector, it will run whenever component renders. we need to avoid it.

```
function Component(props) {
    const value = useSelector((state) => selector(state)); // new reference created each time when component render, this will inturn trigger running of useSelector each time component render. unnecessary.
}
```

- When passing entire props to global memoized selector via createSelector, it causes the memory leak. 
```
const memoizedSelector = createSelector([state => state.module.tickets, (_, props) => props.ticketId], (tickets, ticketId) => {
    return Object.keys(tickets[ticketId]);
}); // In this memoized selector, if passed this object, this will be stored and which in turn refer component and DomNodes will be retained, even though, they are not present.

function mapStateToProps(state, props) {

    const value = memoizedSelector(state, props)

}


```

---
_Source: https://npm.io/package/@zohodesk/eslint-plugin-react-performance · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
