Devii · DevOps · 2026-03-30 · 5 min read
ESLint Flat Config In 2026: Default `eslint.config`, Monorepos, And CI
Flat config is the normal path for new projects in 2026-how to structure `eslint.config` and finish migration off `.eslintrc`.
**ESLint 9** made **flat config** (`eslint.config.js` / `eslint.config.mjs`) the default; the legacy `.eslintrc.*` formats are deprecated and disappear in a future major (see eslint.org blog posts from the 9.0 era). In 2026, new repos should start flat-only; brownfield repos should budget migration rather than indefinitely bridging.
Match **Node.js** to ESLint’s supported engine range for the version you install-teams standardizing on **Node 22+** in 2026 rarely need legacy compatibility env vars, but `ESLINT_USE_FLAT_CONFIG=false` still exists as an escape hatch during incremental moves.
For monorepos, prefer one **root flat config** that composes shared helpers, with explicit `files` / `ignores` so editors, `eslint .`, and CI all resolve the same rule graph. Pin ESLint and plugins to semver ranges you can bisect when a rule upgrade spikes noise.