Mamun Labs Learn
JourneyGlossary
esc
  • Try “map”, “flexbox” or “state”.
Log in
Start learning
Phase 8 · 2 / 4Building a release with EAS
Phase 8Ship it to the Play Store
4 topics · 2–3 wks
  1. 1Icons, names and screenshots
  2. 2Building a release with EAS
  3. 3Play Console and internal testing
  4. 4Your store listing and release
JourneyPhase 8Building a release with EAS
01 / 09Overview

Building a release with EAS

You'll learn to turn your Expo project into a real Android file with EAS Build, an APK to try on your phone and an AAB for Google Play.

Why it mattersExpo Go is only for testing. To give your app to anyone else, you need a real build.
about 90 min·needs: Icons, names and screenshots, The terminal, step by step
02 / 09

Watch & read

Start with the required ones. The others are there when you need them.

Video
How to configure a development buildExpo · YouTube · 5 min · English
MMamun's noteWatch 2:20 to 7:02: installing eas-cli, logging in and running eas build:configure. Skip the expo-dev-client part before it. You don't need a development build yet.
Docs
Build APKs for Android emulators and devicesExpo docs · 5 min · English
MMamun's noteShort and exact. It shows the preview profile with apk and the command you will run. Read it all.
DocsOptional
App version managementExpo docs · 10 min · English
MMamun's noteRead the top part and "Remote version source". It explains version and versionCode, and how EAS counts up for you.
ToolOptional
Expo pricingexpo.dev · 3 min · English
MMamun's noteLook only at the Free column. Check the build limit here yourself, because plans can change.
03 / 09

Explanation

Your habit tracker runs in Expo Go. But Expo Go is a test tool. Your friends can't install "your app" from it, and Google Play can't accept it. You need a real Android file.

EAS Build is Expo's service that builds that file for you on its computers, in the cloud. You don't need Android Studio or a powerful laptop. Think of a tailor: you give the measurements (your code and app.json), they sew the shirt on their machine, and you get a link to collect it.

The first time, run these in your project folder:

npm install --global eas-cli
eas login
eas build:configure
eas build -p android --profile preview

eas build:configure creates a file called eas.json. It has three build profiles, like three recipes:

  • development: a test build for developers. You don't need it yet.
  • preview: a build to try on your own phone or share with friends.
  • production: the build you upload to Google Play.

Android has two kinds of app file. An APK installs straight on a phone. An AAB (Android App Bundle) is what Google Play wants. You can't install an AAB yourself. Google Play turns it into the right APK for each phone. EAS makes an AAB by default, so for your own phone, add "buildType": "apk" to the preview profile:

"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
}

The first build asks to make a keystore. Say yes. It is the secret key that proves an update comes from you. EAS keeps it safe on its servers.

Every app has two version numbers. version (like 1.0.0) is what people see. versionCode (1, 2, 3...) is a hidden whole number for Google Play. Every upload to Play needs a bigger versionCode. Play won't take a versionCode it has already seen. The eas.json that eas build:configure makes sets appVersionSource to remote and autoIncrement to true for production, so EAS adds one for you on every production build.

The free plan is enough for this course. As of October 2026, expo.dev/pricing says it includes up to 15 Android builds, with low priority. The Expo docs say the free limits reset every month. A build can wait in a queue, sometimes 90 minutes or more at busy times, so start it and do something else.

People often build production first, send the .aab to a friend, and nothing opens. Use preview with apk for phones, and production only for Google Play.

When you read build output, look for three things: which profile it used, the line with the build details link, and at the end the link to your .apk or .aab. If it fails, open the build details link and read the first red error in the logs.

Words to recognise
EASEAS Buildeas.jsonbuild profileAPKAABversionCodeversionkeystore
04 / 09

Code tour

Click a line number with a ring to read the note for that line.

