Prettier removes formatting debates across your Expo app and any shared packages in a monorepo. Import sorting keeps react-native above local feature imports so diffs stay readable when screens grow past a dozen dependencies.
// Prettier preserves type-only imports when importOrderType is "mixed"import type { Href } from "expo-router";import { useRouter } from "expo-router";// importOrderType: "inline" merges type and value from the same module// importOrderType: "mixed" keeps type imports grouped with their module
Prettier vs ESLint formatting fight - Both try to control quotes and semicolons, producing an infinite fix loop in the editor. Fix: Add eslint-config-prettier after eslint-config-expo in flat config; never use eslint-plugin-prettier as a rule runner.
Formatting .expo/types or ios/ - Generated route types and prebuild folders create huge noisy diffs. Fix: Add .expo/, ios/, and android/ to .prettierignore unless you intentionally format committed native projects.
Two import sorters - Prettier plugin and ESLint import/order with different group rules reshuffle imports on every save. Fix: Disable import/order in ESLint when the Prettier plugin owns sorting.
--write in CI - CI formats files on the runner but does not commit them, so the job passes while main stays unformatted. Fix: Use prettier --check in CI; reserve --write for local runs and lint-staged hooks.
Lock files formatted by mistake - Without .prettierignore, Prettier touches package-lock.json and creates merge conflicts. Fix: Ignore *lock* files explicitly.
Editor uses wrong formatter - VS Code may default to the built-in TypeScript formatter for .tsx. Fix: Set "editor.defaultFormatter": "esbenp.prettier-vscode" for [typescriptreact] and install the Prettier extension.