eslint-config-airbnb
Airbnb's widely-adopted ESLint config for JavaScript and React, encoding the public Airbnb style guide as enforceable lint rules.
Repository Health
Technical Analysis
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
airbnbexport - A separate
airbnb/hooksentry point that adds React Hooks lint rules without requiring the rest of the React rule set - An
airbnb/whitespacevariant that downgrades every non-whitespace rule to a warning, for incremental adoption - An
airbnb/legacyalias pointing to the deprecated ES5-era rules in eslint-config-airbnb-base, for older codebases
Common Use Cases
- New React project bootstrap: extend
airbnbon day one instead of hand-picking a JS+JSX rule set - Incremental legacy codebase adoption: extend
airbnb/whitespacefirst, then graduate to the full config - Hooks-only rule layering: add just
airbnb/hooksto 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
Mautic
Automation · Ecommerce · Marketing
The world's largest open source marketing automation platform — own your data, run multi-channel campaigns, and escape vendor lock-in forever.
ntfy
Developer Tools · Marketing
Send push notifications to your phone or desktop from any script or service using a single HTTP PUT or POST—no sign-up required.
OpenHands
AI Code Assistants · AI Development
The self-hosted developer control center for running AI coding agents — locally, in Docker, on VMs, or across cloud backends — with automation workflows for GitHub, Slack, and more.
OpenReplay
Analytics
Self-hosted session replay and product analytics suite that lets you see exactly what users do on your web app — without sending data to third parties.
QRev
AI Agents · CRM
Open source AI-first sales platform that replaces Salesforce with autonomous agents handling prospecting, outreach, and lead management at scale.
Responsively App
Design Tools · Developer Tools
Preview and interact with your responsive web design across every device size simultaneously — no more manual resizing.
strapi
CMS
Open-source headless CMS that auto-generates REST and GraphQL APIs from your content models, with a fully customizable admin panel you control.