{"id":19928,"library":"eslint-plugin-rxjs-x","title":"eslint-plugin-rxjs-x","description":"Modern ESLint plugin for RxJS, forked from the unmaintained eslint-plugin-rxjs. v1.0.2 requires ESLint ^10.0.1, Node ^20.19.0 || ^22.13.0 || >=24, and RxJS ^7.2.0 with TypeScript >=4.8.4 <6.1.0. Ships TypeScript types. Offers flat-config-only recommended and strict configs, with 33+ rules. Breaking from v0.x: ESLint 10 required, Node 18 dropped, eslintrc unsupported, and namespace changed from 'rxjs' to 'rxjs-x'. Provides typed linting via dependency on typescript-eslint.","status":"active","version":"1.0.2","language":"javascript","source_language":"en","source_url":"https://github.com/JasonWeinzierl/eslint-plugin-rxjs-x","tags":["javascript","lint","rules","eslint","eslintplugin","eslint-plugin","rxjs","typescript"],"install":[{"cmd":"npm install eslint-plugin-rxjs-x","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-rxjs-x","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-rxjs-x","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; plugin requires ESLint to function.","package":"eslint","optional":false},{"reason":"Peer dependency; rules check RxJS usage patterns.","package":"rxjs","optional":false},{"reason":"Peer dependency; typed linting requires TypeScript.","package":"typescript","optional":false}],"imports":[{"note":"ESM-only; CommonJS require() is not supported.","wrong":"const rxjsX = require('eslint-plugin-rxjs-x')","symbol":"default import","correct":"import rxjsX from 'eslint-plugin-rxjs-x'"},{"note":"Access via property, not bracket notation with string key.","wrong":"rxjsX.configs['recommended']","symbol":"configs","correct":"rxjsX.configs.recommended"},{"note":"Namespace changed from 'rxjs' to 'rxjs-x' in v1.0.0.","wrong":"// eslint-disable-next-line rxjs/no-subject-value","symbol":"rules prefix in inline comments","correct":"// eslint-disable-next-line rxjs-x/no-subject-value"},{"note":"eslintrc style configs are not supported in v1.0.0; only flat config with import/export.","wrong":"module.exports = { plugins: ['rxjs-x'], extends: ['plugin:rxjs-x/recommended'] }","symbol":"flat config with typescript-eslint","correct":"import tseslint from 'typescript-eslint'; import rxjsX from 'eslint-plugin-rxjs-x'; export default tseslint.config({ extends: [...tseslint.configs.recommended, rxjsX.configs.recommended], languageOptions: { parserOptions: { projectService: true } } })"}],"quickstart":{"code":"// @ts-check\nimport { defineConfig } from 'eslint/config';\nimport tseslint from 'typescript-eslint';\nimport rxjsX from 'eslint-plugin-rxjs-x';\n\nexport default defineConfig({\n  extends: [\n    tseslint.configs.recommended,\n    rxjsX.configs.recommended,\n  ],\n  languageOptions: {\n    parserOptions: {\n      projectService: true,\n    },\n  },\n});","lang":"typescript","description":"Sets up ESLint flat config with typescript-eslint and eslint-plugin-rxjs-x recommended rules for typed RxJS linting."},"warnings":[{"fix":"Upgrade to ESLint ^10.0.1 and Node.js ^20.19.0 || ^22.13.0 || >=24.","message":"ESLint v10 required; Node.js v18 support dropped.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Migrate to flat config using import statements and defineConfig.","message":"eslintrc config no longer supported; only flat config with import/export.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Replace 'rxjs/' with 'rxjs-x/' in all ESLint config rules and inline disable comments.","message":"Namespace changed from 'rxjs' to 'rxjs-x'; all rule references must be updated.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use 'rxjs-x/no-floating-observable' instead of 'rxjs/no-ignored-observable'.","message":"Rule 'rxjs/no-ignored-observable' replaced by 'rxjs-x/no-floating-observable'.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use rxjsX.configs.recommended in flat config.","message":"'recommended-legacy' config removed in v1; use flat config only.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Add 'projectService: true' to parserOptions; otherwise type-dependent rules won't work.","message":"Typed linting requires projectService: true in parserOptions.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure RxJS is ^7.2.0 and TypeScript >=4.8.4 <6.1.0.","message":"Peer dep upper bounds: rxjs ^7.2.0, typescript <6.1.0.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'10':53 '10.0.1':22 '18':56 '20.19.0':24 '22.13.0':25 '24':26 '33':47 '4.8.4':32 '6.1.0':33 '7.2.0':29 'break':49 'chang':62 'config':40,45 'depend':73 'drop':57 'eslint':2,7,16,21,52,77,81,84 'eslint-plugin':83 'eslint-plugin-rxj':15 'eslint-plugin-rxjs-x':1 'eslintplugin':82 'eslintrc':58 'flat':39 'flat-config-on':38 'fork':11 'javascript':78 'lint':71,79 'modern':6 'namespac':61 'node':23,55 'offer':37 'plugin':3,8,17,85 'provid':69 'recommend':42 'requir':20,54 'rule':48,80 'rxjs':4,10,18,28,64,67,86 'rxjs-x':66 'ship':34 'strict':44 'type':36,70 'typescript':31,35,76,87 'typescript-eslint':75 'unmaintain':14 'unsupport':59 'v0.x':51 'v1.0.2':19 'via':72 'x':5,68","created_at":"2026-04-25T11:20:25.292500+00:00","updated_at":"2026-04-25T11:20:25.292500+00:00","problems":[{"fix":"npm install eslint-plugin-rxjs-x --save-dev","cause":"Package not installed or wrong import path.","error":"Error: Cannot find module 'eslint-plugin-rxjs-x'"},{"fix":"Use flat config: import rxjsX from 'eslint-plugin-rxjs-x' and extend rxjsX.configs.recommended.","cause":"Using old eslintrc syntax with 'extends' containing 'plugin:rxjs-x/recommended'.","error":"Configuration for rule \"rxjs-x/no-subject-value\" is invalid: Value \"error\" is not a valid severity."},{"fix":"Use 'import rxjsX from 'eslint-plugin-rxjs-x'' in ESM context.","cause":"Using require() instead of import in flat config.","error":"TypeError: eslint-plugin-rxjs-x is not a function"},{"fix":"Add 'projectService: true' to parserOptions and ensure tsconfig is present.","cause":"Missing 'projectService: true' or TypeScript config not found.","error":"Parsing error: ESLint was configured to run on files that are not included in the project's TypeScript configuration."},{"fix":"Switch to ESM or use dynamic import: const rxjsX = await import('eslint-plugin-rxjs-x').then(m => m.default);","cause":"Importing default export incorrectly in CommonJS.","error":"Cannot read properties of undefined (reading 'configs')"}],"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/JasonWeinzierl/eslint-plugin-rxjs-x","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/eslint-plugin-rxjs-x","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}}