Skip to content

aether release

Terminal window
aether release <appName> <updateContentsPath> <targetBinaryVersion> [options]

Uploads a file or a folder as a new release. Use this when you already have a built bundle; for React Native projects where the CLI should do the bundling, use aether release-react.

Terminal window
aether release MyApp ./build/CodePush 1.0.3 -d Production
aether release MyApp ./build/CodePush 1.0.3 -d Production -r 20

targetBinaryVersion is a semver version or range (1.0.3, ~1.2.0, "*") that selects which app binaries receive the update.

Flag Alias Default Purpose
--deploymentName -d Staging Deployment to release to.
--description --des none Change description, shown in history and to the SDK’s update dialog.
--disabled -x false Upload without serving the release to any device.
--mandatory -m false Mark the release mandatory.
--noDuplicateReleaseError false Warn instead of failing when the package is identical to the latest release.
--privateKeyPath -k none Sign the update contents before upload. See below.
--rollout -r 100% Percentage of devices eligible, 1 to 100. See staged rollout.
--json off Print the released package as JSON on the last stdout line.

With --privateKeyPath, the CLI writes a .codepushrelease signature into the folder before uploading, and the SDK rejects any update whose signature does not verify. Two rules come from how devices verify:

  • The update contents must be a folder, not a single file.
  • The folder must be named CodePush. Devices look for the signature at CodePush/.codepushrelease and hash file paths under a CodePush/ prefix, so any other name fails verification after download. The CLI refuses to sign a folder with a different name.