# What changed in eslint-plugin-jsdoc

> 130 changes in eslint-plugin-jsdoc 61 to 65 from its official release notes, upgrade guides and advisories: 11 breaking, 18 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/eslint-plugin-jsdoc/

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

## eslint-plugin-jsdoc 65

### Breaking changes

- With publicOnly, the rule now checks members of anonymous default exports and exported object literals. (65.3.5) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.5)
- The rule no longer fixes comments that contain the closing delimiter. (65.2.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.3)
- Disallows extra properties in rule options. (65.0.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.0.1)
- Forbids a missing space between the asterisk prefix and content; set allowNoSpaceAfterAsterisk: true to restore the old behavior. (65.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.0.0)

### New APIs and options

- Adds the fixTypeChangingCasts option to no-unnecessary-type-assertion. (65.3.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.0)
- Adds the ignoreEmptyLines option to check-alignment. (65.2.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.0)
- Adds the enableFixer option to replace Closure-style optional types. (65.1.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.1.0)
- Allows -any within the tags array to apply alignment, or lack thereof, to all tags. (65.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.0.0)

### Performance

- The no-undefined-types and require-returns-check rules parse a file's JSDoc blocks only once, improving performance. (65.3.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.4)

### Fixes and other changes

- The rule no longer exits early when TypeScript is found. (65.3.11) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.11)
- Supports string any contexts and contexts without comment. (65.3.10) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.10)
- Supports string any contexts and contexts without comment. (65.3.10) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.10)
- Counts template names used as indexed-access indexes, so the rule recognizes those uses. (65.3.9) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.9)
- Counts template names used in other templates' constraints and defaults, so the rule recognizes those uses. (65.3.9) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.9)
- The rule no longer re-escapes existing import names and uses a valid identifier for default imports. (65.3.8) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.8)
- The check-template-names, no-undefined-types, and require-template rules allow spaces around the = of a @template default. (65.3.7) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.7)
- The rule now keeps a hashbang on the first line when adding @import. (65.3.6) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.6)
- Only treats @public, @private, and @protected as redundant on class members with typed. (65.3.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.3)
- The rule no longer strips @default from getters and setters. (65.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.2)
- The rule now predefines global types from TypeScript's standard library, avoiding reports that those types are undefined. (65.3.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.3.1)
- Keeps description text when maxBlockLines removes excess blank lines. (65.2.6) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.6)
- Added lines use CRLF when the source uses CRLF. (65.2.5) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.5)
- Uses CRLF for added lines when the source uses CRLF. (65.2.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.4)
- Uses CRLF for added lines when the source uses CRLF. (65.2.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.4)
- Uses CRLF for added lines when the source uses CRLF. (65.2.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.4)
- Recognizes export import aliases declared in a same-file namespace. (65.2.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.2)
- Recognizes enums, enum members, and values declared in a same-file namespace. (65.2.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.2)
- When reordering params, the fixer moves the closing delimiter to its own line. (65.2.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.1)
- Lines added by fixers use CRLF when the source uses CRLF. (65.2.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.1)
- New tags are added after the last line of the previous tag, and one-line blocks remain valid. (65.2.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.2.1)
- Avoids resetting section indentation when inline tags are present. (65.1.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.1.0)
- Handles optional types on all tags and across several lines. (65.1.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.1.0)
- Reports opening-line indentation on that line. (65.0.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v65.0.2)

## eslint-plugin-jsdoc 64

### Breaking changes

- CJS exports are dropped; the package is ESM only. (64.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.0.0)
- Requires Node ^22.22.2 or >=24.15.0. (64.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.0.0)

### New APIs and options

- Adds a rule mirroring typescript-eslint's ban-ts-comments rule. (64.5.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.5.0)
- Adds the preferConstToLiteralTuples option to the rule. (64.3.5) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.5)
- Adds a rule for checking @type assertions. (64.3.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.0)

### Performance

- Only tries TypeScript when the rule is enabled, avoiding unnecessary TypeScript checks. (64.5.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.5.4)

### Behavior and default changes

