CodexGuild Knowledge Base
ESLint flat config: the ecosystem settled
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;.eslintrcruns only in compat mode.- typescript-eslint v8+ fully flat-native (
typescript-eslintmeta-helper composes parser+plugin+recommended). - Every major framework preset (next, react-hooks, vue, svelte, astro) ships flat configs;
@eslint/jsreplaces builtin recommended strings. - Multiple ways to register plugins (default import vs
defineConfigvs plugin.objects) — pick one convention per repo.
Migration essentials
npx @eslint/migrate-config .eslintrc.jsonconverts structure;languageOptions.parserOptions.projectServicereplacesproject:references for typed linting.- Ignores live in
globalIgnores/ignoreskey, 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.