{"id":19253,"library":"babel-preset-airbnb","title":"babel-preset-airbnb","description":"A Babel preset for transforming JavaScript according to the Airbnb Style Guide, version 5.0.0. It includes transforms for all stage 4 (ES2018) and stage 3 syntax permitted in the guide, excluding generators, async/await, async iterators, and lifted template literal restrictions. It uses @babel/preset-env for targeting environments and supports React development mode, PropTypes removal, and optional loose class mode. Peer dependencies include @babel/core ^7.0.0 and @babel/runtime ^7.0.0. Differentiators: opinionated selection based on Airbnb style, built-in support for React PropTypes removal, and environment targeting via @babel/preset-env. Released as needed, with last major update aligning with Babel 7.","status":"active","version":"5.0.0","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/airbnb/babel-preset-airbnb","tags":["javascript","babel","es6","es2015"],"install":[{"cmd":"npm install babel-preset-airbnb","lang":"bash","label":"npm"},{"cmd":"yarn add babel-preset-airbnb","lang":"bash","label":"yarn"},{"cmd":"pnpm add babel-preset-airbnb","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; Babel 7 core is required for the preset to function.","package":"@babel/core","optional":false},{"reason":"Peer dependency; provides helper functions for transformed code.","package":"@babel/runtime","optional":false}],"imports":[{"note":"In .babelrc or babel.config.js, use the shorthand 'airbnb'. The full package name also works but is less common.","wrong":"module.exports = {\n  presets: ['babel-preset-airbnb']\n};","symbol":"default preset","correct":"module.exports = {\n  presets: ['airbnb']\n};"},{"note":"Options are passed as an array. Common mistakes include missing inner array brackets.","wrong":"","symbol":"with options","correct":"module.exports = {\n  presets: [['airbnb', { targets: { node: 6 } }]]\n};"},{"note":"The preset is resolved by name; passing the preset object directly may cause plugin duplication issues.","wrong":"var preset = require('babel-preset-airbnb');\nrequire('@babel/core').transform('code', { presets: [preset] });","symbol":"require in Node API","correct":"require('@babel/core').transform('code', {\n  presets: [['airbnb', { targets: { node: 6 } }]]\n});"}],"quickstart":{"code":"// Install: npm install --save-dev babel-preset-airbnb @babel/core @babel/runtime\n// .babelrc or babel.config.js\nmodule.exports = {\n  presets: [['airbnb', {\n    targets: {\n      node: 'current'\n    },\n    development: process.env.NODE_ENV === 'development',\n    removePropTypes: process.env.NODE_ENV === 'production',\n    loose: false\n  }]]\n};","lang":"javascript","description":"Quick setup for babel-preset-airbnb with Node.js target, React development mode, and PropTypes removal toggle."},"warnings":[{"fix":"Use babel-preset-airbnb@3 for Babel 6, or upgrade to Babel 7.","message":"Version 5.0.0 is for Babel 7. Do not use with Babel 6.","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"If you need these features, add @babel/plugin-transform-regenerator and @babel/plugin-transform-async-to-generator manually.","message":"The preset excludes generators, async/await, and async iterators due to regenerator-runtime overhead.","severity":"gotcha","affected_versions":">=3.0.0"},{"fix":"Set removePropTypes: true or removePropTypes: { mode: 'remove' } for production builds.","message":"PropTypes removal is opt-in via the 'removePropTypes' option and defaults to 'wrap' mode, not 'remove'.","severity":"gotcha","affected_versions":">=5.0.0"},{"fix":"Merge your custom targets into the 'targets' object instead of using 'additionalTargets'.","message":"The 'additionalTargets' option may be deprecated in future versions; use 'targets' directly.","severity":"deprecated","affected_versions":">=5.0.0"},{"fix":"Only enable debug for troubleshooting; avoid in CI or production logs.","message":"When using debug mode (debug: true), output can be verbose and may expose internal plugin lists.","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"Add @babel/runtime to your dependencies or devDependencies.","message":"The preset requires @babel/runtime as a peer dependency, not just @babel/core.","severity":"gotcha","affected_versions":">=5.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"npm install --save-dev @babel/core @babel/runtime","cause":"Missing peer dependency @babel/core.","error":"Cannot find module '@babel/core'"},{"fix":"npm install --save-dev babel-preset-airbnb","cause":"Preset not installed or in wrong devDependencies.","error":"Error: Cannot find module 'babel-preset-airbnb'"},{"fix":"Downgrade to babel-preset-airbnb@3 or upgrade Babel to v7.","cause":"Using Babel 6 with babel-preset-airbnb@5 (Babel 7 preset).","error":"SyntaxError: Unexpected token (1:1) while parsing /path/to/file.js with Babel preset 'airbnb'"},{"fix":"If needed, add @babel/plugin-transform-runtime or @babel/polyfill.","cause":"Using async/await or generators, which are excluded from the preset.","error":"ReferenceError: regeneratorRuntime is not defined"},{"fix":"Use presets: [['airbnb', { targets: ... }]]","cause":"Incorrect configuration: presets: ['airbnb', { targets: ... }] (should be nested array).","error":"Error: Plugin 0 specified in \"...\" provided an invalid property of type \"boolean\" (expected object)"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}