Skip to content

Migrate from CodePush

Aether is a commercial successor to Microsoft CodePush. The SDK is a drop-in replacement for react-native-code-push (and the @revopush/react-native-code-push fork): the JavaScript API, the native configuration keys, and the integration steps are unchanged. The server also speaks the legacy CodePush wire protocol, so even apps that keep the old SDK can point at Aether.

  • App on React Native 0.76 or newer with the New Architecture: swap the SDK for @aetherpush/react-native-code-push and use Aether’s canonical endpoints. This is the recommended path.
  • App on the legacy architecture (possible up to React Native 0.81): keep Microsoft’s react-native-code-push SDK and point it at Aether’s legacy endpoints. Move to the Aether SDK when the app reaches the New Architecture.
  1. Create your account, app, and deployments with the CLI. To keep already-shipped binaries updating without an app store release, create each deployment with its existing CodePush deployment key instead of a generated one:

    Terminal window
    aether deployment add MyApp Production -k <existing-codepush-key>

    A shipped binary keeps polling with the key baked into it, so reusing the key preserves those clients, provided the binary’s server URL reaches Aether (a server domain you control, or a binary that already pointed at a configurable URL).

  2. Replace the package:

    Terminal window
    npm uninstall react-native-code-push
    npm install @aetherpush/react-native-code-push

    Configuration keys keep their names (CodePushDeploymentKey and friends); see SDK configuration. The supported versions page lists the requirements.

  3. Release the next binary with the new SDK, then release OTA updates with aether release-react or from CI.

Path 2: keep the old SDK, point it at Aether

Section titled “Path 2: keep the old SDK, point it at Aether”

Microsoft’s SDK talks to the legacy paths (/updateCheck, /reportStatus/*), which Aether serves. Set the old SDK’s server URL to Aether (CodePushServerURL on iOS, CodePushServerUrl on Android):

https://api.aetherpush.com

Create the deployments in Aether with the same deployment keys the binaries already carry, as in path 1, and release with the Aether CLI.

Aether serves the CodePush-compatible acquisition endpoints at /v0.1/public/codepush/* and at the bare legacy paths (/updateCheck, /reportStatus/deploy, /reportStatus/download). They behave like the canonical /v1/public/aether/* endpoints and stay wire-compatible, but they are marked deprecated: every response carries Deprecation: true and a Link header with rel="successor-version" pointing at the canonical path. Legacy management paths additionally announce Sunset: 2027-01-01T00:00:00Z.

The Aether SDK uses the canonical paths by default. Its serverPathMode: "codepush-legacy" option exists for the reverse situation, running the new SDK against a server that only speaks the legacy protocol; see SDK configuration.

Expo projects integrate through the config plugin instead of manual native setup, and release with expo export:embed plus aether release. Start at Expo setup.