{"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,"search_vec":"'/parser':47 '2024':16 'across':87 'almost':40 'altern':71 'angular':77,79 'angular-specif':78 'async':32 'cadenc':63 'common':29 'compar':69 'comprehens':9 'configur':57 'cover':28,83 'eslint':2,5,27,46,74,92 'eslint-plugin-rxj':1 'eslint-plugin-rxjs-angular':73 'framework':88 'frequent':67 'generic':84 'ignor':34 'includ':54 'javascript':89 'like':31,72 'lint':90 'mistak':30 'nest':36 'observ':35 'opinion':59 'packag':53 'pattern':86 'plugin':3,6,75,82 'project':51 'provid':7 'recommend':56 'reimplement':18 'releas':62 'requir':43 'rule':12,20,25,42,60,91 'rxjs':4,14,23,76,85,93 'rxjs-tslint-rul':22 'separ':61 'set':10 'specif':80 'stabl':65 'subscrib':33,37 'tslint':24 'typescript':45,50 'typescript-eslint':44 'updat':68 'v5':15","created_at":"2026-04-25T11:20:26.232238+00:00","updated_at":"2026-04-25T11:20:26.232238+00:00","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,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/cartant/eslint-plugin-rxjs","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/eslint-plugin-rxjs","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-06-17","next_check":"2026-07-24","install_tag":null}}