# Exo Deploy

https://exo.now/docs/platform/exo-deploy

> One release path for every surface. Web on Railway, mobile on Expo (config, signing, TestFlight and store listings, Exo Key native sign-in, Exo Analyze built in).



Source: ADR 0007, accepted (owner-approved) on 2026-09-27. It is on `main` and not yet on
`staging`: [read it on main](https://github.com/Interspace-Ventures/exo/blob/main/docs/adr/0007-exo-deploy-mobile-release-toolkit.md).
Roadmap: [mobile-delivery-pipeline](../../../roadmap/items/mobile-delivery-pipeline.md).

**Renamed 2026-10-02:** Exo Deploy became **Exo Deploy** and now covers every surface (web on
Railway, mobile on Expo, pages and embedded app surfaces). ADR 0007 keeps its original filename.
RevenueCat moved to [Payments](../stack/payments.mdx).

## Why [#why]

Shipping to iOS and Android involves the same setup every time: app config, signing, store
listings, TestFlight, native sign-in redirects, and analytics. Exo's stack is TypeScript, React,
Convex, and Exo Key, and most code is written by agents. Universe already ships on Expo and is the
reference.

## Decision [#decision]

* **Expo is the standard mobile framework** for Exo Apps. Expo is an MIT-licensed framework on
  React Native.
* **EAS is optional and swappable** for build, submit, and OTA updates. Start on EAS Free, move to
  Starter when several Apps ship, and run an own Mac builder (`eas build --local` or fastlane) only
  at high volume.
* **Exo Deploy owns the release template:** app config, signing, TestFlight and store listings,
  Exo Key sign-in via a native redirect scheme (for example `universe://auth/callback`), and the
  Exo Analyze SDK built in.
* **The PWA-required-for-mobile gate** in the repository contract stays.

## Unit economics [#unit-economics]

| Stage                   | Fixed cost             | Marginal cost                                 |
| ----------------------- | ---------------------- | --------------------------------------------- |
| Apple Developer Program | $99/year (required)    | —                                             |
| EAS Free                | $0                     | Capped at 15 + 15 builds/month, OTA to 1K MAU |
| EAS Starter             | $19/month              | Usage beyond the $45 build credit             |
| Own Mac builder         | Hardware or hosted Mac | \~$0 per build; pays off only at high volume  |

At current volume the toolkit costs **\~$8/month** (Apple fee amortized). Move up a tier only when
build counts or OTA MAU exceed the current tier.

## Alternatives considered [#alternatives-considered]

| Option                         | Why not                                                         |
| ------------------------------ | --------------------------------------------------------------- |
| Bare React Native              | Same runtime without Expo's build, config, and OTA tooling      |
| Flutter                        | Dart rewrite, no official Convex client, OTA only via Shorebird |
| Capacitor / Ionic              | Webview feel                                                    |
| Kotlin / Compose Multiplatform | Kotlin rewrite                                                  |
| Lynx (ByteDance)               | Too young                                                       |
| Native Swift + Kotlin          | Two codebases                                                   |

## Consequences [#consequences]

* New mobile Apps start from the Exo Deploy template.
* EAS is a service choice, not a dependency: the template keeps a local-build path.
* Each App registers its native redirect scheme with Exo Key during onboarding.

## Status [#status]

Accepted; planned. Template location: **TBD**.
