Expo publishing
Publish an Expo app to the App Store and Google Play
Shiptavio builds, signs, and submits your Expo project from source through our Apple Developer and Google Play organization accounts. You do not need a Mac, Xcode, EAS Build, or your own developer accounts. The service is for free apps without in-app purchases or subscriptions.
Updated 26 October 2026. Free apps only. No in-app purchases or subscriptions.
Framework
Expo, with or without native folders
Source we build
Your project, app config, lockfile, and native setup
Store accounts
Company organization accounts, with transfer available later
Best fit
A free Expo app that is ready for store review
Company organization accounts, not individual accounts
App Store publishing runs on the Apple Developer organization account of our Malaysia-based organization. Google Play publishing runs on our Google Play organization account. We do not use an individual or personal developer account for a customer app.
Promo price
RM199 per app for 12 months.
5 release credits included: your first publish plus up to 4 updates. One credit covers one publish or update, whether it targets iOS, Android, or both.
When they run out, buy the same RM199 package for 5 more. We do not sell single base credits.
macOS, tvOS and visionOS publishing is available separately at RM49 per platform credit. One credit covers one Apple platform release target.
After the launch period: RM399 per app for 12 months. Ends 31 December 2026.
What Shiptavio handles
- Review the Expo project, config plugins, and build command.
- Run npx expo prebuild when the project relies on generated native folders.
- Build the native iOS and Android release on our Mac.
- Sign with our distribution certificates and submit to both stores.
- Handle store feedback and transfer the app later if you ask.
What we do not do
- Rewrite your React Native screens.
- Manage your EAS Build or EAS Update account.
- Sell in-app purchases or digital subscriptions.
- Guarantee store approval or a fixed review date.
- Test the app for you or replace device QA.
What to send
Send source, not a finished binary. The source must be complete enough for us to reproduce your release build.
- The Expo project source, including app.json or app.config.ts and the lockfile.
- The ios/ and android/ folders when your project commits them.
- Config plugins and any native files that affect the build.
- The exact prebuild and build command, including flavor or environment details.
- App icon, screenshots, store text, privacy policy, and a demo account if needed.
How an Expo release works
The same review and credit rules apply to every framework. The build command and the native files are what change.
- 1
Register the app
Create an account, choose Expo, and select the platforms you target. You can publish both stores from one app record.
- 2
Send the project
Use a GitHub repository or a source zip. Include the Expo config and lockfile. If your project uses continuous native generation, the config plugins and prebuild command are part of the source.
Typical Expo projectmy-app/ app.json package.json pnpm-lock.yaml app/ ios/ (if committed) android/ (if committed) eas.json (if you use EAS locally) - 3
We prebuild and build
We run npx expo prebuild when needed, install pods, and build the native release with Xcode and Gradle on our Mac. EAS Build is not required.
- 4
We submit and track
We upload to App Store Connect and Google Play with our organization accounts, work through store feedback, and update the release status in your dashboard.
Technical notes
These are the details that decide whether the source builds and whether the store accepts the upload.
EAS Build is optional
Shiptavio does not need EAS Build. We run the native build from your source on our Mac. You can keep EAS for your own development builds.
EAS Update is separate
If your app uses EAS Update, tell us before submission. OTA updates need your Expo account and credentials, and Shiptavio does not manage them. A store build still needs a native build.
Public environment variables
EXPO_PUBLIC_* values are embedded in the app and are not secret. Put production URLs in the submission form or app.config.ts. Never put private API keys in the app bundle.
Version and build number
Set version, ios.buildNumber, and android.versionCode yourself. If EAS normally increments them, confirm the values before a Shiptavio build.
Config plugins change native code
Plugins that add permissions, native modules, or build settings must be declared in app.json or app.config.ts. Run npx expo prebuild --clean locally if you can, and send the error if it fails.
Testing is your responsibility
Test the app on real devices. Shiptavio builds and submits, but it does not replace QA or confirm that every screen works.
Before you submit
- The app is free and has no in-app purchases or subscriptions.
- The iOS bundle identifier and Android package name are final.
- app.json or app.config.ts is complete, including config plugins.
- The version and build numbers are set.
- The project builds after a clean prebuild, or the failing command is documented.
- No .env files, keystores, or private keys are in the source.
Expo publishing tutorial
Configure app.json, generate native projects, set public environment values, and prepare the source.
Open the tutorialQuestions
Do I need EAS to publish?
Can I use EAS Update with Shiptavio?
Do you support Expo Go?
Do I need a Mac?
What if my project is bare React Native?
Can I send a finished IPA or AAB?
Related guides
Publish a Flutter app
For apps built in Dart with Flutter.
Publish a React Native app
For bare React Native CLI projects with native folders.
Submit with the CLI
Package and send a release from your terminal or CI.
How to submit
The full dashboard flow, from account creation to store review.
Compare publishing options
Shiptavio, Expo EAS, Codemagic, and Fastlane side by side.
Prohibited apps
Check the categories we cannot publish before you start.
Ready to send your Expo project?
Create an account, register the app, and add the source. A person reviews the project before the build starts.