FAQ
Common questions about Upwell, OTA updates and the stores.
No. Keep using expo-updates with EAS Update, or a self-hosted server. Upwell decides when to check, download and apply, and knows when an install can't receive updates any more.
No. The policy and releases.json are static JSON files. Host them on a CDN, a bucket, or GitHub
Pages. You can serve them from an API if you want to generate them.
The native module isn't available in Expo Go, so real store flows don't run there. simulate() and
<UpwellDevMenu /> do work in Expo Go, so you can still build and review your update UI.
Yes, as long as Expo modules are installed (npx install-expo-modules). See Installation.
Yes. Without an ota adapter, Upwell handles store updates only. With another OTA tool, write a small
adapter.
Yes: raise minimum in the policy. On Android (installed from Play), Play's immediate flow blocks the app until it's
updated. Elsewhere, <ForceUpdateScreen /> blocks it. See Forced updates.
Forced-update screens are common and accepted by both stores.
Both stores allow OTA updates of JavaScript within their rules, and expo-updates follows them. Apple's guideline 2.5.19 (October 2026) bans hidden or undocumented features, so describe what you ship. See Transparent OTA. Upwell is transparency tooling, not a compliance guarantee, and this isn't legal advice.
No. It fetches the URLs you configure, asks Play Core (Android) and the iTunes lookup API (iOS) about
updates, and stores a few values on the device. The installationId used for rollout buckets never
leaves the device. Use onDecision to send events to your own analytics.
Android's versionCode always increases, while version names are free-form text. On iOS, Upwell compares the version first
and then CFBundleVersion, because many teams reset the build number for each version. See
Comparing versions.
Upwell uses the last valid policy it cached and decides normally. Only an install that has never fetched a
policy, and has nothing else to do, gets an error decision. See Last known good.
Those wrap Play's in-app update API. Upwell has its own Play Core integration too, but it also covers iOS, OTA updates, stranded installs, a remote policy with rollout, escalation and snoozes, a UI kit, simulation, and OTA release notes, all behind one decision engine.
Not in v1. Sideloaded installs get a store link, which you can point anywhere with storeUrl.
AppGallery is on the roadmap.