Official ESLint configuration for Expo applications, maintained by the Expo team. Version 55.0.0 aligns with Expo SDK 55 and supports ESLint 8.x. Provides a consistent set of rules for Expo/React Native projects, including React, React Hooks, React Native, and Expo-specific best practices. Unlike generic React Native configs, this package includes rules tailored for Expo's file-based routing, Expo modules, and platform-specific code. Released in tandem with Expo SDK updates, typically on a monthly cadence. Key differentiators: first-class support for Expo Router, automatic detection of web vs native platforms, and integration with Expo's Metro bundler settings.
npm install eslint-config-expoVerified import paths — ran on the pinned version, not inferred.
Configure ESLint for an Expo project using either legacy eslintrc or flat config format, with ESLint 8.x.
Downgrade to ESLint 8.x or use eslintrc format with ESLint 8.
import expo from 'eslint-config-expo'; instead of 'eslint-config-expo/flat'.
npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin
Use dynamic import or switch to ESM.
Use dynamic import: const expoConfig = (await import('eslint-config-expo')).default;Ensure you have eslint-config-expo installed and your ESLint config uses the correct extends (just 'expo').
Check your .eslintrc for duplicate or malformed rule settings; consider removing overrides if not needed.
npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin