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
Apache Answer
Community
Open-source Q&A platform for communities, help centers, and knowledge bases with AI assistant and plugin extensibility
Bun
Developer Tools
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.
CodeSandbox
Code Editors · Developer Tools
Instantly ready browser-based IDE that runs full npm dependency resolution and transpilation entirely client-side, with no server needed.
Dittofeed
Marketing · Automation
Open-source omni-channel customer engagement platform for automating transactional and marketing messages via email, SMS, WhatsApp, Slack, and mobile push.
Flipt
Devops · Developer Tools
Git-native feature flag platform that stores, versions, and deploys feature toggles directly in your own Git repositories with no external database required.
Infisical
Security · Devops
The open-source platform for secrets, certificates, privileged access, and AI agent security — all in one self-hostable system.
isoflow
Design Tools · Developer Tools
A React component that lets developers embed a fully-featured, isometric network diagram editor directly into their applications.
Laudspeaker
Marketing · Automation
Open-source customer engagement platform for building visual, event-triggered messaging journeys across email, SMS, push, in-app, and webhooks.
Lightdash
Analytics · Data Engineering
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.