terminal7 notes
$ eas build -p android --profile preview
Mentor note · line 1
-p android means only Android. --profile preview picks the preview recipe from eas.json.
Resolved "preview" environment for the build.
3✔ Using remote Android credentials (Expo server)
✔ Using Keystore from configuration: Build Credentials (default)
5
6Compressing project files and uploading to EAS Build.
7✔ Uploaded to EAS
8
Build details: https://expo.dev/accounts/nusratdev/projects/daily-habits/builds/8c1f...
10Waiting for build to complete. You can press Ctrl+C to exit.
✔ Build finished
13Android app:
14https://expo.dev/artifacts/eas/aB3x....apk
15
# Example output: your account, project and links will be different.
05 / 09

Practice

Short drills. Take your time and read the code before you answer.

DrillPredict1 / 1
1Google Play Console, Daily Habits, all uploads so far:
2
3 version 1.0.0 versionCode 1
4 version 1.0.1 versionCode 2
5 version 1.1.0 versionCode 3 (uploaded, then you found a crash, never released)
6
7// You fixed the crash. Your next upload is still version 1.1.0.
Which versionCode can the next upload use?
06 / 09

Quick check

3 questions. Each one explains itself after you answer.

  1. 1 / 3You want to install your habit tracker on your cousin's phone today. Which build do you make?
  2. 2 / 3Where do the development, preview and production profiles live?
  3. 3 / 3The terminal says "Waiting for build to complete". You press Ctrl+C. What happens to the build?
07 / 09

Explain it back

Only you can see this. Log in to keep it.0 words
08 / 09

How confident are you with Building a release with EAS?

09 / 09

Done

You can now
Run a preview build, install the APK on your own phone, and read the build output to find the link and spot what went wrong.
Next: Play Console and internal testing Back to Phase 8
On this page
  1. 01Building a release with EAS
  2. 02Watch & read
  3. 03Explanation
  4. 04Code tour
  5. 05Practice
  6. 06Quick check
  7. 07Explain it back
  8. 08Confidence
  9. 09Done
Up next · 02 / 09Watch & read
Mamun Labs LearnFound a mistake on this page? Tell Mamun.
Mamun Labs Learn
JourneyGlossary
esc
  • Try “map”, “flexbox” or “state”.
Log in
Start learning
Log in to save your progress. Everything here works without an account.Log in to save progressLog in
Phase 8Ship it to the Play Store
4 topics · 2–3 wks
  1. 1Icons, names and screenshots
  2. 2Building a release with EAS
  3. 3Play Console and internal testing
  4. 4Your store listing and release
JourneyPhase 8Building a release with EAS
01 / 09Overview

Building a release with EAS

You'll learn to turn your Expo project into a real Android file with EAS Build, an APK to try on your phone and an AAB for Google Play.

Why it mattersExpo Go is only for testing. To give your app to anyone else, you need a real build.
about 90 min·needs: Icons, names and screenshots, The terminal, step by step
02 / 09

Watch & read

Start with the required ones. The others are there when you need them.

Video
How to configure a development buildExpo · YouTube · 5 min · English
MMamun's noteWatch 2:20 to 7:02: installing eas-cli, logging in and running eas build:configure. Skip the expo-dev-client part before it. You don't need a development build yet.
Docs
Build APKs for Android emulators and devicesExpo docs · 5 min · English
MMamun's noteShort and exact. It shows the preview profile with apk and the command you will run. Read it all.
DocsOptional
App version managementExpo docs · 10 min · English
MMamun's noteRead the top part and "Remote version source". It explains version and versionCode, and how EAS counts up for you.
ToolOptional
Expo pricingexpo.dev · 3 min · English
MMamun's noteLook only at the Free column. Check the build limit here yourself, because plans can change.
03 / 09

Explanation

Your habit tracker runs in Expo Go. But Expo Go is a test tool. Your friends can't install "your app" from it, and Google Play can't accept it. You need a real Android file.

EAS Build is Expo's service that builds that file for you on its computers, in the cloud. You don't need Android Studio or a powerful laptop. Think of a tailor: you give the measurements (your code and app.json), they sew the shirt on their machine, and you get a link to collect it.

The first time, run these in your project folder:

