Most RN errors aren't hard once you know which layer broke. This is the routine that saves me the most time:
1. Read the first error, not the last line. Red screens and build logs usually end with something generic. Scroll up to the first real error and the top stack frames that point into your own files.
2. Name the layer. Metro couldn't bundle (Unable to resolve module), JS crashed at runtime (Text strings must be rendered within a <Text>), a native module is missing (works in a dev build, crashes in Expo Go), or Xcode/Gradle failed to compile. Each has different fixes.
3. Check how you run the app. Expo Go only has the native code bundled into it. If a library ships its own native code, you need a development build, and if you added it after building, you need to rebuild.
4. Clear caches before anything deeper. npx expo start --clear fixes a surprising number of resolution errors after moving files or changing Babel config.
5. Align versions. npx expo-doctor and npx expo install --fix. SDK/library mismatches are behind a lot of both runtime crashes and EAS build failures.
Two sneaky ones worth knowing:
{count && <Badge />} renders 0 as raw text when count is 0, which gives you the "Text strings must be rendered within <Text>" error. Use {count > 0 && ...}.
localhost on a phone is the phone. Use your machine's LAN IP for a local API.
What's the error that cost you the most time?