# What changed in eslint-plugin-functional

> 75 changes in eslint-plugin-functional 4 to 10 from its official release notes, upgrade guides and advisories: 47 breaking, 1 deprecations, 15 new APIs and options. Each one cited. Sources checked 2026-10-23. HTML: https://unstale.sh/npm/eslint-plugin-functional/

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

## eslint-plugin-functional 10

### Breaking changes

- Node 18 is no longer supported. (10.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v10.0.0)

### New APIs and options

- Adds the ignoreTypePattern option to type-declaration-immutability. (10.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v10.0.0)

### Tooling

- Adds support for ESLint 10. (9.0.3, 10.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v10.0.0), [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v9.0.3)

### Fixes and other changes

- When ignoreVoid is enabled, awaited void calls are ignored. (10.0.1) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v10.0.1)

## eslint-plugin-functional 9

### Breaking changes

- The immutable-data rule now detects and reports map and set mutations. (9.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v9.0.0)

### Fixes and other changes

- User immutability overrides now take precedence over defaults. (9.0.5) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v9.0.5)
- Fixed type errors affecting consumers of the package. (9.0.4) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v9.0.4)

## eslint-plugin-functional 8

### Breaking changes

- Patterns matching PrivateIdentifiers now receive names prefixed with #. (8.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v8.0.0)

## eslint-plugin-functional 7

### Breaking changes

- This option was replaced by allowToRejectPromises. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- Replaces allowInAsyncFunctions as an option for no-throw-statements. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- The plugin migrated to ESLint 9; projects need to use the new minimum supported ESLint version. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- The minimum supported Node version is now 18.18.0. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- The minimum supported TypeScript version is now 4.7.4. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- Checking of types from TypeScript's lib is now more strict. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)

### New APIs and options

- Options can now be overridden based on where the function type is declared. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- Options can now be overridden based on the root object's type. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- Adds ignoreCodePattern as an option. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- Adds ignoreIdentifierPattern as an option. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- Options can now be overridden based on where the type is declared. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)

### Behavior and default changes

- The options in the recommended and lite configs changed. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)
- The options in the recommended and lite configs changed. (7.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v7.0.0)

## eslint-plugin-functional 6

### Breaking changes

- The assumeTypes option is removed. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- Introduced as a replacement for the ignorePattern option. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- Introduced as a replacement for the ignorePattern option. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- The ignorePattern option is replaced by ignoreIdentifierPattern and ignoreCodePattern. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- The fixer config no longer inherits as many options, so configs must be explicit about them. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- The rule uses suggestions instead of a fixer by default. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- The minimum supported TypeScript version increases to 4.3.5. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)

### New APIs and options

- functional-parameters adds an option to ignore getters and setters. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- immutable-data adds the ignoreNonConstDeclarations option. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)
- no-expression-statements adds an option to ignore self returning functions. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)

### Fixes and other changes

- Sanity checks are added to type immutability override settings. (6.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v6.0.0)

## eslint-plugin-functional 5

### Breaking changes

- The allowFixer option is removed from assumeTypes. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The external-recommended ruleset is split into vanilla and TypeScript recommended rulesets. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The external-recommended ruleset is split into vanilla and TypeScript recommended rulesets. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The option is renamed from ignoreClass. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-class. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-conditional-statement. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-expression-statement. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The option is renamed from allowLocalMutation. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-loop-statement. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-mixed-type and now supports Type Literals directly inside the Readonly type. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The ruleset is renamed from no-object-orientation. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The option is renamed from ignoreImplicit. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-this-expression and removed from the recommended and lite rulesets. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-throw-statement. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-try-statement. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The minimum supported Node version is now 16.10.0. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- A new rule enforces use of immutable types in runtime code type annotations. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is renamed from no-method-signature and moved to the stylistic ruleset. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The option is renamed from ignoreIfReadonly and now defaults to false. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule is moved to the stylistic ruleset. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The deprecated rule is removed from all rulesets except off. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The rule now provides suggestions instead of a fixer. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- A new rule enforces immutability of type aliases and interfaces. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- The minimum supported TypeScript version is now 4.0.2. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- This rule is removed from the list of recommended external rules. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- Projects updating to this release should add this dependency. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- Projects updating to this release should add this dependency. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)

### Deprecations

- This rule is deprecated in favor of prefer-immutable-types and type-declaration-immutability. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)

### New APIs and options

- The rule gains an option to ignore lambda function expressions. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- Support for the TypeScript Readonly<T> type is added. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- A new rule is introduced. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)
- A new ruleset enforces the strictest configuration of the rules. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)

### Behavior and default changes

- The recommended ruleset is made less strict. (5.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v5.0.0)

## eslint-plugin-functional 4

### Breaking changes

- Implicit types are now checked by default. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)
- The minimum required Node.js version is now ^12.22.0, ^14.17.0, or >=16.0.0. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)
- The deprecated rule was removed. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)
- The deprecated misspelled ruleset was removed in favor of the stylistic ruleset. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)

### New APIs and options

- Stylistic rules were added to the lite ruleset. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)
- An off preset was added. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)

### Behavior and default changes

- The recommended external rules were updated. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)
- The rule is disabled by default in the recommended and lite configs. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)
- Stylistic rules were added to the recommended ruleset. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)

### Fixes and other changes

- Rule metadata for recommended status now matches the recommended config. (4.0.0) — [release notes](https://github.com/eslint-functional/eslint-plugin-functional/releases/tag/v4.0.0)
