eslint-config-airbnb

Airbnb's widely-adopted ESLint config for JavaScript and React, encoding the public Airbnb style guide as enforceable lint rules.

Tool
npm
v19.0.4
148,164stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
50/100Fair
Development Activity8
Maintenance0
Community92
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
63/100Good
Architecture60
Code Quality65
Innovation70
Learning Curve55

eslint-config-airbnb is the shareable ESLint configuration that enforces Airbnb’s public JavaScript and React style guide. Rather than hand-picking dozens of individual ESLint rules and arguing over defaults, teams add a single "extends": "airbnb" entry to their ESLint config and inherit a comprehensive, actively maintained rule set covering ES6+ syntax, React, and JSX.

The package is deliberately layered: the default export combines the core rules from eslint-config-airbnb-base with React and JSX-specific rules, while separate entry points (airbnb/hooks, airbnb/whitespace, airbnb/legacy) let consumers opt into React Hooks linting, formatting-only enforcement, or the deprecated ES5-era rule set independently. It ships no linting plugins itself — instead it declares exact peerDependency ranges on eslint, eslint-plugin-import, eslint-plugin-jsx-a11y, eslint-plugin-react, and eslint-plugin-react-hooks, so version mismatches surface at install time rather than as silent rule drift.

What You Get

  • Airbnb’s complete ESLint rule set for modern JavaScript (ES6+), matching the public Airbnb JavaScript Style Guide rule-for-rule
  • A bundled React and JSX rule layer (rules/react.js, rules/react-a11y.js) included in the default airbnb export
  • A separate airbnb/hooks entry point that adds React Hooks lint rules without requiring the rest of the React rule set
  • An airbnb/whitespace variant that downgrades every non-whitespace rule to a warning, for incremental adoption
  • An airbnb/legacy alias pointing to the deprecated ES5-era rules in eslint-config-airbnb-base, for older codebases

Common Use Cases

  • New React project bootstrap: extend airbnb on day one instead of hand-picking a JS+JSX rule set
  • Incremental legacy codebase adoption: extend airbnb/whitespace first, then graduate to the full config
  • Hooks-only rule layering: add just airbnb/hooks to an existing React lint setup for Hooks-specific checks
  • Style-guide-as-code enforcement: keep an org’s documented JavaScript style guide and its enforced lint rules from drifting apart

Under The Hood

Architecture eslint-config-airbnb is a small set of plain CommonJS modules (index.js, base.js, hooks.js, legacy.js, whitespace.js) that each export a config object whose extends array resolves, via require.resolve, to other config packages — primarily eslint-config-airbnb-base for the core rule set, layered with React-specific overrides from rules/react.js, rules/react-a11y.js, and rules/react-hooks.js. There is no runtime execution model beyond module resolution: ESLint itself loads and merges these plain objects at lint time. Separation of concerns is expressed entirely through entry points (the default index vs /hooks vs /legacy vs /whitespace vs /base), letting consumers opt into exactly the layer they want without forking rules; the tradeoff is that every rule effectively lives one hop away, in the eslint-config-airbnb-base dependency, so this package’s own surface area stays intentionally thin.

Tech Stack The package is plain, unbundled JavaScript with no build step and no TypeScript. It declares peerDependencies on eslint (^7.32.0 || ^8.2.0), eslint-plugin-import, eslint-plugin-jsx-a11y, eslint-plugin-react, and eslint-plugin-react-hooks, and a direct dependency on eslint-config-airbnb-base. Test tooling runs on tape with babel-tape-runner (transpiled via babel-preset-airbnb), and eclint enforces the repo’s .editorconfig rules. CI runs through GitHub Actions workflows (node.yml, node-pretest.yml) alongside a rebase-enforcement workflow, and publishing is gated by safe-publish-latest and an unused-rule check via eslint-find-rules.

