# What changed in @angular-eslint/eslint-plugin

> 44 changes in @angular-eslint/eslint-plugin 20 to 22 from its official release notes, upgrade guides and advisories: 5 breaking, 8 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/@angular-eslint/eslint-plugin/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @angular-eslint/eslint-plugin 22

### Breaking changes

- Support for eslint v8 was dropped, so projects using that version must upgrade. (22.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2200-2026-06-07)
- The legacy eslintrc config format is no longer supported. (22.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2200-2026-06-07)
- The deprecated rule was removed, so configurations that enable it must remove it. (22.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2200-2026-06-07)
- Now reports only components opting out of OnPush, not those omitting changeDetection; it is part of the recommended config, which may produce new reports. (22.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2200-2026-06-07)

### New APIs and options

- Adds the allowExplicitStandalone option to the prefer-standalone rule. (22.6.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2260-2026-10-11)
- The rule disallows unconfigured properties. (22.5.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2250-2026-09-07)
- Adds the additionalInjectFunctions option to inject-at-top. (22.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2230-2026-09-07)
- Adds the allowProvidedInNull option to use-injectable-provided-in. (22.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2230-2026-09-07)
- Adds the allowExplicitOnPush option; explicit OnPush is automatically removed when it is false. (22.2.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2220-2026-08-30)
- The plugin now supports the Angular v22 @Service decorator. (22.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2200-2026-06-07)

### Tooling

- Adds a new ESLint rule for reactive contexts. (22.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2230-2026-09-07)
- Adds a rule requiring inject() at the top of the class. (22.1.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2210-2026-07-12)
- Adds the prefer-service-decorator rule. (22.1.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2210-2026-07-12)

### Fixes and other changes

- Rewrites emit calls of the removed output. (22.6.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2260-2026-10-11)
- Ensures the prefix rule option schema is fully typed. (22.6.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2260-2026-10-11)
- Ignores inherited primitive names. (22.6.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2260-2026-10-11)
- Reports methods that are also called outside a DI context. (22.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2230-2026-09-07)
- Stops reporting when input and output types differ. (22.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2230-2026-09-07)
- Skips inputs that use the transform option. (22.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2230-2026-09-07)
- Improves getter and function detection in the rule. (22.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2230-2026-09-07)
- Covers @Component providers, viewProviders and styleUrls when checking for duplicates in metadata arrays. (22.2.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2220-2026-08-30)
- Avoids a false positive for methods called from a constructor. (22.1.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2210-2026-07-12)
- The suggestion message id was renamed from suggestAddChangeDetectionOnPush. (22.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2200-2026-06-07)

## @angular-eslint/eslint-plugin 21

### Breaking changes

- The rule is formally deprecated and removed from the all config. (21.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2100-2025-11-22)

### Behavior and default changes

- The rule now detects Signal member access. (21.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2130-2026-03-05)
- Defaults to prefix 'app'; selector validation is stricter, with style checks independent of prefix checks and more specific prefix failure reporting. (21.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2100-2025-11-22)
- Defaults to prefix 'app'; selector validation is stricter, with style checks independent of prefix checks and more specific prefix failure reporting. (21.0.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2100-2025-11-22)

### Tooling

- Adds the computed-must-return rule. (21.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2130-2026-03-05)
- The plugin adds support for ESLint v10. (21.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2130-2026-03-05)
- Adds the no-implicit-takeuntil-destroyed ESLint rule. (21.2.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2120-2026-01-29)
- Adds a rule encouraging the use of model() for two-way bindings. (21.1.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2110-2025-12-08)

### Fixes and other changes

- Appends fixes in this rule. (21.4.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2140-2026-05-13)
- The rule now properly handles statements with unary operators. (21.3.1) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2131-2026-03-17)
- The rule now detects the Signal type correctly. (21.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2130-2026-03-05)
- The rule now checks InputSignalWithTransform. (21.3.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2130-2026-03-05)

## @angular-eslint/eslint-plugin 20

### New APIs and options

- The rule supports multiple configs, allowing developers to configure more than one component selector. (20.6.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2060-2025-11-09)
- The rule supports multiple configs, allowing developers to configure more than one directive selector. (20.6.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2060-2025-11-09)

### Tooling

- Adds the prefer-host-metadata-property ESLint rule. (20.5.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2050-2025-10-27)

### Fixes and other changes

- Fixes false negatives when linting selectors that only contain a prefix. (20.7.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2070-2025-11-22)
- Fixes false negatives when linting selectors that only contain a prefix. (20.7.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2070-2025-11-22)
- Fixes false negatives when linting selectors that only contain a prefix. (20.7.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2070-2025-11-22)
- Detects variables in component selectors. (20.7.0) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2070-2025-11-22)
- Fixes the rule's fixer when a class contains generics. (20.5.2) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2052-2025-11-08)
- Fixes false positives in the no-uncalled-signals rule. (20.5.1) — [release notes](https://github.com/angular-eslint/angular-eslint/blob/7722ad2ab4da81568f19a7a29a3951fa443bf22c/packages/eslint-plugin/CHANGELOG.md#2051-2025-11-03)
