CodePush Management SDK

Important

Visual Studio App Center is scheduled for retirement on March 31, 2025. While you can continue to use Visual Studio App Center until it is fully retired, there are several recommended alternatives that you may consider migrating to.

Learn more about support timelines and alternatives.

A JavaScript library for programmatically managing your App Center account (e.g. creating apps, promoting releases), which allows authoring Node.js-based build or deployment scripts, without needing to shell out to the CLI.

Getting Started

  1. Create a token to authenticate with the App Center server using the following App Center command:

    appcenter tokens create -d "DESCRIPTION_OF_THE_KEY"
    

    API Token will be displayed only once, so remember to save it somewhere if needed!

  2. Install the management SDK by executing:

    npm install code-push --save
    
  3. Import it using the following statement (using ES6 syntax as applicable):

    • On commonjs environments:
    const CodePush = require("code-push");    
    
    • Using ES6 syntax with tsconfig.json:
    import CodePush from "code-push";
    
  4. Create an instance of the CodePush class, passing it the API Token you created in step #1:

    const codePush = new CodePush("YOUR_API_TOKEN");
    
  5. Begin automating the management of your account! For more details on what you can do with this codePush object, refer to the API reference section below.

API Reference

The code-push module exports a single class (typically referred to as CodePush), which represents a proxy to the CodePush account management REST API. This class has a single constructor for authenticating with the CodePush service, and a collection of instance methods that correspond to the commands in the management CLI, which allow you to programmatically control every aspect of your App Center account.

Constructors

  • CodePush(accessKey: string) - Creates a new instance of the CodePush management SDK, using the specified access key to authenticated with the server.

Methods

Note

access key here refers to an AppCenter API Token.

  • addAccessKey(description: string): Promise<AccessKey> - Creates a new access key with the specified description (e.g. "Azure DevOps CI").
  • addApp(appName: string, os: string, platform: string, manuallyProvisionDeployments: boolean = false): Promise<App> - Creates a new CodePush app with the specified name, os, and platform. If manuallyProvisionDeployments is set to true, the app won't create the default deployments of "Staging" and "Production"; if unspecified or set to false, it will.
  • addCollaborator(appName: string, email: string): Promise<void> - Adds the specified CodePush user as a collaborator to the specified CodePush app.
  • addDeployment(appName: string, deploymentName: string): Promise<Deployment> - Creates a new deployment with the specified name, and for the specified app.
  • clearDeploymentHistory(appName: string, deploymentName: string): Promise<void> - Clears the release history for the specified app deployment.
  • getAccessKey(accessKey: string): Promise<AccessKey> - Retrieves the metadata about the specific access key.
  • getAccessKeys(): Promise<AccessKey[]> - Retrieves the list of access keys for your CodePush account.
  • getApp(appName: string): Promise<App> - Retrieves the metadata about the specified app.
  • getApps(): Promise<App[]> - Retrieves the list of apps for your CodePush account.
  • getCollaborators(appName: string): Promise<CollaboratorMap> - Retrieves the list of collaborators for the specified app.
  • getDeployment(appName: string, deploymentName: string): Promise<Deployment> - Retrieves the metadata for the specified app deployment.
  • getDeploymentHistory(appName: string, deploymentName: string): Promise<Package[]> - Retrieves the list of releases that have been made to the specified app deployment.
  • getDeploymentMetrics(appName: string, deploymentName): Promise<DeploymentMetrics> - Retrieves the installation metrics for the specified app deployment.
  • getDeployments(appName: string): Promise<Deployment[]> - Retrieves the list of deployments for the specified app.
  • patchRelease(appName: string, deploymentName: string, label: string, updateMetadata: PackageInfo): Promise<void> - Updates the specified release's metadata with the given information.
  • promote(appName: string, sourceDeploymentName: string, destinationDeploymentName: string, updateMetadata: PackageInfo): Promise<void> - Promotes the latest release from one deployment to another for the specified app and updates the release with the given metadata.
  • release(appName: string, deploymentName: string, updateContentsPath: string, targetBinaryVersion: string, updateMetadata: PackageInfo): Promise<void> - Releases a new update to the specified deployment with the given metadata.
  • removeAccessKey(accessKey: string): Promise<void> - Removes the specified access key from your CodePush account.
  • removeApp(appName: string): Promise<void> - Deletes the specified CodePush app from your account.
  • removeCollaborator(appName: string, email: string): Promise<void> - Removes the specified account as a collaborator from the specified app.
  • removeDeployment(appName: string, deploymentName: string): Promise<void> - Removes the specified deployment from the specified app.
  • renameApp(oldAppName: string, newAppName: string): Promise<void> - Renames an existing app.
  • renameDeployment(appName: string, oldDeploymentName: string, newDeploymentName: string): Promise<void> - Renames an existing deployment within the specified app.
  • rollback(appName: string, deploymentName: string, targetRelease?: string): Promise<void> - Rolls back the latest release within the specified deployment. Optionally allows you to target a specific release in the deployment's history, as opposed to rolling to the previous release.

Error Handling

When an error occurs in any of the methods, the promise will be rejected with a CodePushError object with the following properties:

  • message: A user-friendly message that describes the error.
  • statusCode: An HTTP response code that identifies the category of error:
    • CodePush.ERROR_GATEWAY_TIMEOUT: A network error prevented you from connecting to the CodePush server.
    • CodePush.ERROR_INTERNAL_SERVER: An error occurred internally on the CodePush server.
    • CodePush.ERROR_NOT_FOUND: The resource you're attempting to retrieve does not exist.
    • CodePush.ERROR_CONFLICT: The resource you're attempting to create already exists.
    • CodePush.ERROR_UNAUTHORIZED: The access key you configured is invalid or expired.