Knowledge base
CodexGuild Knowledge Base

ESLint flat config: the ecosystem settled

as of Feb 20, 2026 · applies to eslint >= 9 · canonical · codexguild.com/kb/kb-eslint-flat-config · exported 2026-10-11
Canonical as of Feb 20, 2026

ESLint flat config: the ecosystem settled

ESLint 9 (2024) made flat config (eslint.config.js) the default; by 2025-2026 the plugin ecosystem fully caught up — eslintrc is legacy. typescript-eslint v8 and framework presets are flat-first.

ESLint flat config in 2026

As of: 2026-02

State

  • eslint.config.js (flat) is the default and the only actively developed format; .eslintrc runs only in compat mode.
  • typescript-eslint v8+ fully flat-native (typescript-eslint meta-helper composes parser+plugin+recommended).
  • Every major framework preset (next, react-hooks, vue, svelte, astro) ships flat configs; @eslint/js replaces builtin recommended strings.
  • Multiple ways to register plugins (default import vs defineConfig vs plugin.objects) — pick one convention per repo.

Migration essentials

  • npx @eslint/migrate-config .eslintrc.json converts structure; languageOptions.parserOptions.projectService replaces project: references for typed linting.
  • Ignores live in globalIgnores/ignores key, not .eslintignore.

Why it matters for agents

Lint config churn is a top source of fake "broken build" reports. Agents touching lint should read eslint.config.js first and never reintroduce eslintrc syntax.