antfu

antfu/eslint-config

JavaScript MIT Dev Tools Single maintainer risk

Anthony's ESLint config preset

6.2k stars
576 forks
recent
GitHub +9 / week

6.2k

Stars

576

Forks

52

Open issues

30

Contributors

v9.1.0 24 Jun 2026

AI Analysis

A personal ESLint configuration preset by Anthony Fu that provides opinionated, zero-config linting with auto-fix capabilities, designed as a Prettier alternative. It supports TypeScript, Vue, JSX, JSON, YAML, and other formats out-of-box with optional integrations for React, Next.js, Svelte, and Astro. Best suited for developers and teams adopting ESLint flat config who value strong opinions on code style consistency.

Dev Tools Developer Tool Discovery value: 3/10
Documentation 8/10
Activity 9/10
Community 9/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

eslint code-style linting configuration typescript
Actively maintained Well documented MIT licensed Popular Niche/specialized use case Beginner friendly Production ready
Deep Analysis · Based on README and public signals
2w ago

Anthony Fu's opinionated ESLint flat-config preset covering TypeScript, Vue, React, and a dozen file types out of the box

antfu/eslint-config is a batteries-included ESLint configuration preset authored by Vue/Vite core-team member Anthony Fu. It consolidates linting and formatting into a single tool (no Prettier required), supports ESLint's new flat-config format natively, and covers TypeScript, JSX, Vue, JSON, YAML, Markdown, CSS, and more with a single import. It targets individual developers and teams who want a coherent, low-friction JS/TS linting baseline without assembling dozens of plugins manually. With 6,200+ stars and active maintenance as of June 2026, it has clearly outgrown being purely personal — though the author explicitly positions it as an opinionated personal config.

Origin

Created in July 2019 as a personal ESLint config, it evolved significantly when ESLint introduced flat config (v9). The author gave a JSNation 2024 talk on it, signaling deliberate investment in the project's public life beyond personal tooling.

Growth

Growth was driven by Anthony Fu's visibility in the Vue/Vite/Nuxt ecosystem and his advocacy for ESLint flat config as a Prettier replacement. The JSNation 2024 talk accelerated awareness. Star trajectory from ~1k (pre-flat-config era) to 6k+ reflects community interest in the flat-config migration story. Weekly star adds (6/week as of measurement date) suggest mature, steady interest rather than viral growth.

In production

Direct npm download data is not available in the provided metadata, but the package is published to npm as @antfu/eslint-config. The 575 forks and widespread references in the Vue/Nuxt/Vite open-source ecosystem suggest meaningful real-world usage. Adoption appears concentrated in the Vue/Vite developer community and individual projects following Anthony Fu's style. Large-scale enterprise adoption not verified.

Code analysis
Architecture

Appears to be a composable factory function (antfu()) that returns an ESLint flat-config array. Likely uses a plugin-aggregation pattern internally, wiring together eslint-stylistic, typescript-eslint, eslint-plugin-vue, and others behind a unified API. Optional framework support (React, Svelte, Astro, etc.) suggests lazy-loading or conditional plugin inclusion.

Tests

Not documented in README

Maintenance

Last push was 2026-06-26, two days before evaluation date — actively maintained. 575 forks suggest community engagement. The README includes explicit upgrade guidance, indicating the author takes backward-compatibility communication seriously. No signs of stagnation.

Honest verdict

ADOPT IF: you are building in the Vue/Vite/Nuxt ecosystem, want a flat-config-native setup, and are comfortable with the author's stylistic choices (single quotes, no semi) — it eliminates significant boilerplate. AVOID IF: your team has strong existing style preferences incompatible with these opinions, you need stability guarantees across patch versions, or you require vendor-neutral tooling for a large organization. MONITOR IF: you use Prettier today but are watching the ESLint-as-formatter space — this config is the clearest practical demonstration of that approach.

Independent dimensions

Mainstream potential

4/10

Technical importance

6/10

Adoption evidence

6/10

Risks
  • Explicitly personal config: the author reserves the right to make breaking style changes; downstream consumers must review diffs on every update.
  • Tight coupling to Anthony Fu's personal judgment means no governance model or RFC process — direction can shift without community input.
  • The no-Prettier stance may create friction when onboarding contributors who expect Prettier in the project.
  • Dependency on a large number of upstream ESLint plugins means any breaking change in those plugins (e.g., eslint-plugin-vue, typescript-eslint) can require rapid updates.
  • Mainstream potential is limited by its opinionated nature — teams needing neutral shared configs will likely build their own or use org-specific presets instead.
Prediction

Likely to remain a well-maintained, influential reference implementation for ESLint flat config in the Vue ecosystem, with slow but steady adoption growth. Unlikely to become a cross-ecosystem default due to its intentionally opinionated stance.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

JavaScript
59.9%
TypeScript
37.6%
Vue
1.8%
HTML
0.3%
Astro
0.2%
CSS
0.1%
Svelte
0.1%

Information

Language
JavaScript
License
MIT
Last updated
2w ago
Created
85mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

prettier

prettier/prettier-eslint

prettier-eslint runs code through Prettier followed by ESLint --fix, combining...

4.1k TypeScript Dev Tools
eslint

eslint/config-inspector

ESLint Config Inspector is a visual debugging tool that helps developers...

1.3k TypeScript Dev Tools
eslint-stylistic

eslint-stylistic/eslint-stylistic

ESLint Stylistic is a community-maintained monorepo that provides stylistic and...

2k TypeScript Dev Tools
prettier

prettier/eslint-config-prettier

eslint-config-prettier is a specialized ESLint configuration that disables...

5.9k JavaScript Dev Tools
prettier

prettier/eslint-plugin-prettier

eslint-plugin-prettier integrates Prettier code formatting into ESLint by...

3.6k JavaScript Dev Tools
vs. alternatives
eslint-config-prettier

Disables ESLint rules that conflict with Prettier rather than replacing Prettier. antfu/eslint-config explicitly targets users who want to drop Prettier entirely and use ESLint for formatting — different philosophy and user goal.

eslint-stylistic

eslint-stylistic provides the formatting rules as a standalone plugin; antfu/eslint-config bundles eslint-stylistic along with many other configs into a ready-to-use preset. Complementary rather than competing — antfu's config uses eslint-stylistic internally.

eslint/config-inspector

A visual debugging tool for ESLint flat configs, not a config preset. Orthogonal product; the two can be used together.

prettier/prettier-eslint

Runs Prettier then ESLint --fix, chaining both tools. antfu's config takes the opposite stance: eliminate Prettier from the pipeline. Users must choose a philosophy; switching costs are real.

xo

XO is another opinionated all-in-one ESLint wrapper targeting a similar audience. antfu's config has stronger Vue/Vite ecosystem integration and flat-config-first design; XO has longer history and different stylistic defaults.