{"id":19933,"library":"eslint-plugin-rxjs","title":"eslint-plugin-rxjs","description":"ESLint plugin providing a comprehensive set of rules for RxJS (v5, 2024). It reimplements the rules from rxjs-tslint-rules for ESLint, covering common mistakes like async subscribe, ignored observables, nested subscribes, and more. Almost all rules require @typescript-eslint/parser and a TypeScript project. The package includes a recommended configuration with opinionated rules separate. Release cadence is stable with frequent updates. Compared to alternatives like eslint-plugin-rxjs-angular (Angular-specific), this plugin covers generic RxJS patterns across frameworks.","status":"active","version":"5.0.3","language":"javascript","source_language":"en","source_url":"https://github.com/cartant/eslint-plugin-rxjs","tags":["javascript","lint","rules","eslint","rxjs"],"install":[{"cmd":"npm install eslint-plugin-rxjs","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-rxjs","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-rxjs","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for parsing TypeScript code and type-aware rules","package":"@typescript-eslint/parser","optional":false},{"reason":"Peer dependency for TypeScript type checking in rules","package":"typescript","optional":false},{"reason":"Peer dependency for ESLint runtime","package":"eslint","optional":false}],"imports":[{"note":"Use shorthand 'rxjs' in ESLint config; the full name is not needed.","wrong":"plugins: ['eslint-plugin-rxjs']","symbol":"plugin","correct":"plugins: ['rxjs']"},{"note":"Only the plugin's recommended config enables its rules.","wrong":"extends: ['eslint:recommended']","symbol":"recommended config","correct":"extends: ['plugin:rxjs/recommended']"},{"note":"Rule names are prefixed with 'rxjs/' and values use string 'error' not numeric 2.","wrong":"rules: { 'rxjs/no-async-subscribe': 2 }","symbol":"rules","correct":"rules: { 'rxjs/no-async-subscribe': 'error' }"}],"quickstart":{"code":"// In .eslintrc.js\nconst { join } = require('path');\nmodule.exports = {\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    ecmaVersion: 2019,\n    project: join(__dirname, './tsconfig.json'),\n    sourceType: 'module',\n  },\n  plugins: ['rxjs'],\n  extends: ['plugin:rxjs/recommended'],\n  rules: {\n    'rxjs/no-async-subscribe': 'error',\n    'rxjs/no-ignored-observable': 'error',\n    'rxjs/no-ignored-subscription': 'error',\n    'rxjs/no-nested-subscribe': 'error',\n  },\n};","lang":"typescript","description":"Setup ESLint with rxjs plugin, using @typescript-eslint/parser and recommended config."},"warnings":[{"fix":"Upgrade eslint to ^8.0.0 and check rule names; see migration guide.","message":"Breaking: v5 removed support for ESLint <8 and changed some rule names","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Ensure @typescript-eslint/parser is installed and parserOptions.project points to tsconfig.json.","message":"Most rules require TypeScript parser and 'project' option for type checking","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Replace with equivalent rules or disable.","message":"Rules like 'rxjs/no-operator' and 'rxjs/no-wholesale' removed in v5","severity":"deprecated","affected_versions":">=5.0.0"}],"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-rxjs --save-dev'","cause":"Package not installed","error":"Error: Cannot find module 'eslint-plugin-rxjs'"},{"fix":"Set parser: '@typescript-eslint/parser' in ESLint config and install the package.","cause":"Missing @typescript-eslint/parser configuration","error":"Error: Parsing error: 'parser' is not set"},{"fix":"Add parserOptions.project pointing to your tsconfig.json","cause":"parserOptions.project not set or missing tsconfig","error":"Error: Rule 'rxjs/no-async-subscribe' requires type information"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}