{"id":25534,"library":"eslint-plugin-use-no-memo","title":"eslint-plugin-use-no-memo","description":"ESLint plugin enforcing the 'use no memo' directive for React libraries incompatible with React Compiler. Current version 1.1.0. Helps automatically detect when using incompatible hooks (e.g., react-hook-form, @tanstack/react-table, material-react-table) and adds the opt-out directive. Differentiator: fills a gap in the React Compiler ecosystem by automating a manual workaround. Requires ESLint >=9.0.0 with flat config support.","status":"active","version":"1.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/longzheng/eslint-plugin-use-no-memo","tags":["javascript","eslint","eslintplugin","eslint-plugin"],"install":[{"cmd":"npm install eslint-plugin-use-no-memo","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-use-no-memo","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-use-no-memo","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency, required for plugin to work","package":"eslint","optional":false}],"imports":[{"note":"ESM default import for ESLint flat config. CJS require might work in Node, but flat config is ESM-first.","wrong":"const useNoMemo = require('eslint-plugin-use-no-memo')","symbol":"useNoMemo","correct":"import useNoMemo from 'eslint-plugin-use-no-memo'"},{"note":"Rule name uses kebab-case; severity should be string ('error') not numeric (ESLint v9 style).","wrong":"'use-no-memo/react-hook-form': 2","symbol":"use-no-memo/react-hook-form","correct":"'use-no-memo/react-hook-form': 'error'"},{"note":"ESLint flat config requires an object with plugin name as key; legacy array format fails.","wrong":"plugins: ['use-no-memo']","symbol":"plugin configuration","correct":"plugins: { 'use-no-memo': useNoMemo }"}],"quickstart":{"code":"import useNoMemo from 'eslint-plugin-use-no-memo';\n\nexport default [\n  {\n    plugins: {\n      'use-no-memo': useNoMemo,\n    },\n    rules: {\n      'use-no-memo/react-hook-form': 'error',\n      'use-no-memo/tanstack-table': 'error',\n      'use-no-memo/material-react-table': 'error',\n    },\n  },\n];","lang":"javascript","description":"ESLint flat config to enforce 'use no memo' directive for react-hook-form, @tanstack/react-table, and material-react-table."},"warnings":[{"fix":"Upgrade to ESLint v9 and use eslint.config.js (flat config).","message":"Plugin only supports ESLint flat config (v9+); legacy .eslintrc is deprecated.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Migrate to eslint.config.js with plugins object.","message":"Legacy .eslintrc.js config format may not work with future versions; flat config is required.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Use 'use-no-memo/react-hook-form' not 'useNoMemoReactHookForm'.","message":"Rule names are kebab-case (e.g., 'react-hook-form') not camelCase.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run npm install --save-dev eslint-plugin-use-no-memo","cause":"Plugin not installed or ESLint cannot resolve it.","error":"Error: Failed to load plugin 'use-no-memo': Cannot find module 'eslint-plugin-use-no-memo'"},{"fix":"Add plugins: { 'use-no-memo': useNoMemo } to your config object.","cause":"Missing plugins configuration in flat config.","error":"ESLint couldn't find the plugin \"use-no-memo\"."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}