{"id":19974,"library":"eslint-plugin-valtio","title":"eslint-plugin-valtio","description":"ESLint plugin for Valtio that helps catch common mistakes when using proxy-based state management. Current version 0.8.0 supports both ESLint v8 (legacy config) and v9 (flat config). Key differentiators: specifically targets Valtio anti-patterns like stale snapshots in callbacks, mutating snapshots, using proxies in render phase, incorrect computed dependency order, and `this` usage in snapshots. Maintained by pmndrs. Release cadence: irregular updates with breaking changes in minor versions.","status":"active","version":"0.8.0","language":"javascript","source_language":"en","source_url":"https://github.com/pmndrs/eslint-plugin-valtio","tags":["javascript","eslint","eslintplugin","eslint-plugin"],"install":[{"cmd":"npm install eslint-plugin-valtio","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-valtio","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-valtio","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"This plugin is CommonJS-only. ESM import will fail.","wrong":"import valtio from 'eslint-plugin-valtio'","symbol":"plugin default","correct":"const valtio = require('eslint-plugin-valtio')"},{"note":"ESLint v9 uses flat config; the config key is 'flat/recommended' not 'recommended'.","wrong":"valtio.configs.recommended","symbol":"flat/recommended config (eslint v9)","correct":"valtio.configs['flat/recommended']"},{"note":"Legacy config uses extends string with 'plugin:' prefix.","wrong":"valtio/recommended","symbol":"recommended config (eslint v8)","correct":"plugin:valtio/recommended"}],"quickstart":{"code":"// Install: npm install --save-dev eslint eslint-plugin-valtio\n\n// For ESLint v9 (flat config) - eslint.config.js\nconst valtio = require('eslint-plugin-valtio');\n\nmodule.exports = [\n  valtio.configs['flat/recommended'],\n  {\n    rules: {\n      'valtio/state-snapshot-rule': 'warn',\n      'valtio/avoid-this-in-proxy': 'error',\n    },\n  },\n];\n\n// For ESLint v8 - .eslintrc.json\n// { \"extends\": [\"plugin:valtio/recommended\"], \"rules\": { \"valtio/state-snapshot-rule\": \"warn\" } }","lang":"javascript","description":"Setup for ESLint v9 flat config and v8 legacy config with recommended rules."},"warnings":[{"fix":"Use valtio.configs['flat/recommended'] with ESLint v9, or plugin:valtio/recommended with ESLint v8.","message":"v0.8.0: recommended config split into 'flat/recommended' (ESLint v9) and plugin:valtio/recommended (ESLint v8). Existing flat configs using valtio.configs['recommended'] will break.","severity":"breaking","affected_versions":"=0.8.0"},{"fix":"If using ESLint v9, use flat config pattern; for v8, stay on v0.6.x or use legacy extends string.","message":"v0.7.0: Added ESLint v9 flat config support with breaking changes in API exposure. Older configs may need migration.","severity":"breaking","affected_versions":">=0.7.0"},{"fix":"Use require('eslint-plugin-valtio') instead of import.","message":"Plugin is CommonJS-only; attempting ESM import will fail with SyntaxError or import not found.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run `npm install --save-dev eslint-plugin-valtio`. Ensure extends uses 'plugin:valtio/recommended'.","cause":"Missing plugin installation or incorrect config path in .eslintrc.","error":"Cannot find module 'eslint-plugin-valtio' or 'valtio' module not found in extends"},{"fix":"Change to 'plugin:valtio/recommended' in extends array.","cause":"Using the config string without 'plugin:' prefix in legacy config.","error":"ESLint: Invalid config: 'valtio/recommended' is not valid."},{"fix":"Use valtio.configs['flat/recommended'] for ESLint v9 flat config.","cause":"Using valtio.configs.recommended instead of valtio.configs['flat/recommended'] in flat config (v0.8.0+).","error":"TypeError: Cannot read properties of undefined (reading 'recommended')"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}