🌐
ESLint
eslint.org › blog › 2026 › 02 › eslint-v10.0.0-released
ESLint v10.0.0 released - ESLint - Pluggable JavaScript Linter
3 weeks ago - The loadESLint() function now always returns the ESLint class. The Linter constructor configType argument can only be "flat" and will throw an error if "eslintrc" is passed.
🌐
Next.js
nextjs.org › docs › app › api-reference › config › eslint
Configuration: ESLint | Next.js
2 weeks ago - eslint-config-next/typescript: Adds TypeScript-specific linting rules from typescript-eslint. Use this alongside the base or core-web-vitals config. Get linting working quickly with the ESLint CLI (flat config):
Discussions

Support for Eslint v9 Flat Config format
ConfigError: Config (unnamed): Key "parserOptions": This appears to be in eslintrc format rather than flat config format. More on github.com
🌐 github.com
16
January 17, 2024
How to use new "flat config" approach in Eslint?
Summary I have Eslint working in a TypeScript Next.js project, but I want to switch to the new "flat config" approach that Eslint offers. (Why is that not Next.js's default?) I create... More on github.com
🌐 github.com
9
25
Change Request: Flat config extends
ESLint version HEAD What problem do you want to solve? 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. Whe... More on github.com
🌐 github.com
13
November 7, 2024
📈 Tracking: Flat Config support
👋 Hi all! With flat config stabilized and ESLint v9 on the horizon released!, many community plugins are adding native support for flat config. The Configuration Migration Guide provides docs on ho... More on github.com
🌐 github.com
99
December 13, 2023
🌐
npm
npmjs.com › package › eslint-flat-config-utils
eslint-flat-config-utils - npm
February 7, 2026 - Utils for managing and manipulating ESLint flat config arrays. Latest version: 3.0.2, last published: a day ago. Start using eslint-flat-config-utils in your project by running `npm i eslint-flat-config-utils`. There are 238 other projects in the npm registry using eslint-flat-config-utils.
      » npm install eslint-flat-config-utils
    
Published   Mar 09, 2026
Version   3.0.2
Author   Anthony Fu
🌐
GitHub
github.com › standard › eslint-config-standard › issues › 411
Support for Eslint v9 Flat Config format · Issue #411 · standard/eslint-config-standard
January 17, 2024 - Here's what I did config as follows in eslint.config.js // eslint.config.js import standard from 'eslint-config-standard' export default [ standard, // ... ] this will report: ConfigError: Config (unnamed): Key "parserOptions": This appe...
Published   Apr 16, 2024
🌐
Feature-sliced
feature-sliced.design › blog › mastering-eslint-config
Your Ultimate Guide to Mastering ESLint Config | Feature-Sliced Design
January 20, 2026 - Think of flat config as an ordered list of configuration objects that match files by glob: ... This model makes advanced setups clearer, especially for large codebases. The ESLint team introduced defineConfig() to improve type safety and ...
🌐
ESLint
eslint.org › blog › 2025 › 03 › flat-config-extends-define-config-global-ignores
Evolving flat config with extends
March 7, 2025 - One pointed criticism is that they never knew how to extend another configuration because some were objects, some were arrays, and not all plugins exposed their flat configs the same way. Here’s an example: import js from "@eslint/js"; import tailwind from "eslint-plugin-tailwindcss"; import reactPlugin from "eslint-plugin-react"; import eslintPluginImportX from "eslint-plugin-import-x"; export default [ js.configs.recommended, ...tailwind.configs["flat/recommended"], ...reactPlugin.configs.flat.recommended, eslintPluginImportX.flatConfigs.recommended, ];
🌐
DEV Community
dev.to › aolyang › eslint-9-flat-config-tutorial-2bm5
ESLint 9 Flat config tutorial - DEV Community
August 5, 2024 - When we start a new project, syntax check and style format is important but not easy to config. That is because, before ESLint 9, it had many conflicts between IDE/Editor, prettier, and ESLint. Now ESLint9 disabled & deprecated some confict rules, and enabled Flat config as default.
Find elsewhere
🌐
GitHub
github.com › vercel › next.js › discussions › 49337
How to use new "flat config" approach in Eslint? · vercel/next.js · Discussion #49337
Switching my projects to flat config was taking more time than it was worth. Beta Was this translation helpful? Give feedback. ... There was an error while loading. Please reload this page. Something went wrong. There was an error while loading. Please reload this page. ... There was an error while loading. Please reload this page. ... Something went wrong. There was an error while loading. Please reload this page. ... I have created a package eslint-config-next-flat (Source code) that is (roughly) a port of the eslint-config-next for FlatConfig.
Author   vercel
🌐
ESLint
eslint.org › docs › latest › extend › plugin-migration-flat-config
Plugin Migration to Flat Config
We recommend prefixing older format configs with legacy-. For example, if your primary config is called recommended and is in flat config format, then you can also have a config named legacy-recommended that is the eslintrc config format. If you don’t want to update the config name, you can also create an additional entry in the configs object prefixed with "flat/" (for example, "flat/recommended").
🌐
Jmugliston
jmugliston.dev › blog › using-the-new-eslint-flat-config
Using the New ESLint Flat Config
April 29, 2024 - This example uses the FlatCompat#extends() method to insert the “standard” config into the flat config array. Importing plugins has also changed with the new config file. Previously, ESLint would use a string-based import system. The new format uses JavaScript objects, which means you can just use import / require statements to load plugins from external sources.
🌐
ESLint
eslint.org › blog › 2023 › 10 › flat-config-rollout-plans
Flat config rollout plans - ESLint - Pluggable JavaScript Linter
October 10, 2023 - With flat config now feature complete, we are happy to share the rollout plan. When ESLint v9.0.0 is released, either the end of this year or beginning of next year, flat config will be the default configuration system and we will deprecate, but not remove, eslintrc.
🌐
GitHub
github.com › eslint › eslint › issues › 19116
Change Request: Flat config extends · Issue #19116 · eslint/eslint
November 7, 2024 - In flat configs, extends will not trigger any file loading. Instead, it will allow string identifiers for configs contained in plugins as well as objects. Here's a simple example: import js from "@eslint/js"; export default [ { plugins: { js }, files: ["**/*.js"], extends: ["js/recommended"], rules: { "prefer-const": "off" } } ];
Published   Nov 07, 2024
🌐
Nx
nx.dev › technologies › eslint › recipes › flat-config
Switching to ESLint's Flat Config Format
The generator will go through all the projects and convert their configurations to the new format. It will also convert the base .eslintrc.json and .eslintignore. Section titled “Correctness and best practices” · The purpose of this generator is to create a flat config that works the same way as the original JSON config did.
🌐
Raul Melo
raulmelo.me › en › blog › migration-eslint-to-flat-config
Embrace the Future: Navigating the New Flat Configuration of ESLint · Raul Melo
July 20, 2023 - In eslintrc, we could give various names and extensions to an ESLint config: .eslintrc (without extension but matches the JSON syntax) ... Now in the flat config, we have a unique file name standard: eslint.config.js.
🌐
GitHub
github.com › eslint › eslint › issues › 18093
📈 Tracking: Flat Config support · Issue #18093 · eslint/eslint
December 13, 2023 - 👋 Hi all! With flat config stabilized and ESLint v9 on the horizon released!, many community plugins are adding native support for flat config. The Configuration Migration Guide provides docs on how to do that. This is a tracking issue o...
Published   Feb 08, 2024
🌐
ESLint
eslint.org › blog › 2022 › 08 › new-config-system-part-2
ESLint's new config system, Part 2: Introduction to flat config
August 5, 2022 - We took all of the learnings from the previous six years of ESLint development to come up with a holistic approach to configuration that took the best of eslintrc and combined it with the way other JavaScript-related tools handled configuration. The result is something that hopefully feels familiar to existing ESLint users and is far more powerful than what was possible before. Docs: Read more about flat config system in the official documentation.
🌐
GitHub
github.com › angular-eslint › angular-eslint › blob › main › docs › CONFIGURING_FLAT_CONFIG.md
angular-eslint/docs/CONFIGURING_FLAT_CONFIG.md at main · angular-eslint/angular-eslint
In other words, we don't want the same rules to apply on TypeScript files that we do on HTML/inline-templates. Therefore, our flat config will contain two entries, one for TS, one for HTML.
Author   angular-eslint
Top answer
1 of 1
9

ESLint flat config is quite different from the previous format. To help understand the "flat config" the following pointers helped me:

  • Config is nothing more complicated than an array of objects. This is simpler than the previous format but might not be obvious at first.
  • Each object in the array can define whatever ESLint configuration it wants
  • Each object can target certain files by including or ignoring a set of files (useful because .eslintignore is no longer available)
  • Each file being linted will have all matching configurations applied - I believe in the order they appear in the array

Setup for VS Code - at the time of writing you'll need:

  • ESLint plugin v3.0.5 or above (this currently requires "switch to pre-release version") in the plugin's installation page
  • Add "eslint.useFlatConfig": true to your settings.json (this was previously eslint.experimental.useFlatConfig)

Install the following dependencies:

    yarn add --dev \
      eslint \
      @eslint/js \
      typescript-eslint \
      --

Use the following eslint.config.mjs file to get you started (locate it alongside package.json). This provides defaults from https://typescript-eslint.io/getting-started/. This config additionally allows you to add ignored files, which is useful because .eslintignore is no longer available. NB the config is 'just Javascript' so you can make additional changes. This uses module.exports which avoids the need to add type: "module" to package.json:

// @ts-check

import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';

// https://typescript-eslint.io/getting-started/

const ignores = [
  '**/*.js',
];

export default tseslint.config(
  {
    ...eslint.configs.recommended,
    ignores,
  },
  ...tseslint.configs.recommended.map((config) => ({
    ...config,
    ignores,
  })),
);

Pro:

  • It's actually quite clean
  • The config above is a lot smaller than the sticky nest of stuff I had accumulated under the old config

Con:

  • I was previously using AirBnB config but decided I needed to dump that because it's not (yet) available in flat config format
  • Applying a different set of linting rules meant a raft of (mostly simple) changes across my codebase