{"id":19483,"library":"eslint-config-airbnb-extended","title":"eslint-config-airbnb-extended","description":"An ESLint configuration package that extends the official Airbnb ESLint config to support TypeScript, React hooks, and modern JavaScript. Current stable version is 3.1.0, requiring Node.js >=18.18.0 and ESLint ^9.0.0. It is ESM-only and includes TypeScript types. Key differentiators: all batteries included (no need to install multiple peer configs), redesigned CLI, and significantly smaller package size (~72% reduction) compared to v2. Released on a monthly cadence. V3 dropped Node v16 support and switched to ESM-only.","status":"active","version":"3.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/eslint-config/airbnb-extended","tags":["javascript","eslint","airbnb","airbnb config","eslint config","eslint config airbnb","eslint config airbnb base","eslint config airbnb react","eslint config airbnb typescript","typescript"],"install":[{"cmd":"npm install eslint-config-airbnb-extended","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-airbnb-extended","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-airbnb-extended","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required to run eslint rules","package":"eslint","optional":false}],"imports":[{"note":"ESM-only since v3; CommonJS require() will fail.","wrong":"const airbnbXConfig = require('eslint-config-airbnb-extended')","symbol":"default","correct":"import airbnbXConfig from 'eslint-config-airbnb-extended'"},{"note":"Utility to build custom configs programmatically.","wrong":"const { createConfig } = require('eslint-config-airbnb-extended')","symbol":"createConfig","correct":"import { createConfig } from 'eslint-config-airbnb-extended'"},{"note":"Legacy config object for projects not yet migrated to v3 flat config.","wrong":"import legacy from 'eslint-config-airbnb-extended/legacy'","symbol":"legacy","correct":"import { legacy } from 'eslint-config-airbnb-extended'"}],"quickstart":{"code":"// eslint.config.js\nimport airbnbXConfig from 'eslint-config-airbnb-extended';\n\nexport default [\n  ...airbnbXConfig,\n  {\n    rules: {\n      // Customize rules here\n    }\n  }\n];","lang":"typescript","description":"Shows how to import and extend the Airbnb Extended ESLint config in a flat config file."},"warnings":[{"fix":"Upgrade Node.js to version 18.18.0 or higher.","message":"v3 dropped Node.js v16 support, requires Node 18.18 or higher.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Use import statements or switch to ESM in your project.","message":"v3 is ESM-only; CommonJS require() will throw an error.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Refer to documentation for customization guidance.","message":"v2 removed the 'Own Customization' option from the CLI.","severity":"breaking","affected_versions":">=2.3.0 <3.0.0"},{"fix":"Review your code for formatting issues after upgrading to v2.2.0+.","message":"v2.2.0 re-enabled formatting rules that were accidentally turned off, causing lint failures for users who relied on the disabled rules.","severity":"deprecated","affected_versions":">=2.2.0 <2.3.0"},{"fix":"Override these rules in your eslint config if needed: 'n/prefer-global/crypto': 'off', 'n/prefer-global/timers': 'off'.","message":"v3.1.0 introduced n/prefer-global/crypto and n/prefer-global/timers rules at error level, which may break builds for code using Node.js global objects.","severity":"gotcha","affected_versions":">=3.1.0"},{"fix":"Run eslint --fix to auto-fix violations or manually update hook dependencies.","message":"v3.1.0 enabled all recommended react-hooks rules; projects with pre-existing hook violations will now see lint errors.","severity":"gotcha","affected_versions":">=3.1.0"},{"fix":"Set '\"type\": \"module\"' in package.json or use .mjs extension for config files.","message":"The package is ESM-only and ships TypeScript types; ensure your TypeScript settings allow ESM imports.","severity":"gotcha","affected_versions":">=3.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run 'npm install eslint-config-airbnb-extended --save-dev' and ensure correct import: 'import airbnbXConfig from 'eslint-config-airbnb-extended''.","cause":"Package not installed or wrong import path.","error":"Cannot find module 'eslint-config-airbnb-extended'"},{"fix":"Switch to ESM: use 'import' or rename config file to .mjs and set 'type': 'module' in package.json.","cause":"Using CommonJS require() with an ESM-only package.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module ... not supported."},{"fix":"Install eslint-plugin-n: 'npm install eslint-plugin-n --save-dev'.","cause":"Missing eslint-plugin-n dependency or version mismatch.","error":"'n/prefer-global/crypto' rule is not found"},{"fix":"Update config to match v3 syntax or use 'override' correctly in flat config.","cause":"Incompatible rule configuration from v2.2.0 re-enabling.","error":"Configuration for rule 'react/jsx-curly-brace-presence' is invalid"},{"fix":"Use correct import: 'import { createConfig } from 'eslint-config-airbnb-extended''.","cause":"Trying to import named export from a non-existent subpath.","error":"TypeError: Cannot destructure property 'createConfig' of ... undefined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}