- Adds LibreJS tag support to the rule. (64.4.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.4.0)
- Adds LibreJS tag support to the rule. (64.4.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.4.0)
- The rule now provides an order fixer and suggestions, helping developers correct parameter-name ordering issues. (64.2.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.2.0)

### Fixes and other changes

- [@link] targets now check properties within export class declarations. (64.5.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.5.3)
- The optional TypeScript peer dependency is set to any, undoing a breaking change. (64.5.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.5.2)
- TypeScript is specified as an optional peer dependency, so it is not required for users who do not need it. (64.5.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.5.1)
- The rule merges stacked line comments into a single JSDoc block. (64.3.10) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.10)
- Recognizes class members from the class's own JSDoc when checking for undefined types. (64.3.9) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.9)
- Keys positions by file to avoid positions being shared across files. (64.3.8) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.8)
- Drops suggestions. (64.3.8) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.8)
- Recognizes sibling class members from a property's JSDoc. (64.3.7) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.7)
- Avoids treating object annotations that clarify method argument types as redundant. (64.3.6) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.6)
- Handles array literal annotations with literal or union-of-literals element types that narrow the element type. (64.3.6) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.6)
- The rule no longer flags array-to-tuple assertions. (64.3.5) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.5)
- Avoids crashing when the rule encounters custom languages. (64.3.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.4)
- Handles the "any" context and avoids adding an extra line break when multiline text is already present. (64.3.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.3)
- Strips initial line breaks when text is present, whether or not it includes tags. (64.3.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.3)
- The rule's fixer now handles redundant const. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule now handles generics. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule now handles parenthesized expressions. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule now skips interpolated template literals. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule now skips mismatched nested casts. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule now provides an autofixer for unnecessary type assertions. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule now allows unknown casts. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule better supports assertions involving arrays and objects. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule no longer flags assertions on any. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- The rule no longer flags placeholder unions. (64.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.2)
- Avoids multiple warnings when typescript-eslint is not referenced. (64.3.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.3.1)
- Resumes support for CommonJS via require(esm). (64.0.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v64.0.1)

## eslint-plugin-jsdoc 63

### Breaking changes

- Node 20 is no longer supported. (63.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.0)
- The rule no longer skips constructors. (63.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.0)

### New APIs and options

- Adds the wrapBareUrls option to normalize-see-links. (63.2.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.2.0)
- Adds the normalize-see-links rule. (63.1.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.1.0)

### Fixes and other changes

- Missing tsdoc configs were added. (63.3.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.3.3)
- The fixer now supports 1-line JSDoc blocks. (63.3.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.3.2)
- The rule minimally escapes link targets instead of applying encodeURI. (63.3.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.3.1)
- Autofix now handles delimiter-colliding labels via an escape round-trip. (63.3.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.3.0)
- The rule now ignores Markdown code spans. (63.0.14) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.14)
- Fixes CJS builds, improving use of the package in CommonJS environments. (63.0.12) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.12)
- Skips overloads when searching for method comment blocks, fixing comment detection. (63.0.11) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.11)
- Allows scoped packages in declaration references. (63.0.10) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.10)
- The check-template-names, require-template, and valid-types rules keep commas inside @template default values. (63.0.9) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.9)
- Detects template usage in @augments, @extends, and @implements types. (63.0.8) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.8)
- Predefines Iterable and Iterator types so no-undefined-types no longer treats them as undefined. (63.0.7) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.7)
- Frees comments after each file, preventing them from being retained across files. (63.0.6) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.6)
- The rule now checks descendant scopes for variables, fixing incorrect undefined-type reports. (63.0.5) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.5)
- The tsModule check can now catch multiple modules. (63.0.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.4)
- The rule now treats TypeScript module variables as defined. (63.0.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.3)
- Typedef returns that may be void are now allowed. (63.0.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.2)
- Preserves start and ending delimiters to avoid errors with single-line tags. (63.0.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v63.0.1)

## eslint-plugin-jsdoc 62

### Breaking changes

- The rule now errors if a user blocks @property. (62.7.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.7.1)
- Node.js ^20.19.0, ^22.13.0, or >=24 is now required. (62.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.0.0)

