--- url: https://docs.youcan.shop/apps/developer-tools/apps-cli/deploy.md --- # Deploy and Release App Versions An app version is an immutable snapshot of your app configuration and all of its extensions. One version is active per app. The active version is what every store that installed your app receives. Use versions to ship changes safely: deploy when you are ready, roll back when something breaks. ## How it works * `youcan app dev` syncs your local files to a development session on your dev store. It never changes what other stores see. * `youcan app deploy` creates a version from your local files and releases it to all stores. * `youcan app release` activates a previously created version, including older ones. ## Deploy a version Run this command from your app directory: ```sh youcan app deploy ``` The CLI uploads only the files that changed, creates the version, and releases it. Pass a message to describe the change: ```sh youcan app deploy -m "add cart upsell block" ``` ### Version names Each version gets a sequential number and a name. When you omit the name, the CLI generates one from the date, for example `2026-08-07-1`. Pass `--version` to set your own: ```sh youcan app deploy --version "summer-launch" ``` ### Create without releasing Pass `--no-release` to create the version without activating it: ```sh youcan app deploy --no-release ``` Release it later with `youcan app release`. ### Safety checks Before it releases, the CLI warns you when: * Your `app_url` points at a dev tunnel. Releasing it would break the live app. * A block that exists in the active version is missing or renamed locally. Sellers who placed that block would lose it. See [compatibility rules](/apps/theme_extension/getstarted#keep-your-extension-compatible). Pass `--force` to skip these prompts. ## List versions ```sh youcan app versions ``` The output shows each version with its number, name, message, and release state. The active version is marked. ## Release or roll back Activate any version by its number or name: ```sh youcan app release --version 3 youcan app release --version "summer-launch" ``` Releasing an older version rolls the app back. Seller customizations are not affected: block placements and settings survive a rollback as long as the block files still exist in the released version. ## Sync your local config Configuration changes made in the [Partners dashboard](https://partners.youcan.shop) create versions too. Your local `youcan.app.json` does not update automatically, and a stale file reverts those changes on your next deploy. Pull the active version's config into your local file: ```sh youcan app config pull ``` Run it before you deploy when the app configuration may have changed outside your repository. ## Deploy from CI The `deploy` and `release` commands accept an access token from the environment, so they run without a browser: ```sh YC_CLI_ACCESS_TOKEN= youcan app deploy -m "$COMMIT_MESSAGE" ``` When your app directory is a git repository, the CLI records the current commit hash in the version manifest. The partners dashboard shows it on the version details. ## Where to get help If you encounter any issues or have any suggestions, you can [open an issue](https://github.com/youcan-shop/cli/issues) in the YouCan CLI repository.