Deploy app extensions
After you create one or more app extensions, you can deploy and release them to users as an app version.
Deployment workflow
Anchor link to section titled "Deployment workflow"All of the extensions in your app, including extensions created in the Partner Dashboard, are versioned together as a single app version.
When you run the deploy
command using Shopify CLI, an app version is created and released. You can revert to a previous app version at any time. You can also create an app version from the Partner Dashboard.
Releasing an app version replaces the current active version that's served to stores that have your app installed. It might take several minutes for app users to be upgraded to the new version.
App versions
Anchor link to section titled "App versions"An app version is a snapshot of all of your app extensions. The contents of your app version are different depending on the tool you use to create it.
For details about creating and managing app versions, refer to Deploy and release extensions.
Tool | App version contents |
---|---|
Shopify CLI | An app version created using Shopify CLI contains the following extensions:
|
Partner Dashboard | An app version created using the Partner Dashboard contains the following extensions:
|
Updates to the deployment model
Anchor link to section titled "Updates to the deployment model"On July 26th, 2023, we released several improvements to the extension deployment, versioning, and release process, known as simplified deployment. On September 5, 2023, this new deployment model was applied to all apps.
The simplified deployment model includes the following workflow enhancements:
Enhancement | Description |
---|---|
App-level versioning for extensions | The Shopify CLI deploy command creates an app version, which is a snapshot of all of your extensions, including dashboard-managed extensions. |
Unified extension deployment | Deploy your CLI-managed extensions and dashboard-managed extensions in a single app version, instead of versioning and publishing them individually. |
Release from Shopify CLI | Instead of visiting the Partner Dashboard to publish each extension, create and release a new app version to production directly from the command line using the Shopify CLI deploy command.You can also create an app version and release it from the Partner Dashboard. |
Function workflow improvements | Preview functions without deploying them using the Shopify CLI dev command. Version and release functions together with your other extensions using the deploy command. |
Delete extensions | Delete most CLI-managed and dashboard-managed extensions, with the exception of payment app extensions. Learn more about removing extensions from your app. |
Performance improvements for app users | Instead of storing your app in a central location where it can be accessed by stores, an app is stored directly with the stores on which it’s installed, offering performance and stability benefits. |
Workflow impacts
Anchor link to section titled "Workflow impacts"The following tables outline some of the key changes to the extension deployment process that might impact your development workflow. It also includes recommendations to help you to adapt to each change.
Deploying and releasing extensions
Anchor link to section titled "Deploying and releasing extensions"Before simplified deployment | After simplified deployment | Recommendation |
---|---|---|
Dashboard-managed extensions are released independently, and aren't impacted by other extension releases. | When anyone creates and releases a new app version from the CLI or Partner Dashboard, the saved states of dashboard-managed extensions are released. | Make sure that your extensions in the Partner Dashboard are in a releasable state. For extra control, we've added a --no-release flag on the deploy command. You can use this command to check your dashboard-managed extensions before releasing the app version through the Partner Dashboard. |
When you run the Shopify CLI deploy command, all local copies of CLI-managed extensions are added as drafts in the Partner Dashboard. You can then release them individually from the Partner Dashboard. |
When you run the Shopify CLI deploy command, all local copies of CLI-managed extensions are deployed and released. |
Use source control to ensure that the extensions in your local project are up to date and ready to be released. |
All extensions are released individually from the Partner Dashboard. | When you create and release an app version in the Partner Dashboard, only changes to dashboard-managed extensions are released. CLI-managed extensions remain unchanged from the active app version. | If you need to release changes to both dashboard-managed extensions and CLI-managed extensions at the same time, then save the changes to dashboard-managed extensions, and then run the deploy command using Shopify CLI. |
Extensions are deployed independently, so they don't all need to be present in your environment at deployment time. | Extensions that aren't present in the environment where you're deploying from aren't included in your app version. | If you manage app extensions using multiple repositories, then consider one of the following options:
|
Testing extensions
Anchor link to section titled "Testing extensions"Before simplified deployment | After simplified deployment | Recommendation |
---|---|---|
You need to run the |
The dev command builds these extensions and pushes drafts to Shopify. |
Run the dev command to test your extension in a development store. The dev command enables development store preview while dev mode is running. |
Deleting extensions
Anchor link to section titled "Deleting extensions"Before simplified deployment | After simplified deployment | Recommendation |
---|---|---|
Functions are deleted through the Partner Dashboard. | Functions that aren't present in the environment where you're deploying are removed in your next app version on deploy. Associated function owners are deleted when the version is activated in installed stores. | Use one of the previously described options for managing app extensions from your app source. |