{"id":19914,"library":"eslint-plugin-redux-saga","title":"eslint-plugin-redux-saga","description":"An ESLint plugin providing linting rules for redux-saga to catch common mistakes and enforce best practices. Version 1.3.2 is the current stable release, published in 2022 with a low maintenance cadence (last commit in 2020). Key differentiators: it includes three recommended rules for ensuring effects are yielded (yield-effects), preventing yield inside race entries (no-yield-in-race), and catching unhandled errors in sagas (no-unhandled-errors). Compared to alternatives like eslint-plugin-redux-saga (by the redux-saga org), this plugin is community-maintained and focuses on a smaller set of opinionated rules.","status":"maintenance","version":"1.3.2","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/pke/eslint-plugin-redux-saga","tags":["javascript","eslint","eslint-plugin","eslintplugin","redux-saga"],"install":[{"cmd":"npm install eslint-plugin-redux-saga","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-redux-saga","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-redux-saga","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: required for the plugin to work as an ESLint plugin.","package":"eslint","optional":false},{"reason":"Peer dependency: rules are designed for redux-saga patterns (version >=0.11.1 <1 or >=1.0.0).","package":"redux-saga","optional":true}],"imports":[{"note":"When adding to ESLint config, use the short name 'redux-saga' (without the 'eslint-plugin-' prefix). The plugin is automatically resolved by ESLint.","wrong":"{\n  \"plugins\": [\"eslint-plugin-redux-saga\"]\n}","symbol":"plugin","correct":"{\n  \"plugins\": [\"redux-saga\"]\n}"},{"note":"Always prefix with 'plugin:' when extending presets from plugins. Without 'plugin:', ESLint will try to find a shareable config named 'redux-saga'.","wrong":"{\n  \"extends\": [\"redux-saga/recommended\"]\n}","symbol":"recommended config","correct":"{\n  \"extends\": [\"plugin:redux-saga/recommended\"]\n}"},{"note":"Rule names are prefixed with the short plugin name 'redux-saga/', not the full package name.","wrong":"{\n  \"rules\": {\n    \"eslint-plugin-redux-saga/yield-effects\": \"error\"\n  }\n}","symbol":"Individual rules","correct":"{\n  \"rules\": {\n    \"redux-saga/yield-effects\": \"error\",\n    \"redux-saga/no-yield-in-race\": \"warn\",\n    \"redux-saga/no-unhandled-errors\": \"error\"\n  }\n}"},{"note":"When importing programmatically in Node, use the full package name. The short name is only for ESLint config files.","wrong":"const plugin = require('redux-saga');","symbol":"require() in Node scripts","correct":"const plugin = require('eslint-plugin-redux-saga');"}],"quickstart":{"code":"npm install --save-dev eslint-plugin-redux-saga eslint\n# or yarn add --dev eslint-plugin-redux-saga eslint\n\n# .eslintrc.json\n{\n  \"plugins\": [\"redux-saga\"],\n  \"extends\": [\"plugin:redux-saga/recommended\"],\n  \"rules\": {\n    \"redux-saga/no-yield-in-race\": \"warn\"\n  }\n}","lang":"javascript","description":"Installs the plugin and ESLint, then configures ESLint to use the plugin with recommended rules and a custom warning for no-yield-in-race."},"warnings":[{"fix":"Install redux-saga: npm install redux-saga","message":"The plugin requires redux-saga as a peer dependency. If redux-saga is not installed, rules may behave unexpectedly or crash.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Disable or adjust rule severity, or restructure saga error handling to be explicit.","message":"Rule 'no-unhandled-errors' can produce false positives if error handling is done in a parent saga or via try-catch wrapping.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Consider migrating to the official redux-saga ESLint plugin or forks with active maintenance.","message":"The plugin is in maintenance mode with no new updates since 2020. Future ESLint versions may introduce incompatibilities.","severity":"deprecated","affected_versions":">=1.3.2"},{"fix":"Use legacy .eslintrc format or use an alternative plugin that supports flat config.","message":"ESLint 7+ requires the plugin to be compatible with flat config. This plugin does not support flat config (eslint.config.js).","severity":"gotcha","affected_versions":">=1.3.2"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run 'npm install eslint-plugin-redux-saga --save-dev' and ensure it's in node_modules.","cause":"The plugin is not installed or not resolvable.","error":"ESLint: Failed to load plugin 'redux-saga': Cannot find module 'eslint-plugin-redux-saga'"},{"fix":"Use numbers (0,1,2) or strings ('off','warn','error'). Example: \"redux-saga/no-yield-in-race\": 2","cause":"Invalid severity value in eslintrc.","error":"Configuration for rule 'redux-saga/no-yield-in-race' is invalid: Severity should be one of the following: 0 = off, 1 = warn, 2 = error"},{"fix":"Use \"plugin:redux-saga/recommended\" with the 'plugin:' prefix.","cause":"Missing 'plugin:' prefix or incorrect string.","error":"ESLint: Unexpected top-level property 'extends[0]' value 'plugin:redux-saga/recommended' is not valid."},{"fix":"Ensure effects are used inside a generator function and that the rule is not mistakenly applied to non-saga code.","cause":"Saga generator functions not properly declared or used outside a function.","error":"ReferenceError: saga is not defined (when using 'yield-effects' rule)"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}