npm install --global eas-cli
eas login
eas build:configure
eas build -p android --profile preview

eas build:configure creates a file called eas.json. It has three build profiles, like three recipes:

  • development: a test build for developers. You don't need it yet.
  • preview: a build to try on your own phone or share with friends.
  • production: the build you upload to Google Play.

Android has two kinds of app file. An APK installs straight on a phone. An AAB (Android App Bundle) is what Google Play wants. You can't install an AAB yourself. Google Play turns it into the right APK for each phone. EAS makes an AAB by default, so for your own phone, add "buildType": "apk" to the preview profile:

"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
}

The first build asks to make a keystore. Say yes. It is the secret key that proves an update comes from you. EAS keeps it safe on its servers.

Every app has two version numbers. version (like 1.0.0) is what people see. versionCode (1, 2, 3...) is a hidden whole number for Google Play. Every upload to Play needs a bigger versionCode. Play won't take a versionCode it has already seen. The eas.json that eas build:configure makes sets appVersionSource to remote and autoIncrement to true for production, so EAS adds one for you on every production build.

The free plan is enough for this course. As of October 2026, expo.dev/pricing says it includes up to 15 Android builds, with low priority. The Expo docs say the free limits reset every month. A build can wait in a queue, sometimes 90 minutes or more at busy times, so start it and do something else.

People often build production first, send the .aab to a friend, and nothing opens. Use preview with apk for phones, and production only for Google Play.

When you read build output, look for three things: which profile it used, the line with the build details link, and at the end the link to your .apk or .aab. If it fails, open the build details link and read the first red error in the logs.

Words to recognise
EASEAS Buildeas.jsonbuild profileAPKAABversionCodeversionkeystore
04 / 09

Code tour

Click a line number with a ring to read the note for that line.

terminal7 notes
$ eas build -p android --profile preview
Mentor note · line 1
-p android means only Android. --profile preview picks the preview recipe from eas.json.
Resolved "preview" environment for the build.
3✔ Using remote Android credentials (Expo server)
✔ Using Keystore from configuration: Build Credentials (default)
5
6Compressing project files and uploading to EAS Build.
7✔ Uploaded to EAS
8
Build details: https://expo.dev/accounts/nusratdev/projects/daily-habits/builds/8c1f...
10Waiting for build to complete. You can press Ctrl+C to exit.
✔ Build finished
13Android app:
14https://expo.dev/artifacts/eas/aB3x....apk
15
# Example output: your account, project and links will be different.
05 / 09

Practice

Short drills. Take your time and read the code before you answer.

DrillPredict1 / 1
1Google Play Console, Daily Habits, all uploads so far:
2
3 version 1.0.0 versionCode 1
4 version 1.0.1 versionCode 2
5 version 1.1.0 versionCode 3 (uploaded, then you found a crash, never released)
6
7// You fixed the crash. Your next upload is still version 1.1.0.
Which versionCode can the next upload use?
06 / 09

Quick check

3 questions. Each one explains itself after you answer.

  1. 1 / 3You want to install your habit tracker on your cousin's phone today. Which build do you make?
  2. 2 / 3Where do the development, preview and production profiles live?
  3. 3 / 3The terminal says "Waiting for build to complete". You press Ctrl+C. What happens to the build?
07 / 09

Explain it back

Only you can see this. Log in to keep it.0 words
08 / 09

How confident are you with Building a release with EAS?

09 / 09

Done

You can now
Run a preview build, install the APK on your own phone, and read the build output to find the link and spot what went wrong.
Next: Play Console and internal testing Back to Phase 8
On this page
  1. 01Building a release with EAS
  2. 02Watch & read
  3. 03Explanation
  4. 04Code tour
  5. 05Practice
  6. 06Quick check
  7. 07Explain it back
  8. 08Confidence
  9. 09Done
Up next · 02 / 09Watch & read

Your habit tracker runs in Expo Go. But Expo Go is a test tool. Your friends can't install "your app" from it, and Google Play can't accept it. You need a real Android file.

EAS Build is Expo's service that builds that file for you on its computers, in the cloud. You don't need Android Studio or a powerful laptop. Think of a tailor: you give the measurements (your code and app.json), they sew the shirt on their machine, and you get a link to collect it.

The first time, run these in your project folder:

npm install --global eas-cli
eas login
eas build:configure
eas build -p android --profile preview

eas build:configure creates a file called eas.json. It has three build profiles, like three recipes:

  • development: a test build for developers. You don't need it yet.
  • preview: a build to try on your own phone or share with friends.
  • production: the build you upload to Google Play.

Android has two kinds of app file. An APK installs straight on a phone. An AAB (Android App Bundle) is what Google Play wants. You can't install an AAB yourself. Google Play turns it into the right APK for each phone. EAS makes an AAB by default, so for your own phone, add "buildType": "apk" to the preview profile:

"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
}

The first build asks to make a keystore. Say yes. It is the secret key that proves an update comes from you. EAS keeps it safe on its servers.

Every app has two version numbers. version (like 1.0.0) is what people see. versionCode (1, 2, 3...) is a hidden whole number for Google Play. Every upload to Play needs a bigger versionCode. Play won't take a versionCode it has already seen. The eas.json that eas build:configure makes sets appVersionSource to remote and autoIncrement to true for production, so EAS adds one for you on every production build.

The free plan is enough for this course. As of October 2026, expo.dev/pricing says it includes up to 15 Android builds, with low priority. The Expo docs say the free limits reset every month. A build can wait in a queue, sometimes 90 minutes or more at busy times, so start it and do something else.

People often build production first, send the .aab to a friend, and nothing opens. Use preview with apk for phones, and production only for Google Play.

When you read build output, look for three things: which profile it used, the line with the build details link, and at the end the link to your .apk or .aab. If it fails, open the build details link and read the first red error in the logs.

Words to recognise
EASEAS Buildeas.jsonbuild profileAPKAABversionCodeversionkeystore

Your habit tracker runs in Expo Go. But Expo Go is a test tool. Your friends can't install "your app" from it, and Google Play can't accept it. You need a real Android file.

EAS Build is Expo's service that builds that file for you on its computers, in the cloud. You don't need Android Studio or a powerful laptop. Think of a tailor: you give the measurements (your code and app.json), they sew the shirt on their machine, and you get a link to collect it.

The first time, run these in your project folder:

npm install --global eas-cli
eas login
eas build:configure
eas build -p android --profile preview

eas build:configure creates a file called eas.json. It has three build profiles, like three recipes:

  • development: a test build for developers. You don't need it yet.
  • preview: a build to try on your own phone or share with friends.
  • production: the build you upload to Google Play.

Android has two kinds of app file. An APK installs straight on a phone. An AAB (Android App Bundle) is what Google Play wants. You can't install an AAB yourself. Google Play turns it into the right APK for each phone. EAS makes an AAB by default, so for your own phone, add "buildType": "apk" to the preview profile:

"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
}

The first build asks to make a keystore. Say yes. It is the secret key that proves an update comes from you. EAS keeps it safe on its servers.

Every app has two version numbers. version (like 1.0.0) is what people see. versionCode (1, 2, 3...) is a hidden whole number for Google Play. Every upload to Play needs a bigger versionCode. Play won't take a versionCode it has already seen. The eas.json that eas build:configure makes sets appVersionSource to remote and autoIncrement to true for production, so EAS adds one for you on every production build.

The free plan is enough for this course. As of October 2026, expo.dev/pricing says it includes up to 15 Android builds, with low priority. The Expo docs say the free limits reset every month. A build can wait in a queue, sometimes 90 minutes or more at busy times, so start it and do something else.

People often build production first, send the .aab to a friend, and nothing opens. Use preview with apk for phones, and production only for Google Play.

When you read build output, look for three things: which profile it used, the line with the build details link, and at the end the link to your .apk or .aab. If it fails, open the build details link and read the first red error in the logs.

Words to recognise
EASEAS Buildeas.jsonbuild profileAPKAABversionCodeversionkeystore