TypeScript and ESLint Version Compatibility Warning
This article explains how to resolve the warning: "You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree" and provides practical solutions to maintain compatibility between your TypeScript and ESLint dependencies.
Understanding the Warning
The warning occurs when your TypeScript version falls outside the supported range of your @typescript-eslint/typescript-estree
package. This package is a dependency of various ESLint plugins that handle TypeScript parsing.
Example warning message:
=============
WARNING: You are currently running a version of TypeScript which is not
officially supported by @typescript-eslint/typescript-estree.
You may find that it works just fine, or you may not.
SUPPORTED TYPESCRIPT VERSIONS: >=3.3.1 <4.4.0
YOUR TYPESCRIPT VERSION: 4.4.2
Please only submit bug reports when using the officially supported
version.
=============
Recommended Solutions
1. Update Your ESLint Dependencies
The most effective solution is to update your ESLint-related packages to versions that support your TypeScript version:
npm i eslint@latest @typescript-eslint/parser@latest @typescript-eslint/eslint-plugin@latest --save-dev
After updating, your package.json
might include compatible versions like:
{
"devDependencies": {
"eslint": "^8.38.0",
"@typescript-eslint/parser": "^6.9.0",
"@typescript-eslint/eslint-plugin": "^6.9.0",
"typescript": "^5.0.4"
}
}
2. Identify Dependency Conflicts
If updating doesn't resolve the issue, identify which package is pulling in the incompatible version:
npm why @typescript-eslint/typescript-estree
This command shows the dependency tree, helping you identify which package is causing the version mismatch. Common culprits include:
eslint-plugin-jest
eslint-plugin-testing-library
eslint-config-next
3. Use Package Manager Overrides (Advanced)
For npm (version 8.3+), add an overrides
section to your package.json
:
{
"overrides": {
"@typescript-eslint/typescript-estree": "$@typescript-eslint/typescript-estree"
}
}
For yarn, use the resolutions
field:
{
"resolutions": {
"@typescript-eslint/typescript-estree": "^6.9.1"
}
}
WARNING
Use overrides/resolutions carefully, as they can introduce compatibility issues with other dependencies.
Version Compatibility Reference
Here's a quick reference for @typescript-eslint/typescript-estree
and TypeScript version compatibility:
typescript-estree Version | Supported TypeScript Version |
---|---|
8.26.0 | TypeScript 5.8 |
8.10.0 | TypeScript 5.6 |
7.14.0 | TypeScript 5.5 |
7.2.0 | TypeScript 5.4 |
6.13.0 | TypeScript 5.3 |
6.5.0 | TypeScript 5.2 |
5.61.0 | TypeScript 5.1 |
5.55.0 | TypeScript 5.0 |
INFO
Check the official changelog for the most current compatibility information.
Alternative: Suppress the Warning
If you're confident your setup works despite the warning, you can disable it in your ESLint configuration:
// eslint.config.js or .eslintrc.js
export default {
languageOptions: {
parserOptions: {
warnOnUnsupportedTypeScriptVersion: false,
},
},
};
DANGER
Suppressing the warning is not recommended for production environments, as you might miss legitimate compatibility issues.
Troubleshooting Steps
If you're still experiencing issues:
Clear package manager caches:
bashrm -rf node_modules package-lock.json npm install
Update related ESLint plugins:
eslint-config-next
(for Next.js projects)eslint-plugin-jest
eslint-plugin-testing-library
Check for global TypeScript installations:
bashnpx tsc --version npm list -g typescript
Conclusion
The TypeScript/ESLint version mismatch warning typically indicates outdated ESLint-related dependencies. The recommended approach is to update your @typescript-eslint
packages to versions compatible with your TypeScript version. For complex dependency trees, use npm why
to identify conflicts and consider using package manager overrides if necessary.
Always verify compatibility using the official TypeScript ESLint compatibility table before implementing solutions.