{"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,"search_vec":"'1.1.0':24 '9.0.0':65 'add':43 'autom':59 'automat':26 'compil':21,56 'config':68 'current':22 'detect':27 'differenti':49 'direct':14,48 'e.g':32 'ecosystem':57 'enforc':9 'eslint':2,7,64,71,74 'eslint-plugin':73 'eslint-plugin-use-no-memo':1 'eslintplugin':72 'fill':50 'flat':67 'form':36 'gap':52 'help':25 'hook':31,35 'incompat':18,30 'javascript':70 'librari':17 'manual':61 'materi':39 'material-react-t':38 'memo':6,13 'opt':46 'opt-out':45 'plugin':3,8,75 'react':16,20,34,40,55 'react-hook-form':33 'requir':63 'support':69 'tabl':41 'tanstack/react-table':37 'use':4,11,29 'version':23 'workaround':62","created_at":"2026-05-01T13:45:15.369009+00:00","updated_at":"2026-05-01T13:45:15.369009+00:00","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,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/longzheng/eslint-plugin-use-no-memo","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/eslint-plugin-use-no-memo","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-05-01","next_check":"2026-07-30","install_tag":null}}