### New APIs and options

- Adds a recommended TSDoc ruleset for configuring eslint-plugin-jsdoc. (62.8.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.8.0)
- Adds the startLinesWithNoTags option to tag-lines. (62.6.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.6.0)
- Adds the boolean option trailingPunctuationMultilineOnly to support trailing punctuation only on multiline types. (62.4.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.4.0)
- Adds the objectTypeBracketSpacing option to control bracket spacing for object types. (62.3.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.3.0)
- The jsdoccomment setting is now available to control comment finding for invoked expressions. (62.0.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.0.0)

### Behavior and default changes

- The rule now allows Typedoc include and includeCode, TSDoc inheritDoc and inheritdoc, and label as inline tags, and adds TSDoc and Typedoc tags. (62.5.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.0)
- Inline inheritDoc, inheritdoc, include, includeCode, and label tags no longer trigger the rule. (62.5.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.0)
- The rule now allows Typedoc include and includeCode, and TSDoc inheritDoc, inheritdoc, and label as inline tags. (62.5.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.0)
- The rule supports strict validation for TypeScript namespaces. (62.2.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.2.0)

### Tooling

- eslint-plugin-jsdoc supports ESLint 10, allowing developers to use the plugin with that ESLint version. (62.7.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.7.0)

### Fixes and other changes

- The valid-types rule now allows required default names. (62.8.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.8.1)
- The rule now only fires on TSPropertySignature when it is with TSFunctionNode. (62.6.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.6.1)
- The rule now checks arrow function properties in interfaces (TSPropertySignature). (62.5.5) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.5)
- The rule now ensures template tags are defined. (62.5.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.4)
- The rule no longer treats infer type identifiers as undefined. (62.5.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.4)
- The config no longer applies deprecated rules, avoiding ESLint warnings. (62.5.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.3)
- The config no longer applies deprecated rules, avoiding ESLint warnings. (62.5.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.3)
- The valid-types rule allows numeric properties in jsdoc mode. (62.5.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.2)
- Stops treating type parameter names as unknown template names. (62.5.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.5.1)
- Treats infer statement types as defined. (62.0.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v62.0.1)

## eslint-plugin-jsdoc 61

### Breaking changes

- The rule no longer treats a synchronous throw as a rejection. (61.4.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.4.1)

### New APIs and options

- Adds checkAllFunctionExpressions to require-jsdoc, forcing checks of FunctionExpressions regardless of context. (61.6.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.6.0)
- Adds the require-rejects rule. (61.4.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.4.0)
- Adds the allowIndentedSections option. (61.3.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.3.0)
- Adds tagExceptions to allow additional lines per tag. (61.2.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.2.0)

### Behavior and default changes

- The check-tag-names, require-template, and check-template-names rules treat typeParam as a non-preferred alias for template. (61.5.0) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.5.0)

### Fixes and other changes

- Allows separate typedefs when checking property names. (61.6.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.6.1)
- The rule’s error message now reflects the proper tag name. (61.4.2) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.4.2)
- When interfaceExemptsParamsCheck is true, structures with interfaces no longer trigger require-param. (61.2.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.2.1)
- The rule no longer reformats spacing after a delimiter. (61.2.1) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.2.1)
- The rule now treats parameter names as defined, avoiding false reports for parameter types. (61.1.12) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.12)
- Fixing a missing parent now places it between the child and grandparent. (61.1.11) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.11)
- The rule now checks object-based types or typings when identifying imports as dependencies. (61.1.10) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.10)
- A CJS version is now provided, fixing the reported issue for CommonJS users. (61.1.9) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.9)
- The rule now considers module-scope variables as defined. (61.1.8) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.8)
- The rule now handles resolve.exports errors. (61.1.7) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.7)
- The rule now checks within exports for types. (61.1.6) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.6)
- Made to-valid-identifier a dependency so it is available where the plugin requires it. (61.1.4) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.4)
- Ensures the import is a valid identifier, fixing the rule’s handling of invalid identifiers. (61.1.3) — [release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases/tag/v61.1.3)
