# Expo Updates vs Pakta: EAS Update explained

Understand expo-updates, EAS Update and Pakta: compare Expo OTA integration, runtime targeting, EAS Build and native migration requirements.

## Expo Updates, EAS Update or Pakta? {#answer}

`expo-updates` is Expo's update client library. EAS Update is a hosted service that works with it. Pakta is a separate OTA platform using `rn-update` and the `pakta` CLI. Supporting an Expo app does not make Pakta an Expo Updates protocol server or a destination for `eas update`.

If your app already uses EAS Update successfully, start by evaluating its existing workflow. Evaluate Pakta when you want its native-package targeting, differential delivery and release operations, and can ship a new native integration.

## Compare the integration contracts {#comparison}

| Question | Expo Updates / EAS Update | Pakta |
| --- | --- | --- |
| Which client loads updates? | `expo-updates` | `rn-update` |
| Which publishing workflow? | EAS CLI for EAS Update | `pakta bundle --expo`, then `pakta publish` |
| What defines an eligible target? | Platform, runtime version and channel/branch routing | Application, embedded native channel, registered native version and compatibility checks |
| Can it use a native Expo build? | Yes | Yes, with Pakta native integration |
| Is the hosting interchangeable? | `expo-updates` can use a compatible custom update server | Pakta uses its own SDK/server contract |
| Does changing native code require rebuilding? | Yes | Yes |

See the official [expo-updates reference](https://docs.expo.dev/versions/latest/sdk/updates/) for client/server separation and [How EAS Update works](https://docs.expo.dev/eas-update/how-it-works/) for target routing. The table describes integration differences, not a complete feature or pricing ranking.

## Can Pakta work with Expo Router and EAS Build? {#expo-build}

Yes. Pakta's [Expo guide](/docs/expo) connects `UpdateProvider` in the root layout, uses the packaged Config Plugin for native channel configuration, and produces a Release build through local Expo tooling or an existing EAS production build workflow. This project's automatic iOS integration requires Expo 50 or later; validate your actual Expo/React Native combination.

EAS Build produces the native installer. It does not force that installer to use EAS Update. After Pakta integration, register the exact installer and use the Pakta CLI to build and publish updates.

## Can I test Pakta in Expo Go? {#expo-go}

No. Expo Go does not contain Pakta's native integration. Use your own native Release build. A JavaScript reload in Expo Go cannot prove that `rn-update` downloads, activates or recovers an update.

## How do I move an existing update workflow? {#migration}

1. Record the current update client, native dependencies, activation policy and compatible binaries.
2. Remove the old client's bundle-loading ownership from the migration build. Do not leave two OTA clients selecting the startup bundle.
3. Follow [Expo native setup](/docs/expo), configure the root Provider and build a new Release installer.
4. Register the installer, then use [first release](/docs/publish) to publish a visible change to an internal channel.
5. Verify activation and recovery on devices before distributing the new native version.

An EAS `runtimeVersion` or channel name is not automatically transferred into Pakta configuration. Pakta's channel is embedded in the native build. See [channel identity](/docs/channels#identity).

## How should I compare cost and delivery? {#evaluation}

Use the same app change and real devices to measure transferred bytes, update latency, download failures and recovery. Check each service's current plan against active devices, update checks, bandwidth, storage and support needs. Use [Pakta pricing](/pricing) and [Expo pricing](https://expo.dev/pricing) as the current plan sources; do not compare costs using an assumed patch percentage.

For a broader introduction, read [React Native OTA updates](/docs/react-native-ota-update). If your starting point is CodePush, follow the [migration guide](/docs/codepush-alternative).
