Skip to content

chore(eslint): Upgrade ESLint to v10 and bump plugins - #41509

Merged
dionisio-bot[bot] merged 2 commits into
developfrom
chore/upgrade-eslint
Jul 22, 2026
Merged

chore(eslint): Upgrade ESLint to v10 and bump plugins#41509
dionisio-bot[bot] merged 2 commits into
developfrom
chore/upgrade-eslint

Conversation

@tassoevan

@tassoevan tassoevan commented Jul 22, 2026

Copy link
Copy Markdown
Member

Proposed changes (including videos or screenshots)

Upgrades ESLint to the latest major (v10) and bumps the linting plugins to their newest compatible releases.

  • eslint 9.39.5 → 10.7.0 (root + @rocket.chat/eslint-config), @eslint/js → 10.0.1
  • typescript-eslint 8.56.1 → 8.64.0, eslint-plugin-react-hooks 7.0.1 → 7.1.1, eslint-plugin-storybook 10.2.19 → 10.5.2, globals 17.3.0 → 17.7.0, @babel/eslint-parser 7.28.6 → 7.29.7, @types/eslint 8.44.9 → 9.6.1

eslint-plugin-react patch. eslint-plugin-react@7.37.5 has no ESLint 10 release yet and calls context.getFilename() / context.getSourceCode(), which v10 removed (v9 kept them as deprecated). Its own lib/util/eslint.js already shims the harder scope-related methods; only three direct call sites were unguarded (lib/util/version.js, lib/rules/jsx-filename-extension.js, lib/rules/forward-ref-uses-ref.js). A yarn patch adds the same x.getFilename ? x.getFilename() : x.filename fallback the plugin already uses elsewhere. To be removed once upstream ships v10 support. eslint-plugin-jsx-a11y and @babel/eslint-parser run fine on v10 (advisory peer warnings only).

Kept deliberately pinned (out of scope, large blast radius): prettier (formatter engine — a bump risks repo-wide reformatting) and @babel/core / @babel/eslint-parser@8 (Babel 8 is pinned across the monorepo).

One code change. ESLint 10's expanded eslint:recommended adds no-unassigned-vars, which flagged a latent always-undefined placeholder in packages/apps/src/server/ProxiedApp.ts; made it an explicit const options = undefined.

Issue(s)

ARCH-2200

Steps to test or reproduce

yarn lint --force — passes across all workspaces (71/71, 0 errors) on ESLint 10.

Further comments

No changeset: this is a dev-tooling/devDependency upgrade with no runtime or end-user-facing effect.

packageExtensions were not used to widen the two plugins' eslint peer ranges — yarn 4.12 flags such entries redundant (YN0069) and leaves the original range untouched (verified via A/B test), so the effective fix is the plugin patch. A single advisory peer warning remains (eslint 10 vs the ^9 peer of react/jsx-a11y/babel-parser), consistent with the repo's existing peer warnings.

Review in cubic

Task: ARCH-2289

Summary by CodeRabbit

  • Chores

    • Updated development tooling to the latest ESLint major release.
    • Refreshed related linting and code-quality plugins for improved compatibility and maintenance.
  • Bug Fixes

    • Improved request handling consistency in proxied applications without changing existing behavior.

tassoevan and others added 2 commits July 22, 2026 01:44
Upgrade eslint 9.39.5 -> 10.7.0 across the root and @rocket.chat/eslint-config,
and bump plugins to their latest compatible releases (typescript-eslint 8.64.0,
eslint-plugin-react-hooks 7.1.1, eslint-plugin-storybook 10.5.2, globals 17.7.0,
@eslint/js 10.0.1, @babel/eslint-parser 7.29.7, @types/eslint 9.6.1).

eslint-plugin-react 7.37.5 has no ESLint 10 release yet and calls context APIs
removed in v10 (getFilename/getSourceCode). Patch the three unshimmed call sites
with the fallback idiom the plugin already uses elsewhere, until upstream ships
v10 support. jsx-a11y and @babel/eslint-parser run fine on v10 (advisory peer
warnings only).

ESLint 10's expanded eslint:recommended adds no-unassigned-vars, which flags a
latent always-undefined placeholder in ProxiedApp.ts; make it explicit.

yarn lint --force passes (71/71 workspaces, 0 errors).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tassoevan
tassoevan requested review from a team as code owners July 22, 2026 04:48
@tassoevan tassoevan added this to the 8.8.0 milestone Jul 22, 2026
@dionisio-bot

dionisio-bot Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Looks like this PR is ready to merge! 🎉
If you have any trouble, please check the PR guidelines

@tassoevan

Copy link
Copy Markdown
Member Author

/jira ARCH-2200

@changeset-bot

changeset-bot Bot commented Jul 22, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a636c07

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@rocket.chat/eslint-config Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Upgrades ESLint to v10 across the repository and shared ESLint configuration, updates related plugins, records a minor package release, and changes an application request-options declaration.

Changes

ESLint upgrade

Layer / File(s) Summary
Lint dependency and release updates
package.json, packages/eslint-config/package.json, .changeset/fifty-turkeys-judge.md
Root and shared-config ESLint dependencies are upgraded, related plugins are bumped, and a minor Changesets release entry is added.
Application variable declaration update
packages/apps/src/server/ProxiedApp.ts
ProxiedApp.call now passes an explicitly undefined constant as request options.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested labels: type: chore

Suggested reviewers: d-gubert, kevlehman, rocketchat-github-ci, dougfabris, ggazzo

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: upgrading ESLint to v10 and updating related plugins.

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (1)
  • ARCH-2200: Request failed with status code 401

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tassoevan tassoevan changed the title chore: upgrade ESLint to v10 and bump plugins chore(eslint): Upgrade ESLint to v10 and bump plugins Jul 22, 2026
@tassoevan
tassoevan requested a review from a team July 22, 2026 04:50

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No issues found across 6 files

Re-trigger cubic

@codecov

codecov Bot commented Jul 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 68.66%. Comparing base (30623d9) to head (a636c07).
⚠️ Report is 2 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #41509      +/-   ##
===========================================
- Coverage    68.69%   68.66%   -0.04%     
===========================================
  Files         4134     4134              
  Lines       160417   160417              
  Branches     29312    29295      -17     
===========================================
- Hits        110205   110154      -51     
- Misses       45104    45161      +57     
+ Partials      5108     5102       -6     
Flag Coverage Δ
e2e 58.88% <ø> (-0.01%) ⬇️
e2e-api 45.34% <ø> (+<0.01%) ⬆️
unit 70.66% <ø> (-0.05%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ggazzo ggazzo added the stat: QA assured Means it has been tested and approved by a company insider label Jul 22, 2026
@dionisio-bot dionisio-bot Bot added the stat: ready to merge PR tested and approved waiting for merge label Jul 22, 2026
@dionisio-bot
dionisio-bot Bot added this pull request to the merge queue Jul 22, 2026
Merged via the queue into develop with commit 79a6d1c Jul 22, 2026
140 of 146 checks passed
@dionisio-bot
dionisio-bot Bot deleted the chore/upgrade-eslint branch July 22, 2026 16:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge type: chore

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants