Pitfalls

Expo Go Overconfidence

Expo Go is useful for learning and simple prototypes. It is not proof that a native dependency, permission, release build, app identifier, or store path works.

Fix: move to a development build as soon as native behavior matters.

OTA Overreach

EAS Update is for compatible JavaScript and assets. It cannot add native dependencies, permissions, SDK upgrades, app config that changes native files, or store-policy-sensitive behavior.

Fix: build a new binary and publish OTA only after the compatible binary exists.

Disposable Native Directories

In a CNG project, android/ and ios/ may be regenerated. Manual native edits disappear under prebuild --clean unless they are captured in config, plugins, modules, or committed native ownership.

Fix: use config plugins for repeated native side effects.

Wrong Package Installer

Plain npm install can pick a version that does not match the Expo SDK.

Fix: use npx expo install for Expo-aware dependencies and run npx expo install --check.

Store Work Left Until The End

App identifiers, signing, screenshots, privacy answers, service accounts, Apple account access, and review questionnaires are real release work.

Fix: create EAS profiles and store preflight notes early, even for a prototype.

Local iOS Blind Spots

Linux can use EAS cloud builds for iOS, but local iOS simulator/device workflows need Apple tooling.

Fix: document the iOS verification path instead of pretending Linux-local tests cover it.