Skip to main content
Shipping a mobile app to the store is normally a multi-hour ordeal: certificates, provisioning profiles, build machines, screenshots, metadata, review submissions. Vibely takes care of the engineering side of it — you press Build, and a signed, store-ready app appears on TestFlight or Play Internal within minutes. This page covers the whole flow, end to end.

About Expo and EAS

Vibely’s mobile apps are built on Expo — the framework that lets you write one React Native codebase and ship it to iOS and Android. EAS (Expo Application Services) is Expo’s build and submit infrastructure. Instead of needing a Mac to build for iOS (Apple’s normal requirement), EAS builds in the cloud — works for iOS and Android from any computer. Vibely drives EAS on your behalf. You connect your Expo account once; from there, every build, TestFlight upload, Play submission, and OTA update is a button click in Vibely. You don’t need to learn EAS or write eas.json config. The agent set it up correctly when your project was created.

Prerequisites

PlatformWhat you needCost
iOSApple Developer Program account$99 / year
AndroidGoogle Play Console account$25 (one-time)
BothAn Expo account (for EAS)Sign up free
You don’t need a Mac for iOS — EAS builds in the cloud.

Your first build

1

Connect Expo

Project menu → ShipConnect Expo. Sign in via OAuth. One-time setup.
2

Pick a build profile

Every project ships with three EAS profiles ready to use:
  • development — installable alongside Expo Go; full dev menu and hot reload.
  • preview — internal distribution build for TestFlight / Play Internal; no dev menu.
  • production — store-ready, signed, optimised.
3

Configure signing

EAS can manage iOS certificates and Android keystores for you. Click Use EAS-managed credentials unless you have a specific reason not to. EAS rotates and renews them automatically — no expired-cert surprises.
4

Run the build

Click Build for the platform + profile you want. iOS builds take 12–18 minutes; Android 8–12 minutes. Vibely streams the build log live, so you see exactly what’s happening.
5

Distribute

  • iOS preview → automatically uploaded to TestFlight; testers get an email.
  • Android preview → uploaded to Play Console internal testing track.
  • Production → manual submit step (see Submitting to the stores).

Features

TestFlight (iOS)

After your first preview build:
  1. The app appears in App Store Connect → TestFlight under your team
  2. Add internal testers (up to 100) by email — they get the build instantly, no review needed
  3. For external testers (up to 10K), the first build of each version requires Apple’s beta-app review — usually under 24 hours
  4. Testers install via the TestFlight app on their device

Play Internal Testing (Android)

Same pattern, faster:
  1. The app appears in Play Console → Testing → Internal testing
  2. Add testers by Google account email or a CSV email list
  3. They get an opt-in URL; once opted in, the app shows up in their Play Store
  4. No Google review for internal builds

Store submission, walked through

When you’re ready for production:
  1. Run a production profile build
  2. EAS auto-uploads to App Store Connect or Play Console
  3. Fill out the listing details (name, description, screenshots, privacy policy URL, support URL) — Vibely shows you exactly what each store requires
  4. Submit for review
Apple’s review averages 24–48 hours; Play’s is faster after the first submission.

Why your app is less likely to get rejected

Vibely codes the things Apple and Play reviewers consistently flag — so you don’t get blindsided after a 48-hour wait:
  • Permissions explained. Every permission your app requests has a clear NSCameraUsageDescription (etc.) string written at the moment the permission is added — not as a // TODO later.
  • No mock content. Placeholder text and lorem ipsum get caught before you suggest shipping.
  • No paywalled-only flows on iOS. If your app can be tried without an account, Apple wants a clear path to do so. The agent flags this if you say “ship it” with no anonymous path.
  • Web checkout never gates digital goods. Stripe / Razorpay are fine for physical or real-world services, but for unlocking app features Vibely uses in-app purchases.

OTA updates — ship without store review

For anything that’s just JavaScript or assets (the vast majority of changes), Vibely ships via EAS Update — your users get the new code on next app launch, no store review, no waiting. Prompt “ship the latest changes” and the agent picks the right update mode:
  • OTA update — pure JS/asset changes. Live in minutes.
  • Native update — changes to app.json, permissions, plugins, native modules. Requires a new build + store submission.
You only see the slow path when you actually need it.

Instant rollbacks

OTA updates can be rolled back instantly from the EAS dashboard. If a release goes wrong, the previous version is one click away — users get the rollback on their next app open. Native rollbacks are slower (re-submit the previous build, wait for review). Test on TestFlight / Play Internal before promoting to production.

Build profiles you can customise

development, preview, and production are the defaults — perfect for most apps. If you need more (e.g. staging, enterprise-distribution, dev-with-mock-api), just tell the agent:
“Add a staging build profile that points at the staging Supabase.”
The agent updates eas.json and the new profile is selectable on the next build.

Code signing, managed

For most teams, EAS-managed credentials is the right answer. EAS:
  • Generates iOS distribution certificates and provisioning profiles on first build
  • Generates and stores Android upload keys
  • Rotates and renews everything automatically
If you have an existing Apple team or upload key you need to keep, Use my own credentials lets you paste them in once. EAS uses them from then on.

Limits

  • iOS and Android publishing require their respective developer accounts (99/yearand99/year and 25 one-time). No way around this — those are Apple’s and Google’s fees, not Vibely’s.
  • Some Apple features (App Clips, widgets, push providers other than Expo’s) require a custom EAS development build (one-time setup; everything still hot-reloads after).
  • In-app purchases must use StoreKit / Play Billing or RevenueCat — web checkout for digital goods is against store policy, see Native → IAP.