{"id":19924,"library":"eslint-plugin-rxjs-angular-updated","title":"eslint-plugin-rxjs-angular (updated for ESLint v9)","description":"Fork of cartant's eslint-plugin-rxjs-angular updated for ESLint v9 compatibility. Current version 1.0.50. Provides three opinionated ESLint rules for enforcing RxJS best practices in Angular components: prefer-async-pipe (forbids calling subscribe in components), prefer-composition (forbids non-composed subscribe calls), and prefer-takeuntil (forbids subscribe without takeUntil). Requires @typescript-eslint/parser and TypeScript project configuration. Not recommended for new projects; prefer the original package if ESLint v8 is acceptable.","status":"active","version":"1.0.50","language":"javascript","source_language":"en","source_url":"https://github.com/fast-facts/eslint-plugin-rxjs-angular","tags":["javascript","lint","rules","eslint","rxjs","angular","typescript"],"install":[{"cmd":"npm install eslint-plugin-rxjs-angular-updated","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-rxjs-angular-updated","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-rxjs-angular-updated","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required by the ESLint rules for TypeScript parsing","package":"@typescript-eslint/parser","optional":false}],"imports":[{"note":"Use import to load the plugin; the package is ESM-only (no CJS export).","wrong":"// Do not require() in ESM context: const plugin = require('eslint-plugin-rxjs-angular-updated');","symbol":"plugin","correct":"// In eslint.config.js: import plugin from 'eslint-plugin-rxjs-angular-updated';"},{"note":"Rules are accessed via the plugin name in ESLint configuration, not by importing the 'rules' property.","wrong":"// Do not import rules directly: import { rules } from 'eslint-plugin-rxjs-angular-updated';","symbol":"rules","correct":"// In .eslintrc.js: plugins: ['rxjs-angular-updated']"},{"note":"Prefix changed from 'rxjs-angular' to 'rxjs-angular-updated' to avoid conflicts with the original package.","wrong":"// Do not use the original package prefix: 'rxjs-angular/prefer-async-pipe': 'error'","symbol":"prefer-async-pipe","correct":"// In ESLint config: 'rxjs-angular-updated/prefer-async-pipe': 'error'"}],"quickstart":{"code":"// eslint.config.js\nimport plugin from 'eslint-plugin-rxjs-angular-updated';\n\nexport default [\n  {\n    files: ['**/*.ts'],\n    languageOptions: {\n      parser: '@typescript-eslint/parser',\n      parserOptions: {\n        project: './tsconfig.json',\n      },\n    },\n    plugins: {\n      'rxjs-angular-updated': plugin,\n    },\n    rules: {\n      'rxjs-angular-updated/prefer-async-pipe': 'error',\n      'rxjs-angular-updated/prefer-takeuntil': 'error',\n    },\n  },\n];","lang":"typescript","description":"Minimal ESLint flat config (v9) setup using the updated plugin with two rules enabled."},"warnings":[{"fix":"Update ESLint config: replace 'rxjs-angular/' with 'rxjs-angular-updated/' in plugin and rule references.","message":"Plugin prefix changed from 'rxjs-angular' to 'rxjs-angular-updated'.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Migrate to flat config (eslint.config.js) as shown in Quickstart.","message":"ESLint v9 flat config only; .eslintrc.* formats no longer supported.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Consider using the original eslint-plugin-rxjs-angular if ESLint v8 is acceptable, or migrate to a maintained alternative.","message":"Package is a temporary fork; updates are limited to version bumps only.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Use 'rxjs-angular-updated/prefer-takeuntil' instead of 'rxjs-angular/prefer-takeuntil'.","message":"Rule names must be prefixed with 'rxjs-angular-updated/' not 'rxjs-angular'.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure '@typescript-eslint/parser' and parserOptions.project point to valid tsconfig.json.","message":"Requires TypeScript parser and project configuration; rules will silently fail without 'project' in parserOptions.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'/parser':70 '1.0.50':26 'accept':88 'angular':5,18,38,94 'async':42 'best':35 'call':45,57 'cartant':12 'compat':23 'compon':39,48 'compos':55 'composit':51 'configur':74 'current':24 'enforc':33 'eslint':2,8,15,21,30,69,85,92 'eslint-plugin-rxjs-angular':1,14 'forbid':44,52,62 'fork':10 'javascript':89 'lint':90 'new':78 'non':54 'non-compos':53 'opinion':29 'origin':82 'packag':83 'pipe':43 'plugin':3,16 'practic':36 'prefer':41,50,60,80 'prefer-async-pip':40 'prefer-composit':49 'prefer-takeuntil':59 'project':73,79 'provid':27 'recommend':76 'requir':66 'rule':31,91 'rxjs':4,17,34,93 'subscrib':46,56,63 'takeuntil':61,65 'three':28 'typescript':68,72,95 'typescript-eslint':67 'updat':6,19 'v8':86 'v9':9,22 'version':25 'without':64","created_at":"2026-04-25T11:20:23.402252+00:00","updated_at":"2026-04-25T11:20:23.402252+00:00","problems":[{"fix":"Run: npm install eslint-plugin-rxjs-angular-updated --save-dev","cause":"Package not installed or not found in node_modules.","error":"Error: Failed to load plugin 'rxjs-angular-updated'"},{"fix":"Run: npm install @typescript-eslint/parser --save-dev","cause":"Missing peer dependency @typescript-eslint/parser.","error":"Cannot find module '@typescript-eslint/parser'"},{"fix":"Ensure plugin is imported and added to 'plugins' object with key 'rxjs-angular-updated'.","cause":"Rule name uses wrong prefix or plugin not configured in plugins array.","error":"Definition for rule 'rxjs-angular-updated/prefer-async-pipe' was not found"}],"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/fast-facts/eslint-plugin-rxjs-angular","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/eslint-plugin-rxjs-angular-updated","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing","web-framework"],"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}}