npm / eslint-plugin-jsdoc
eslint-plugin-jsdoc
What changed in eslint-plugin-jsdoc 61 to 65, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
11 breaking18 new APIs and options2 performance8 behavior and defaults1 tooling90 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initeslint-plugin-jsdoc 6533 changes
Breaking changes 4
With publicOnly, the rule now checks members of anonymous default exports and exported object literals.
The rule no longer fixes comments that contain the closing delimiter.
Disallows extra properties in rule options.
Forbids a missing space between the asterisk prefix and content; set allowNoSpaceAfterAsterisk: true to restore the old behavior.
New APIs and options 4
Adds the fixTypeChangingCasts option to no-unnecessary-type-assertion.
Adds the ignoreEmptyLines option to check-alignment.
Adds the enableFixer option to replace Closure-style optional types.
Allows -any within the tags array to apply alignment, or lack thereof, to all tags.
Performance 1
The no-undefined-types and require-returns-check rules parse a file's JSDoc blocks only once, improving performance.
Fixes and other changes 24
The rule no longer exits early when TypeScript is found.
Supports string any contexts and contexts without comment.
Supports string any contexts and contexts without comment.
Counts template names used as indexed-access indexes, so the rule recognizes those uses.
Counts template names used in other templates' constraints and defaults, so the rule recognizes those uses.
The rule no longer re-escapes existing import names and uses a valid identifier for default imports.
The check-template-names, no-undefined-types, and require-template rules allow spaces around the = of a @template default.
The rule now keeps a hashbang on the first line when adding @import.
Only treats @public, @private, and @protected as redundant on class members with typed.
The rule no longer strips @default from getters and setters.
The rule now predefines global types from TypeScript's standard library, avoiding reports that those types are undefined.
Keeps description text when maxBlockLines removes excess blank lines.
Added lines use CRLF when the source uses CRLF.
Uses CRLF for added lines when the source uses CRLF.
Uses CRLF for added lines when the source uses CRLF.
Uses CRLF for added lines when the source uses CRLF.
Recognizes export import aliases declared in a same-file namespace.
Recognizes enums, enum members, and values declared in a same-file namespace.
When reordering params, the fixer moves the closing delimiter to its own line.
Lines added by fixers use CRLF when the source uses CRLF.
New tags are added after the last line of the previous tag, and one-line blocks remain valid.
Avoids resetting section indentation when inline tags are present.
Handles optional types on all tags and across several lines.
Reports opening-line indentation on that line.
eslint-plugin-jsdoc 6435 changes
Breaking changes 2
CJS exports are dropped; the package is ESM only.
Requires Node ^22.22.2 or >=24.15.0.
New APIs and options 3
Adds a rule mirroring typescript-eslint's ban-ts-comments rule.
Adds the preferConstToLiteralTuples option to the rule.
Adds a rule for checking @type assertions.
Performance 1
Only tries TypeScript when the rule is enabled, avoiding unnecessary TypeScript checks.
Behavior and default changes 3
Adds LibreJS tag support to the rule.
Adds LibreJS tag support to the rule.
The rule now provides an order fixer and suggestions, helping developers correct parameter-name ordering issues.
Fixes and other changes 26
[@link] targets now check properties within export class declarations.
The optional TypeScript peer dependency is set to any, undoing a breaking change.
TypeScript is specified as an optional peer dependency, so it is not required for users who do not need it.
The rule merges stacked line comments into a single JSDoc block.
Recognizes class members from the class's own JSDoc when checking for undefined types.
Keys positions by file to avoid positions being shared across files.
Drops suggestions.
Recognizes sibling class members from a property's JSDoc.
Avoids treating object annotations that clarify method argument types as redundant.
Handles array literal annotations with literal or union-of-literals element types that narrow the element type.
The rule no longer flags array-to-tuple assertions.
Avoids crashing when the rule encounters custom languages.
Handles the "any" context and avoids adding an extra line break when multiline text is already present.
Strips initial line breaks when text is present, whether or not it includes tags.
The rule's fixer now handles redundant const.
The rule now handles generics.
The rule now handles parenthesized expressions.
The rule now skips interpolated template literals.
The rule now skips mismatched nested casts.
The rule now provides an autofixer for unnecessary type assertions.
The rule now allows unknown casts.
The rule better supports assertions involving arrays and objects.
The rule no longer flags assertions on any.
The rule no longer flags placeholder unions.
Avoids multiple warnings when typescript-eslint is not referenced.
Resumes support for CommonJS via require(esm).
eslint-plugin-jsdoc 6321 changes
Breaking changes 2
Node 20 is no longer supported.
The rule no longer skips constructors.
New APIs and options 2
Adds the wrapBareUrls option to normalize-see-links.
Adds the normalize-see-links rule.
Fixes and other changes 17
Missing tsdoc configs were added.
The fixer now supports 1-line JSDoc blocks.
The rule minimally escapes link targets instead of applying encodeURI.
Autofix now handles delimiter-colliding labels via an escape round-trip.
The rule now ignores Markdown code spans.
Fixes CJS builds, improving use of the package in CommonJS environments.
Skips overloads when searching for method comment blocks, fixing comment detection.
Allows scoped packages in declaration references.
The check-template-names, require-template, and valid-types rules keep commas inside @template default values.
Detects template usage in @augments, @extends, and @implements types.
Predefines Iterable and Iterator types so no-undefined-types no longer treats them as undefined.
Frees comments after each file, preventing them from being retained across files.
The rule now checks descendant scopes for variables, fixing incorrect undefined-type reports.
The tsModule check can now catch multiple modules.
The rule now treats TypeScript module variables as defined.
Typedef returns that may be void are now allowed.
Preserves start and ending delimiters to avoid errors with single-line tags.
eslint-plugin-jsdoc 6222 changes
Breaking changes 2
The rule now errors if a user blocks @property.
Node.js ^20.19.0, ^22.13.0, or >=24 is now required.
New APIs and options 5
Adds a recommended TSDoc ruleset for configuring eslint-plugin-jsdoc.
Adds the startLinesWithNoTags option to tag-lines.
Adds the boolean option trailingPunctuationMultilineOnly to support trailing punctuation only on multiline types.
Adds the objectTypeBracketSpacing option to control bracket spacing for object types.
The jsdoccomment setting is now available to control comment finding for invoked expressions.
Behavior and default changes 4
The rule now allows Typedoc include and includeCode, TSDoc inheritDoc and inheritdoc, and label as inline tags, and adds TSDoc and Typedoc tags.
Inline inheritDoc, inheritdoc, include, includeCode, and label tags no longer trigger the rule.
The rule now allows Typedoc include and includeCode, and TSDoc inheritDoc, inheritdoc, and label as inline tags.
The rule supports strict validation for TypeScript namespaces.
Tooling 1
eslint-plugin-jsdoc supports ESLint 10, allowing developers to use the plugin with that ESLint version.
Fixes and other changes 10
The valid-types rule now allows required default names.
The rule now only fires on TSPropertySignature when it is with TSFunctionNode.
The rule now checks arrow function properties in interfaces (TSPropertySignature).
The rule now ensures template tags are defined.
The rule no longer treats infer type identifiers as undefined.
The config no longer applies deprecated rules, avoiding ESLint warnings.
The config no longer applies deprecated rules, avoiding ESLint warnings.
The valid-types rule allows numeric properties in jsdoc mode.
Stops treating type parameter names as unknown template names.
Treats infer statement types as defined.
eslint-plugin-jsdoc 6119 changes
Breaking changes 1
The rule no longer treats a synchronous throw as a rejection.
New APIs and options 4
Adds checkAllFunctionExpressions to require-jsdoc, forcing checks of FunctionExpressions regardless of context.
Adds the require-rejects rule.
Adds the allowIndentedSections option.
Adds tagExceptions to allow additional lines per tag.
Behavior and default changes 1
The check-tag-names, require-template, and check-template-names rules treat typeParam as a non-preferred alias for template.
Fixes and other changes 13
Allows separate typedefs when checking property names.
The rule’s error message now reflects the proper tag name.
When interfaceExemptsParamsCheck is true, structures with interfaces no longer trigger require-param.
The rule no longer reformats spacing after a delimiter.
The rule now treats parameter names as defined, avoiding false reports for parameter types.
Fixing a missing parent now places it between the child and grandparent.
The rule now checks object-based types or typings when identifying imports as dependencies.
A CJS version is now provided, fixing the reported issue for CommonJS users.
The rule now considers module-scope variables as defined.
The rule now handles resolve.exports errors.
The rule now checks within exports for types.
Made to-valid-identifier a dependency so it is available where the plugin requires it.
Ensures the import is a valid identifier, fixing the rule’s handling of invalid identifiers.