Common Errors

Native Module Not Found

SymptomLikely causeFix
Module works in docs but not in appInstalled native package is not in current binaryRebuild development client or preview build
Works in Expo Go docs but not your appExpo Go includes a different native surfaceUse development build and current SDK-compatible package
Metro reload does not helpNative code changedBuild and reinstall native binary

Route Does Not Resolve

SymptomLikely causeFix
Link points to unexpected URLRoute group misunderstoodRemember (group) folders do not affect URL
Dynamic route params missingWrong file name or link shapeCheck [id].tsx path and typed route errors
Tests discovered as routesTest files under app/Move tests outside app/

Build Fails After Dependency Install

SymptomLikely causeFix
Android Gradle or iOS Pods failPackage version not compatible with Expo SDKRun npx expo install --check, check package docs and React Native Directory
Prebuild overwrote native changesManual edit was not durableMove change into app config or config plugin
iOS only failsMissing Apple tooling, pods, or iOS configUse EAS cloud build or verify on macOS

Update Does Not Appear

SymptomLikely causeFix
Device does not fetch updateWrong branch/channel or incompatible runtimeCheck build channel and update runtime version
Android updates but iOS does notPlatform-specific runtime mismatchInspect runtime versions per platform
Bad update still visibleRollback not run or cached stateRun rollback, restart app, inspect update list

Store Submission Blocks

SymptomLikely causeFix
Android submit failsApp not created in Play Console or service account missingComplete Play setup and submit profile credentials
iOS upload succeeds but no releaseTestFlight/App Store Connect still needs review workComplete metadata, screenshots, privacy, build selection, review
Permission rejectionVague permission copy or unjustified sensitive permissionRewrite usage strings, add fallback, update store declaration

Tip: When a mobile failure is unclear, separate JavaScript, Metro, native build, device install, runtime permission, and store submission layers. Debugging all layers at once wastes time.