strict: true turns on the compiler checks that catch undefined route params, stale API shapes, and implicit any in native bridges - before Metro bundles a broken screen. On Expo SDK 57, you extend expo/tsconfig.base and tighten incrementally instead of fighting a thousand-error wall.
// Prefer import type for types-only - verbatimModuleSyntax enforces clarityimport type { Order } from "@/lib/api/orders";import { fetchOrder } from "@/lib/api/orders";// StyleProp<ViewStyle> for components accepting style overridesimport type { StyleProp, ViewStyle } from "react-native";interface CardProps { title: string; style?: StyleProp<ViewStyle>;}
// Temporary suppression - prefer @ts-expect-error with a ticket over @ts-ignore// @ts-expect-error RN-204 - LegacyDeviceModule untyped until bridge wrapper landsconst reading = NativeModules.LegacyDeviceModule.getLastReading();
Disabling strict to green CI - The build passes while any leaks into navigation and fetch layers. Fix: Fix boundaries first; use @ts-expect-error with ticket IDs for known legacy gaps.
noUncheckedIndexedAccess noise on safe indexes - Every items[0] becomes T | undefined. Fix: Narrow with if (item), use .at(0) with a guard, or a small function first<T>(arr: T[]): T | undefined helper - avoid blanket ! assertions.
Untyped useLocalSearchParams() - Deep links deliver strings; missing keys become undefined at runtime. Fix: Parse params in one function per screen; throw or redirect when required keys are absent.
skipLibCheck: false during SDK upgrades - Conflicts inside @types/react and RN typings block merges unrelated to your code. Fix: Keep skipLibCheck: true (Expo default) unless you maintain custom DefinitelyTyped forks.
tsc not seeing Expo Router types - Generated files live under .expo/types. Fix: Add .expo/types/**/*.ts to include and run npx expo customize tsconfig.json after enabling typed routes.
Type-aware ESLint rules without parserOptions.project - Rules like @typescript-eslint/no-floating-promises silently skip or error. Fix: Point ESLint at tsconfig.json or run those rules only in a dedicated CI job.