EAS Update alternative: same client, different billing
EAS Update is Expo's own update service and the reference implementation of the Expo Updates protocol — the same wire protocol Otapush speaks. This page is not going to argue that we are "better". The client library compiled into your app is identical either way, so the honest comparison is about everything around the client: accounts, billing, and what leaving costs.
When EAS Update is the right choice
Stay on EAS if all of these are true:
- you can pay Expo with an internationally issued card,
- you do not need ruble billing or an invoice from a Russian legal entity,
- you like getting builds, store submissions and updates from one vendor.
EAS Update is maintained by the same team that maintains expo-updates, which is as low-risk as this category gets. And because Otapush uses the same client, deciding later is cheap: switching costs one URL and one rebuild, in both directions. A comparison page that does not admit this is not being honest with you.
Where Otapush actually differs
| EAS Update | Otapush | |
|---|---|---|
| Client library | expo-updates |
expo-updates |
| Wire protocol | Expo Updates v1 | Expo Updates v1 |
| Expo account | required | not required |
| Who runs the update server | Expo | we do |
| Metering | MAU tiers, then usage-based | MAU, plan limit, no automatic overage charges |
| Payment | billed by Expo in US dollars | rubles: card / SBP via T-Bank acquiring, invoice for companies |
| Cost of switching servers | one URL + one rebuild | one URL + one rebuild |
Three rows carry the whole argument.
Payment. Expo bills internationally, in US dollars. Otapush bills in rubles through Russian acquiring, and companies can pay by invoice — the next section covers this in detail.
No Expo account. Otapush has its own accounts and its own CLI. Nothing in the flow — registration, publishing, rollback — touches Expo's services.
Same client. Your app keeps the stock expo-updates library, so there is no SDK to rip out and no lock-in on either side: leaving EAS costs a URL, leaving us costs a URL.
Paying from Russia
Why this is a problem at all: since March 2022, Visa and Mastercard cards issued by Russian banks do not work for payments outside Russia, and MIR is not accepted by foreign services. So a Russian card fails against any internationally billed subscription — EAS included. That is a property of the card networks, not a flaw of EAS, and a page that frames it as one is selling you something.
What we accept instead:
Cards and SBP
Bank cards (MIR, Visa, Mastercard issued in Russia) and SBP, the Faster Payments System, through T-Bank acquiring, in rubles. Card details are entered on T-Bank's payment page and never reach our servers. See Billing & plans.
Invoice for companies
Pro and Business plans can be paid by invoice to a Russian bank account. On the Billing page you set the payer to "Legal entity" and the method to "Invoice"; the server returns the invoice details, you pay from the company's account, and the plan activates when the payment arrives.
Fiscal receipts (54-FZ)
Card payments produce a fiscal receipt under 54-FZ, issued by the acquiring side and sent to your email. Receipt data is part of every payment we initialize, not an afterthought.
Migrating from EAS Update
The client stays; only the server changes. Because the update URL and the code-signing certificate are compiled into the binary, the move costs exactly one store release.
- Create the app in Otapush. Register in the portal (no Expo account), create an app, then run
otapush loginandotapush initin your project.initwrites theupdatesblock — our URL, your runtime version, the signing certificate — intoapp.jsonfor managed projects, or intoAndroidManifest.xmlandExpo.plistfor bare ones. Details in Expo setup. - Register a device id. Otapush meters MAU by device, so the server asks for a stable
deviceIdthat EAS never needed. It is one call at startup —Updates.setExtraParamAsync("deviceid", id)— with the full snippet in Expo setup. - Rebuild once and ship to the stores.
expo prebuild --clean, then your usual local release build (./gradlew assembleRelease, or a Release archive in Xcode) — EAS Build is not required. Installs already in the field keep pulling updates from EAS until users receive this build from the store, so publish nothing disruptive until adoption is where you want it. - Publish.
otapush publish --channel prod --platform ios(orandroid). Channels, promotion and rollback work the way the quickstart describes.
Moving back to EAS later is the same operation with the opposite URL — that symmetry is the point of sharing a protocol.
Pricing models, not price tags
Both services meter by MAU — unique devices that check for or download an update within a calendar month. Expo's public pricing page lists MAU tiers with usage-based pricing above them (expo.dev/pricing, checked 28 August 2026); our limits and prices are in the pricing section and in Billing & plans. We deliberately do not quote EAS numbers here: vendor pricing changes, and a stale figure in a comparison is worse than no figure. Compare on your own device count.
One behavioral difference is worth stating plainly: going over your Otapush limit never stops updates. The server keeps serving checks, downloads and installs; the portal shows a warning and asks you to upgrade. That is a property of the serving path, not a policy promise — the manifest endpoint has no limit check in it.
Questions
Is Otapush better than EAS Update?
No — it differs on specific axes, listed above. The protocol and the client library are the same; what changes is who runs the server, whether you need an Expo account, and how you pay. If none of those axes hurts, EAS is the reasonable default.
EAS does not accept my Russian card. What do I do?
The card is not being rejected by EAS specifically: Russian-issued Visa and Mastercard do not work for international payments at all, and MIR is not accepted abroad. Your options are a card or legal entity outside Russia, or a service billed in rubles. Otapush is the second kind: cards and SBP through Russian acquiring, invoices for companies.
How do I pay for an Expo subscription from Russia?
With a card issued outside Russia or through a foreign legal entity, Expo billing works as usual. Without either, there is no supported way — which is exactly the situation this service exists for. If you stay on EAS through foreign billing, nothing else about your app needs to change; the client is the same one we use.
Do I need an Expo account to use Otapush?
No. Registration, the CLI, publishing and rollback all live in Otapush. expo-updates is an open client library; using it does not require an Expo account, only a server that speaks its protocol.
Can I go back to EAS later?
Yes, and it costs the same as leaving did: point updates.url back, rebuild once, ship to the stores. We consider this a feature. A service you cannot leave is a service you should not join — the same argument we make on the CodePush alternative page.
What happens when I exceed my MAU limit?
Nothing stops. Updates keep being served, the portal flags the overage and asks you to upgrade, and the new limit applies to the current month once you pay. There are no automatic overage charges.