Skip to content

Upgrade ESLint to v10 with compatibility fixes#8049

Open
ggdouglas wants to merge 1 commit intodevelopfrom
gd/eslint-10-compat-upgrade
Open

Upgrade ESLint to v10 with compatibility fixes#8049
ggdouglas wants to merge 1 commit intodevelopfrom
gd/eslint-10-compat-upgrade

Conversation

@ggdouglas
Copy link
Copy Markdown
Contributor

Summary

  • Upgrade ESLint-related dependencies across root and tooling packages to latest compatible versions
  • Update @blueprintjs/eslint-plugin peer range to include ESLint 10
  • Apply targeted ESLint 10 compatibility handling in @blueprintjs/eslint-config (including required plugin rule fixups)

Testing

  • Compile and lint steps should still pass

Copilot AI review requested due to automatic review settings April 10, 2026 13:11
@ggdouglas ggdouglas added Domain: tooling dependencies Pull requests that update a dependency file labels Apr 10, 2026
@changelog-app
Copy link
Copy Markdown

changelog-app bot commented Apr 10, 2026

Generate changelog in packages/eslint-config/changelog/@unreleased

Type (Select exactly one)

  • Feature (Adding new functionality)
  • Improvement (Improving existing functionality)
  • Fix (Fixing an issue with existing functionality)
  • Break (Creating a new major version by breaking public APIs)
  • Deprecation (Removing functionality in a non-breaking way)
  • Migration (Automatically moving data/functionality to a new system)

Description

Upgrade ESLint to v10 with compatibility fixes


Generate changelog in packages/eslint-plugin/changelog/@unreleased

Type (Select exactly one)

  • Feature (Adding new functionality)
  • Improvement (Improving existing functionality)
  • Fix (Fixing an issue with existing functionality)
  • Break (Creating a new major version by breaking public APIs)
  • Deprecation (Removing functionality in a non-breaking way)
  • Migration (Automatically moving data/functionality to a new system)

Description

Upgrade ESLint to v10 with compatibility fixes


Generate changelog in packages/node-build-scripts/changelog/@unreleased

Type (Select exactly one)

  • Feature (Adding new functionality)
  • Improvement (Improving existing functionality)
  • Fix (Fixing an issue with existing functionality)
  • Break (Creating a new major version by breaking public APIs)
  • Deprecation (Removing functionality in a non-breaking way)
  • Migration (Automatically moving data/functionality to a new system)

Description

Upgrade ESLint to v10 with compatibility fixes


Check the box to generate changelog(s)

  • Generate changelog entry

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Upgrades ESLint to v10 across the monorepo and applies compatibility adjustments in @blueprintjs/eslint-config to keep linting working with updated plugins.

Changes:

  • Bump ESLint (and related tooling) to ^10.2.0 across root and tooling packages.
  • Expand @blueprintjs/eslint-plugin peer dependency range to include ESLint 10.
  • Add @eslint/compat and apply rule fixups / config tweaks in @blueprintjs/eslint-config.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/node-build-scripts/package.json Updates ESLint + formatter versions used by build scripts.
packages/eslint-plugin/package.json Updates TS-ESLint utilities and expands ESLint peer range to v10.
packages/eslint-config/package.json Upgrades ESLint/plugins and adds @eslint/compat for ESLint 10 compatibility.
packages/eslint-config/index.js Uses @eslint/compat fixups and adjusts flat config options for ESLint 10.
package.json Updates root ESLint + typescript-eslint versions.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 35 to 37
module.exports = tseslint.config(
blueprintPlugin.flatConfigs.recommended,
importPlugin.flatConfigs.typescript,
{
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This drops importPlugin.flatConfigs.typescript from the composed config. If you still intend to apply eslint-plugin-import’s TypeScript flat config (rules/settings/resolvers), it should be re-added (or replaced with the plugin’s updated flat-config entry point for v2.32+) instead of being removed.

Copilot uses AI. Check for mistakes.
Comment on lines +16 to 22
const { fixupPluginRules } = require("@eslint/compat");
const headerPlugin = fixupPluginRules(require("eslint-plugin-header"));
const importPlugin = fixupPluginRules(require("eslint-plugin-import"));
const jsDocPlugin = require("eslint-plugin-jsdoc");
const jsxA11yPlugin = require("eslint-plugin-jsx-a11y");
const reactPlugin = require("eslint-plugin-react");
const reactPlugin = fixupPluginRules(require("eslint-plugin-react"));
const reactHooksPlugin = require("eslint-plugin-react-hooks");
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With eslint-plugin-jsdoc bumped to ^62.9.0, verify it still supports CommonJS require(); if it is ESM-only in this major, this config will throw at load time. If so, either pin to a CJS-compatible major or migrate this config entry point to ESM/dynamic import.

Copilot uses AI. Check for mistakes.

// ESLint 9 requires all rules with options to have a schema, but
// eslint-plugin-header doesn't do this yet...
// ESLint requires option schemas; eslint-plugin-header's rule metadata is missing one.
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment says ESLint requires option schemas, but the code sets meta.schema = false, which disables schema validation rather than providing a schema. Either update the comment to describe this as a workaround to bypass schema enforcement, or set meta.schema to an appropriate JSON schema / [] (if the rule truly takes no options).

Suggested change
// ESLint requires option schemas; eslint-plugin-header's rule metadata is missing one.
// Work around eslint-plugin-header missing rule option schema metadata by disabling
// ESLint schema validation for this rule.

Copilot uses AI. Check for mistakes.
@blueprint-previews
Copy link
Copy Markdown

chore(eslint): upgrade to v10 and add plugin compatibility fixes

Build artifact links for this commit: documentation | landing | table | demo | storybook

This is an automated comment from the deploy-preview CircleCI job.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file Domain: tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants