Icons, names and screenshots
You'll learn to give your app a real name, an id, an icon and a splash screen in app.json, and take screenshots Google Play will accept.
Watch & read
Start with the required ones. The others are there when you need them.
Explanation
Your habit tracker works in Expo Go. Before it can go on Google Play, it needs a proper name, an icon, and a few screenshots. All of this starts in one file.
That file is app.json, called the app config. Think of it like the label on a bottle of water.
The water is your code. The label says the brand name, shows the logo, and has a barcode that is never
reused. Your code does not change. Only the label does.
{"expo": {"name": "Daily Habits","slug": "daily-habits","icon": "./assets/images/icon.png","android": { "package": "com.nusratdev.habits" }}}
nameis the name under the icon on the home screen.slugis a short id for your project on expo.dev. People never see it.iconis the picture. The Expo docs say 1024x1024 PNG is a good size, and it must be exactly square.android.packageis the barcode. It is your app's id on Google Play, likecom.nusratdev.habits. Small letters, numbers and_, separated by dots. Pick it once, carefully. After you publish, never change it. The Android docs say Play treats a new package as a completely different app.
Android phones cut icons into different shapes: a circle on one phone, a rounded square on another.
So Android uses an adaptive icon: a front layer (your logo) on top of a back layer (a colour). In
app.json this is android.adaptiveIcon with foregroundImage and backgroundColor. The Android
docs say each layer is 108x108 dp, and only the middle 66x66 dp is always safe from cutting. So keep
your logo small and in the centre, with empty space around it.
The splash screen is the picture shown for a moment while the app opens. In current Expo SDKs you set
it with the expo-splash-screen plugin in app.json: an image, an imageWidth and a
backgroundColor. Expo Go shows its own icon here, so the docs say to check your splash screen in a
real build, which you make in the next topic.
Screenshots come from your own phone. Open the app, add three real habits, and take screenshots of your best screens. Google Play has rules for them (as of October 2026): JPEG or PNG without transparency, each side between 320 and 3840 pixels, and the long side can't be more than twice the short side.
People often upload phone screenshots straight from a modern phone. Many phones today make screenshots like 1080x2400. That is more than twice as tall as it is wide, so Play refuses it. Crop it to 1080x1920 (9:16), or place it on a 1080x1920 background in Figma or Canva.
When you read an app.json, look for four things: the name people will see, an android.package you
are happy to keep forever, icon files that really exist at those paths, and an adaptive icon with a
background colour that matches your logo.
Code tour
Click a line number with a ring to read the note for that line.
Quick check
3 questions. Each one explains itself after you answer.
- 1 / 3Your app is on Google Play as
com.rafi.tapgame. You change it tocom.rafi.jumpgameand upload. What happens? - 2 / 3Your phone makes screenshots of 1080x2400 pixels. Google Play refuses them. Why?
- 3 / 3On a friend's phone, your icon logo is cut at the edges. What should you change?
Explain it back
How confident are you with Icons, names and screenshots?
Done
app.json, say what each field shows on the phone, and fix an icon or screenshot that Google Play would refuse.