languages: Update vscode-eslint to 3.0.24 and fix ESLint 8-10 breaking cases#52886
Merged
smitbarmase merged 6 commits intomainfrom Apr 1, 2026
Merged
Conversation
3 tasks
This was referenced Apr 1, 2026
|
Thanks for the fix! Is this PR yet to be released? I am constantly monitoring the release notes just for this, but I don't see it. This is all I see in
|
1 task
piper-of-dawn
pushed a commit
to piper-of-dawn/zed
that referenced
this pull request
Apr 25, 2026
…g cases (zed-industries#52886) Closes zed-industries#29757 Closes zed-industries#49387 This PR upgrades ESLint language server from `vscode-eslint 2.4.4` to upstream `microsoft/vscode-eslint 3.0.24`, and make the workspace configuration version-aware so ESLint 8, 9, and 10 take the correct config-mode path. The key part is that the 3.x bump alone is not enough. This PR keeps Zed out of that path except where it is still actually needed. Rest heavy-lifting is done by eslint server itself. Zed now only overrides ESLint settings in the two known broken cases: - ESLint 8.21-8.56 flat config: send `experimental.useFlatConfig = true` - ESLint 9 legacy config: send `useFlatConfig = false` All other cases defer to `vscode-eslint 3.x`'s own config and working-directory discovery. For testing, I created https://github.com/smitbarmase/eslint-repros, which contains a versioned ESLint repros covering root flat config, legacy config, and package-local monorepo cases across ESLint 8, 9, and 10. Here is compare between `zed/main`, a pure `vscode-eslint 3.x` upgrade and this branch with the config-mode fixes: ## zed main ```text eslint-v8_21-flat-root-single eslint-v8_56-flat-package-local-monorepo -> breaks on main eslint-v8_56-flat-root-single eslint-v8_56-legacy-root-single eslint-v8_57-flat-package-local-monorepo -> breaks on main eslint-v8_57-flat-root-single eslint-v8_57-legacy-root-single eslint-v9_0-flat-package-local-monorepo eslint-v9_0-flat-root-single eslint-v9_0-legacy-root-single -> breaks on main eslint-v10_0-flat-package-local-monorepo eslint-v10_0-flat-root-single -> breaks on main ``` ## vscode-eslint 3.x upgrade ```text eslint-v8_21-flat-root-single eslint-v8_56-flat-package-local-monorepo -> breaks on 3.x upgrade eslint-v8_56-flat-root-single eslint-v8_56-legacy-root-single eslint-v8_57-flat-package-local-monorepo eslint-v8_57-flat-root-single eslint-v8_57-legacy-root-single eslint-v9_0-flat-package-local-monorepo eslint-v9_0-flat-root-single eslint-v9_0-legacy-root-single -> breaks on 3.x upgrade eslint-v10_0-flat-package-local-monorepo eslint-v10_0-flat-root-single -> breaks on 3.x upgrade ``` ## vscode-eslint 3.x upgrade + use flat config fixes ```text eslint-v8_21-flat-root-single eslint-v8_56-flat-package-local-monorepo eslint-v8_56-flat-root-single eslint-v8_56-legacy-root-single eslint-v8_57-flat-package-local-monorepo eslint-v8_57-flat-root-single eslint-v8_57-legacy-root-single eslint-v9_0-flat-package-local-monorepo eslint-v9_0-flat-root-single eslint-v9_0-legacy-root-single eslint-v10_0-flat-package-local-monorepo eslint-v10_0-flat-root-single ``` Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [x] Unsafe blocks (if any) have justifying comments - [x] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [x] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - Fixed ESLint not reporting diagnostics in some cases for projects that use flat-config, legacy-config, and monorepo projects across ESLint 8, 9, and 10.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #29757
Closes #49387
This PR upgrades ESLint language server from
vscode-eslint 2.4.4to upstreammicrosoft/vscode-eslint 3.0.24, and make the workspace configuration version-aware so ESLint 8, 9, and 10 take the correct config-mode path.The key part is that the 3.x bump alone is not enough. This PR keeps Zed out of that path except where it is still actually needed. Rest heavy-lifting is done by eslint server itself.
Zed now only overrides ESLint settings in the two known broken cases:
experimental.useFlatConfig = trueuseFlatConfig = falseAll other cases defer to
vscode-eslint 3.x's own config and working-directory discovery.For testing, I created https://github.com/smitbarmase/eslint-repros, which contains a versioned ESLint repros covering root flat config, legacy config, and package-local monorepo cases across ESLint 8, 9, and 10. Here is compare between
zed/main, a purevscode-eslint 3.xupgrade and this branch with the config-mode fixes:zed main
vscode-eslint 3.x upgrade
vscode-eslint 3.x upgrade + use flat config fixes
Self-Review Checklist:
Release Notes: