Skip to content

eslint 8.x is end-of-life; upgrade path is blocked by eslint-config-airbnb-base (needs human decision) #39

Description

@pinecone-groundskeeper

Problem

This is filed as a needs-human-decision item, not a mechanical maintenance fix — see below for why.

package.json:43 pins "eslint": "^8.33.0" (locked to 8.57.1, the last release on the 8.x line). npm install itself emits npm warn deprecated eslint@8.57.1: This version is no longer supported. Please see (eslint.org/redacted) for other options. ESLint's own support policy ((eslint.org/redacted) confirms 8.x is unsupported now that 9.x and 10.x exist.

The straightforward fix — bump to eslint 9 or 10 — is not a drop-in dependency bump for this repo:

  • ESLint 9 removed support for the legacy .eslintrc.* config format (this repo's .eslintrc.cjs) in favor of flat config (eslint.config.js) by default.
  • eslint-config-airbnb-base@15.0.0 (latest published version, used as the base of .eslintrc.cjs) pins peerDependencies.eslint: "^7.32.0 || ^8.2.0" — it has never been updated for ESLint 9/10 and there is no newer release. It structurally cannot be used with ESLint 9+.

So upgrading off the unsupported ESLint 8.x line requires replacing the Airbnb-based lint config (e.g. with @eslint/js + typescript-eslint's recommended flat configs, or another actively-maintained flat-config preset) rather than bumping a version — a rule-set/style decision that belongs to a maintainer, not something a Fixer should decide unilaterally.

What a maintainer needs to decide

  • Whether to replace eslint-config-airbnb-base with a different rule preset (and which one), and migrate .eslintrc.cjs to flat config (eslint.config.js) as part of the same change.
  • Whether to accept the resulting rule-set/style changes across src/ and tests/ (a preset swap will change which rules fire, unlike a same-preset version bump).

Once that direction is chosen, the actual mechanical work (config migration, dependency bumps for eslint, @typescript-eslint/*, eslint-plugin-import, eslint-plugin-prettier, eslint-config-prettier to their ESLint-9/10-compatible majors, and fixing any newly-surfaced lint errors) is normal maintenance and can be filed as a scoped follow-up issue.

Scope

This issue is informational/decision-seeking only. No acceptance criteria are given because the fix requires a maintainer choice first; do not attempt an automated flat-config migration against this issue.

Generated by GitHub Maintenance Audit · sonnet50 · 81 AIC · ⌖ 6.12 AIC · ⊞ 7.3K ·

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent:maintenance-auditFiled by the maintenance audit agent; it recognizes its own backlog by this labelmaintenanceIn scope for the maintenance agentneeds-human-reviewFlagged by the maintenance agent as ambiguous or not actionable; needs a human decision

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions