ESLint
eslint.org › docs › latest › use › migrate-to-9.0.0
Migrate to v9.x - ESLint - Pluggable JavaScript Linter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 Copy code to clipboard · If you still need the v8.x Linter functionality, pass configType: "eslintrc" to the constructor like this:
ESLint
eslint.org › blog › 2025 › 03 › flat-config-extends-define-config-global-ignores
Evolving flat config with extends - ESLint - Pluggable JavaScript Linter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Copy code to clipboard · This flattening behavior is designed to eliminate some of the confusion we heard around the use of the spread operator (...) with the new configuration system. With defineConfig(), you never need to use the spread operator (unless you really want to!). The original theory of flat config was that extends was just an abstraction over a one-dimensional array of configuration objects, and was therefore not needed if we gave people access to that one-dimensional array.
Stack Overflow
stackoverflow.com › questions › 79199428 › eslint-migration-issue-while-converting-extends-to-v9
vue.js - ESLint migration issue while converting extends to v9 - Stack Overflow
I'm trying to convert my .eslintrc.cjs to eslint.config.js with migration of ESLint. My current config file has extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', 'plugin:@
GitHub
github.com › eslint › eslint › issues › 19116
Change Request: Flat config extends · Issue #19116 · eslint/eslint
November 7, 2024 - Now that more folks are moving to ESLint v9 and flat config, a common complaint is that it's difficult to extend configs from plugins. Whereas eslintrc had extends, flat config forces folks to insert objects into the export array, sometimes using the spread (...) syntax and sometimes not.
Published Nov 07, 2024
ekino
ekino.fr › home › publications › migrate to eslint 9.x
Migrate to ESLint 9.x - Ekino FR
October 16, 2024 - parser: '@typescript-eslint/parser' parserOptions: project: ./tsconfig.json sourceType: module env: node: true jest: true plugins: - import extends: - eslint:recommended - plugin:@typescript-eslint/recommended - plugin:prettier/recommended - plugin:import/recommended - plugin:import/typescript settings: import/resolver: typescript: true node: true rules: '@typescript-eslint/no-use-before-define': 'off' 'require-await': 'off' 'no-duplicate-imports': 'error' 'no-unneeded-ternary': 'error' 'prefer-object-spread': 'error' '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true, args: 'none' }]
GitHub
github.com › eslint › eslint › discussions › 18207
ESLint 9 (beta) Step by Step Installation Guide · eslint/eslint · Discussion #18207
Install ESLint 9 beta · Convert .eslintrc.json rules to eslint.config.js · Here is a snippet of .eslintrc.json · { "env": { "browser": true, "es2024": true, "greasemonkey": true, "webextensions": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module" }, "globals": { }, "plugins": [ "@stylistic/js" ], "rules": { "no-case-declarations": "off", "more-rules": "...
Author eslint
ESLint
eslint.org › blog › 2024 › 04 › eslint-v9.0.0-released
ESLint v9.0.0 released - ESLint - Pluggable JavaScript Linter
Previously, ESLint would treat ("use strict") as a strict mode directive even though it is not. We fixed the behavior so only valid strict mode directives are honored. The containing scope of a class extends clause was incorrectly set to be the scope containing the class when it should have been the class scope itself.
Stack Overflow
stackoverflow.com › questions › 77061899 › how-to-extend-and-override-rules-config-in-eslint
How to extend and override rules config in ESLint?
{ "extends": ["next", "prettier"], "plugins": ["prettier", "@typescript-eslint", "unused-imports"], "rules": { "no-unused-vars": "off", "no-duplicate-imports": "off", "no-console": "warn", "no-return-await": "warn", "no-useless-return": "warn", "no-var": "warn", "react-hooks/exhaustive-deps": "off", "import/order": [ "warn", { "groups": ["type", "builtin", "external", "internal", "parent", "sibling", "index", "object"], "newlines-between": "always" } ], } }
GitHub
github.com › eslint › eslint › discussions › 18377
Add more comprehensive examples of best practise eslint.config.js's for v9 migration · eslint/eslint · Discussion #18377
So I just updated my eslint to v9 and with it the default configuration file was changed to eslint.config.js As someone who hasn't known about the configuration change at all, it was quite painful ...
Author eslint
Reddit
reddit.com › r/reactjs › eslint v9 migration: lessons learned (the hard way) 🧗
r/reactjs on Reddit: ESLint v9 Migration: Lessons Learned (The Hard Way) 🧗
March 18, 2025 -
Just wrapped up an ESLint v9 migration, and let’s just say… I’ve seen things. 😵💫
I hit all the bumps, took all the wrong turns, and somehow made it to the other side—so you don’t have to. If you’re planning an upgrade, this might save you some headaches (or at least a few desperate ChatGPT prompts).
I put together something I wish I had before starting. If you're still procrastinating on the upgrade (no judgment), this might just be your sign to finally do it. Give it a read—misery loves company. 😆
📖 https://www.neoxs.me/blog/migration-to-eslint-v9
Top answer 1 of 5
44
Mark my words, the best thing to happen to linting was for Biome and Oxlint to become somewhat mature right as ESlint bungled the v9 migration. It's now so much easier to migrate to a linter that is magnitudes faster. Only reason to remain in ESLint is if your company has custom rules that don't yet have equivalents.
2 of 5
41
I wasted quite some time trying to migrate a large project to eslint 9 half a year ago. That thing is just broken by design. Biome is the way to go
GitHub
github.com › JsDaddy › eslint-8-to-9
GitHub - JsDaddy/eslint-8-to-9
import eslint from "@eslint/js"; import angular from "angular-eslint"; import tseslint from "typescript-eslint"; export default tseslint.config( ... { ..., files: ["**/*.ts"], extends: [ eslint.configs.recommended, ...tseslint.configs.recommended, ...tseslint.configs.stylistic, ...angular.configs.tsRecommended, ], ..., }, ...
Author JsDaddy
GitHub
github.com › eslint › eslint › releases › tag › v9.39.1
Release v9.39.1 · eslint/eslint
Bug Fixes 650753e fix: Only pass node to JS lang visitor methods (#20283) (Nicholas C. Zakas) Documentation 51b51f4 docs: add a section on when to use extends vs cascading (#20268) (Tanuj Kanti)...
Author eslint