Mobile apps·Updated September 19, 2026·8 min read
How to publish your app to the App Store
What it costs, what Apple actually reviews, and the exact path from a Vibely mobile project to a live App Store listing — no Mac required.
Reference documentation
A Vibely mobile project is a real Expo app, so it ships the way any Expo app ships: through EAS, into TestFlight, then into review. Vibely drives EAS on your behalf — you connect credentials once and every build, TestFlight upload and Play submission after that runs from the project's Ship panel.
You do not need a Mac. EAS builds iOS in the cloud.
What it costs before you start
| Platform | What you need | Cost |
|---|---|---|
| iOS | Apple Developer Program account | $99 / year |
| Android | Google Play Console account | $25 one-time |
| Both | An Expo account, for EAS | Free tier is enough |
Those accounts are yours, in your name. Vibely builds into them; it does not hold your listing. Mobile builds, over-the-air updates and store submissions are not metered — they cost no credits.
The first build
- Connect Expo. Project menu → Ship → Connect Expo, sign in via OAuth.
- Pick a build profile. Profiles live in
eas.json. The template ships three:development(installs alongside Expo Go, full dev menu),preview(internal distribution — TestFlight and Play internal testing, no dev menu), andproduction(signed and optimised for the store). - Configure signing. Take EAS-managed credentials unless you have a specific reason not to — EAS creates, rotates and renews the iOS certificates and the Android keystore for you.
- Build. iOS builds typically take 12–18 minutes, Android 8–12, queued behind anything else in the EAS free tier.
- Distribute. An iOS
previewbuild is uploaded to TestFlight automatically and testers get an email. An Androidpreviewbuild lands in the Play Console internal testing track.
TestFlight, before you go anywhere near review
After the first preview build the app appears in App Store Connect → TestFlight. Add internal testers (up to 100) by email and they get the build instantly with no review. External testers (up to 10,000) need Apple's beta app review on the first build of each version — usually under 24 hours. Testers install through the TestFlight app.
Play works the same way: the build shows up under Testing → Internal testing, you add testers by Google account, they opt in through a URL, and there is no Google review for internal builds.
Submitting to the App Store
- Run a
productionprofile build. EAS uploads it to App Store Connect. - In App Store Connect → App Store, fill in name, subtitle, description, keywords, category, age rating, screenshots, privacy policy URL and support URL. Those fields are your entire discoverability — see App Store optimization for the character limits and which fields Apple actually indexes.
- Submit for review. Apple's review currently averages 24–48 hours, and can run longer for an app's first ever submission.
- On approval, choose "Release this version". It is live worldwide within about an hour.
The five rejections that actually happen
These are the ones that bounce a first submission, and what the agent does about each:
- Unexplained permissions. Every permission needs a usage string. The agent writes
NSCameraUsageDescriptionand friends at the moment the permission is added, not at submission time. - Mock content. Placeholder text and
lorem ipsumare a rejection. The agent strips them before it suggests you ship. - A blank login wall. If the app can be tried without an account, Apple wants a visible path to do that. Say "ship it" with no anonymous path and the agent flags it.
- Web checkout for digital goods. Selling a subscription or a premium feature through Stripe inside a mobile app is an automatic rejection under Guideline 3.1.1. Digital goods go through in-app purchase — see how to add Stripe checkout for where the line sits.
- Missing Sign in with Apple. Offer Google, Facebook or X login and Guideline 4.8 requires an equivalent option that limits collection to name and email, lets the user hide their address, and does not feed ad targeting. Email and password does not satisfy it.
Google Play
Connect Google Play once — Publish → Google Play → paste the service-account JSON from Google Cloud — and the Publish panel drives releases the same way the iOS panel drives TestFlight: pick a track (internal, closed, open or production) and submit. The AAB goes up with eas submit.
One thing Play does not let any tool do for you: the store listing itself. The Play Developer API cannot create one, so the first listing is typed into Play Console by hand.
Build it while it is fresh
Vibely builds web apps and native iOS and Android apps from the same chat — the mobile ones run on a real handset over Expo Go before they ever reach a store.
Start a mobile app