Code Quality Testing goes beyond config-shape snapshots: test/requires.js smoke-tests that every entry point resolves without throwing, test/test-base.js asserts that non-React rule files never leak react/ rules or the react plugin, and test/test-react-order.js actually lints sample JSX components through ESLint’s own CLIEngine/ESLint API to assert real linting behavior rather than just object equality. The package also lints itself (npm run lint) with its own exported config, and the repo’s README is linted with markdownlint. There is no type checking — everything is plain JS objects — but naming is fully consistent since every rule key mirrors ESLint’s own canonical rule id.

API Design The public surface is minimal: a single string, "extends": "airbnb", activates the entire rule set once peer dependencies are installed, and documented sub-entry-points (airbnb/hooks, eslint-config-airbnb/whitespace) require no custom code to opt into — just an additional string in the extends array. The main friction point is peer-dependency installation, since five packages must satisfy exact semver ranges; the README documents copy-pasteable npm info ... peerDependencies and install-peerdeps commands to remove the guesswork. Documentation quality is a particular strength: every rule traces back to a public, human-readable rationale in the Airbnb JavaScript style guide, so the “why” behind a lint failure is always one link away.

Used by 16 apps in this directory

Go
60%
Apache 2.0

Apache Answer

Community

15,665

Open-source Q&A platform for communities, help centers, and knowledge bases with AI assistant and plugin extensibility

View details
83
Repo Health
78
Technical
68
Dependency
Built with
Go60%
TypeScript36%
Updated 1 weeks ago
Rust
67%
MIT

Bun

Developer Tools

95,895

An all-in-one JavaScript and TypeScript toolkit — one Rust-and-JavaScriptCore binary that replaces Node.js, npm, a bundler, and a test runner with faster equivalents.

View details
92
Repo Health
91
Technical
64
Dependency
Built with
Rust67%
C++19%
Updated yesterday
JavaScript
90%
Other

CodeSandbox

Code Editors · Developer Tools

13,640

Instantly ready browser-based IDE that runs full npm dependency resolution and transpilation entirely client-side, with no server needed.

View details
69
Repo Health
76
Technical
62
Dependency
Built with
JavaScript90%
Updated 1 weeks ago
TypeScript
92%
MIT

Dittofeed

Marketing · Automation

2,926

Open-source omni-channel customer engagement platform for automating transactional and marketing messages via email, SMS, WhatsApp, Slack, and mobile push.

View details
54
Repo Health
75
Technical
62
Dependency
Built with
TypeScript92%
Updated 5 months ago
Go
73%
Other

Flipt

Devops · Developer Tools

4,888

Git-native feature flag platform that stores, versions, and deploys feature toggles directly in your own Git repositories with no external database required.

View details
90
Repo Health
83
Technical
69
Dependency
Built with
Go73%
TypeScript26%
Updated yesterday
TypeScript
97%
Other

Infisical

Security · Devops

29,145

The open-source platform for secrets, certificates, privileged access, and AI agent security — all in one self-hostable system.

View details
91
Repo Health
84
Technical
65
Dependency
Built with
TypeScript97%
Updated yesterday
TypeScript
98%
MIT

isoflow

Design Tools · Developer Tools

1,704

A React component that lets developers embed a fully-featured, isometric network diagram editor directly into their applications.

View details
41
Repo Health
72
Technical
69
Dependency
Built with
TypeScript98%
Updated 11 months ago
TypeScript
94%
AGPL 3.0

Laudspeaker

Marketing · Automation

2,620

Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.

View details
51
Repo Health
66
Technical
62
Dependency
Built with
TypeScript94%
Updated 1 months ago
TypeScript
96%
Other

Lightdash

Analytics · Data Engineering

6,119

The open-source Looker alternative that turns your dbt project's metrics and dimensions into governed, self-serve charts and dashboards — no license key required.

View details
93
Repo Health
84
Technical
64
Dependency
Built with
TypeScript96%
Updated yesterday

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search