{"id":19513,"library":"eslint-config-expensify","title":"eslint-config-expensify","description":"Expensify’s sharable ESLint configuration, based on Airbnb’s style guide, with React and JSX a11y support. Current stable version is 2.0.110. Released automatically via GitHub Actions on merge. Provides two configs: default (full) and legacy. Requires eslint, eslint-plugin-import, eslint-plugin-react, and eslint-plugin-jsx-a11y as peer dependencies. Automatically versioned and published via CI.","status":"active","version":"2.0.110","language":"javascript","source_language":"en","source_url":"https://github.com/Expensify/eslint-config-expensify","tags":["javascript","eslint","eslintconfig","config","styleguide","expensify"],"install":[{"cmd":"npm install eslint-config-expensify","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-expensify","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-expensify","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required to run linting","package":"eslint","optional":false},{"reason":"peer dependency for import/export rules","package":"eslint-plugin-import","optional":false},{"reason":"peer dependency for React rules","package":"eslint-plugin-react","optional":false},{"reason":"peer dependency for accessibility rules","package":"eslint-plugin-jsx-a11y","optional":false}],"imports":[{"note":"Use the shorthand 'expensify' not the full package name.","wrong":"module.exports = { extends: 'eslint-config-expensify' }","symbol":"default config","correct":"module.exports = { extends: 'expensify' }"},{"note":"Shorthand works: 'expensify/legacy' instead of full path.","wrong":"module.exports = { extends: 'eslint-config-expensify/legacy' }","symbol":"legacy config","correct":"module.exports = { extends: 'expensify/legacy' }"},{"note":"You can extend and override rules normally.","wrong":null,"symbol":"overrides","correct":"module.exports = { extends: ['expensify'], rules: { 'react/jsx-filename-extension': [1, { extensions: ['.jsx'] }] } }"}],"quickstart":{"code":"// .eslintrc.js\nmodule.exports = {\n  extends: ['expensify'],\n  rules: {\n    'react/jsx-filename-extension': [1, { extensions: ['.jsx'] }],\n  },\n};\n","lang":"javascript","description":"Shows how to set up an .eslintrc.js file using the Expensify config with a custom rule override."},"warnings":[{"fix":"Upgrade Node to >=16 and ESLint to >=8, or stay on v1.x.","message":"v2+ dropped support for Node <16 and ESLint <8. If you are on an older version, extend must be updated or you will see parser/plugin errors.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Migrate to the default config and remove legacy references.","message":"The legacy config (eslint-config-expensify/legacy) is deprecated and will be removed in a future major version.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Run 'npm install --save-dev eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y'.","message":"Missing peer dependencies: eslint-plugin-import, eslint-plugin-react, eslint-plugin-jsx-a11y must be installed or ESLint will error.","severity":"gotcha","affected_versions":"*"},{"fix":"Let CI bump version; only change rules in your PR.","message":"Automatic version bump on merge: do not manually bump version in package.json; CI handles it. Conflicts may arise if you do.","severity":"gotcha","affected_versions":">=1.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 eslint-plugin-import","cause":"Missing peer dependency.","error":"Error: Cannot find module 'eslint-plugin-import'"},{"fix":"npm install eslint-config-expensify --save-dev","cause":"Package not installed or not in node_modules.","error":"Error: Cannot find module 'eslint-config-expensify'"},{"fix":"Ensure the rule is an array with severity and options, e.g., [1, { extensions: ['.jsx'] }].","cause":"Using incorrect rule config shape.","error":"Configuration for rule 'react/jsx-filename-extension' is invalid"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}