An app only matters when people can install it. Expo's build service, EAS (Expo Application Services), turns your project into real app files in the cloud, so you do not need Xcode or Android Studio on your computer. Store steps and fees change from time to time, so follow the current instructions from Apple, Google and Expo if they differ from this lesson.
Prepare the app
- Open
app.jsonand set a clearname, a uniqueslugand aversion. - Set a unique app ID for each platform:
ios.bundleIdentifierandandroid.package, such ascom.yourname.shop. They cannot be changed after you publish. - Replace the default icon and splash screen in
assets/. - Check every permission text, and remove libraries and code you do not use.
- Test the whole app on at least one real phone.
Build with EAS
Terminal commands
npm install -g eas-cli
eas login
eas build:configure
# test builds you can share
eas build --platform android --profile preview # APK for testers
eas build --platform ios --profile preview # needs an Apple Developer account
# store builds
eas build --platform android --profile production # AAB for Google Play
eas build --platform ios --profile production
eas submit --platform android
eas submit --platform ios
# send a small JavaScript-only fix to installed apps
npx expo install expo-updates
eas update --branch production --message "Fix typo"
- Create a free Expo account and run
eas login. - Run
eas build:configure. It creates aneas.jsonwith build profiles. - Build a preview version first. For Android this is an APK you can send to testers. For iOS, internal builds need an Apple Developer account.
- Install it on a phone and check the whole app, because release builds can behave differently from Expo Go.
- Build the production version: an AAB for Google Play and an IPA for the App Store. EAS can manage signing credentials for you, or you can supply your own.
Publish to the stores
- Google Play: create a Play Console developer account (a one-time fee applies). Create the app, fill in the store listing, privacy policy, data safety and content rating forms, upload the AAB to an Internal testing track, then move to Production when ready. New personal accounts may have extra testing requirements, so check the current rules.
- App Store: join the Apple Developer Program (a yearly fee applies). Create the app in App Store Connect, add screenshots, a description and privacy details, upload the build, test with TestFlight, then submit for review.
eas submitcan upload builds to both stores from the command line.- Reviews can take days. Fix any feedback and resubmit.
Over-the-air updates
With expo-updates you can send a JavaScript or asset fix directly to installed apps, without a full store review, using eas update. It cannot change native code, so changes to native libraries or permissions still need a new build. Stores also have rules about what updates may change, so keep them to bug fixes and small improvements.
After release
- Read reviews and fix problems fast.
- Add crash reporting (for example Sentry) so you see errors from real devices.
- Raise the version, and the build number, for every release.
- Keep Expo SDK and libraries reasonably current. Upgrade with
npx expo install --fixand the SDK upgrade guide.
Interview preparation
Interviewers want to hear that you understand how React Native works and can explain choices. Practise answering these aloud with examples from your own projects.
- What is React Native and how is it different from a hybrid web app?
- What is Expo and when would you use a development build or bare React Native?
- Explain props, state and the rules of hooks.
- What does
useEffectdo, and what does the dependency array mean? - How does
FlatListwork, and how do you make a long list fast? - How does Flexbox in React Native differ from the web?
- How do you store data on the device? AsyncStorage, SQLite and SecureStore: when do you use each?
- What is the difference between server state and client state, and what tools do you use?
- How do you handle permissions properly?
- How do you test a React Native app?
- How do you share navigation params, and why are they strings in Expo Router?
- What is the new architecture of React Native (Fabric and TurboModules) and what problem does it solve?
Make a short portfolio: publish three or four of the ten apps to GitHub with a README, screenshots and the steps to run them. Add one that is on a store or in TestFlight if you can. Honest, working projects matter more than a long list of tools.
Your task
- Pick your best project and set its name, icon and app IDs in
app.json. - Run
eas build:configureand make a preview build for Android. - Install the build on a phone and write down anything that differs from Expo Go.
- Answer five of the interview questions aloud and note the ones you could not answer.
How to check it worked
- The preview build installs and runs on a real phone.
- You know the difference between an EAS update and a new build.
- You can describe the steps from code to store in order.