---
title: Overview
slug: optimizely-connect-platform/docs/build-an-app-overview
docTags: 
createdAt: 2026-07-23T12:37:03.354Z
---

The Optimizely Connect Platform (OCP) app development lifecycle guides you from initial planning to public release. Each of the following stages depends on the previous one:

- [Plan your app](docId:7hUWxLOUlUd_YjHaL0bPk) – Choose your app type, plan your version strategy, and verify prerequisites.
- [Register and scaffold your app](docId\:FPLtQed8pujmUTZimRJQy) – Reserve your app ID and generate the project structure with the OCP CLI.
- [Build your app](docId\:ZJxlVTAgqjyerHeR5h9N_) – Configure the app manifest, define the settings form, add dependencies, and implement app logic.
- [Test your app](docId\:IH3R2qy152H7GY0LDg_Re) – Write unit tests, test locally with `ocp dev`, and install pre-release versions into test accounts.
- [Release your app](docId\:Cy5csTL4qYT3mfYQ92hH4) – Validate, publish, submit for review, and release your app to the OCP **App Directory**, the marketplace where users discover and install OCP apps.
- [Troubleshoot your app](docId:_cAC77KOy96o9HEKjwGZb) – Use app logs and **Activity Log** notifications to debug issues.

## Prerequisites

Before you start, ensure you have the following:

- **OCP CLI** – Install the OCP command-line interface and configure it with your **Developer Portal** API key. See [Developer Portal overview](docId\:mAHird1ThWGsH0Z0LJyaN).
- **Node.js** – Install Node.js 22 or later. OCP apps require Node.js 22 or later. See [Node22 migration guide](docId\:hZKIHzcLNzsnpYLNMeT5k) for details.
- **Access to an OCP instance** – Have access to an OCP instance where you can install and test your app. You do not need a **Developer** role. If you do not have access, ask an administrator of the organization to grant you any role on that instance through the **Admin Center**. See [Developer accounts and organizations](https://docs.developers.optimizely.com/optimizely-connect-platform/docs/get-started-with-the-ocp2-developer-platform#developer-accounts-and-organizations) for information.

## Prepare, publish, and install

The following CLI actions move your app from your machine to an end-user's OCP account. Each step depends on the previous one:

1. **Prepare** – Run `ocp app prepare` to upload your local code and build the app in OCP. Only a prepared app can be published. For release versions, such as versions without a `-dev` pre-release tag, `ocp app prepare` also starts the Optimizely code review process. See [App versioning](docId\:OS9StLD5GccO3vLVpMzPv) for details. You cannot publish until your review is approved.
2. **Publish** – Run `ocp directory publish YOUR_APP_ID@VERSION` to make a prepared version available in the OCP **App Directory**. After you publish, the version is available to install, but is not yet active in any account.
3. **Install** – Add a published version to a specific OCP account, identified by its tracker ID (the unique identifier for an OCP account). End-users install public apps from the **App Directory**. Developers install pre-release, private, or test versions from the CLI with `ocp directory install YOUR_APP_ID@VERSION TRACKER_ID`. Install triggers the app's `onInstall` lifecycle hook (the function that runs when the app is added to an account).

Run `ocp directory install` only once per app and OCP account. After the initial install, OCP automatically upgrades the installation when you publish a higher patch or minor version. Major version upgrades require a manual reinstall. See [App versioning](docId\:OS9StLD5GccO3vLVpMzPv) for details.

## Follow a typical development path

The following steps reflect the most common sequence for developing and releasing an OCP app:

1. Develop locally with `ocp dev`.
2. Run `ocp app prepare` to build in OCP. Release versions also enter review at this step.
3. Run `ocp directory publish` to add the version to the **App Directory**.
4. Run `ocp directory install` to add the app to a test account.
5. Iterate, then publish a release version.
6. End-users install from the **App Directory**.

:::hint{type="info"}
**Note**

For versions that do not require review, such as `-dev` versions, combine prepare and publish in one step with `ocp app prepare --publish`.
:::

## Iterate with preview tracks

:::hint{type="danger"}
**Experimental**

Preview tracks are experimental.
:::

Deploy your app to a preview track, such as `dev/jdoe`, instead of bumping a `-dev` version for each change. Run the following command:

```shell
ocp app deploy
```

`ocp app deploy` builds and publishes your app in one step. OCP derives the version from your app content and moves every installation that follows the track to that version. OCP never reviews preview versions. The **App Directory** lists them only for accounts that install or follow them. To release a semantic version (semver), run `ocp app deploy --version 1.0.0`. This command builds the release version and starts the app review process. Alternatively, follow the [prepare, publish, and install](docId\:Bi9Hif758LHEoTG2iflfY) steps.

See [Deploy apps with preview tracks](docId\:gLoc5c6DPRHSfUcBL6bpf) for details.

## Related guides

- For data sync implementation guides, see [Data syncs](docId\:kmwhjncmm92sT1uU7rv82).
- For Agent Platform tools implementation guides, see [Add a custom tool to Mark](docId:1GdHO3DW4xZfN08J9ns92) and the [Mark tool reference app end-to-end guide](docId\:partaPpjX0Gcet9jbZOns).
