Make eslint actually run

Fixkamo-internal
Shipped
August 30, 2026 at 7:24 PM UTC
Author
Kamo
Commit
63e9b53

`eslint .` reported nothing at all — not a clean tree, but a crash before it loaded a single file: TypeError: Converting circular structure to JSON at ConfigValidator.formatErrors **************** eslint-config-next 16 ships FLAT configs. This file pulled them in through `FlatCompat.extends(...)`, the shim for LEGACY eslintrc configs — that is what the `next-lint-to-eslint-cli` codemod emits, and it stopped being right when the config it wraps became flat. eslintrc's validator rejected the array, then threw stringifying its own error message over a plugin that refers to itself. So every rule Next ships and both rules configured here have been inert, in the editor and on the command line, for as long as this file has looked like this. Import the flat configs directly. Also drops the undeclared dependency on `@eslint/eslintrc`, which was never in package.json and only resolved because eslint hoists it. `next build` does not run the linter on Next 16 (`next lint` is gone, and next/dist/lib/eslint with it), so nothing about the image build changes. The vendored Mozilla PDF.js under public/ is ignored: 899 of the 2904 problems the first working run reported came from two minified third-party bundles. public/email-sw.js is ours and stays linted. What is left is a real backlog — 893 errors and 1112 warnings across 690 files, most of it the React Compiler rules new in eslint-plugin-react-hooks 7 — and is not touched here. This commit only restores the linter's ability to speak.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing