This guide explains how to make your Shopify app available to merchants. You'll learn about hosting options and deployment requirements, whether you're building with [Shopify Remix](/docs/apps/build/build) or another framework.

## General requirements for deployment

Before deploying your app:

- Review your [app's launch requirements](/docs/apps/launch/app-requirements-checklist) and [learn about the launch process](/docs/apps/launch)
- [Test your app functionality](/docs/apps/build/cli-for-apps/manage-app-config-files#test-your-app-functionality) in a development environment
- Configure your app in the [Partner Dashboard](https://www.shopify.com/ca/partners)

> Note:
> The [Shopify Remix template](/docs/apps/build/build) automatically handles key deployment requirements such as authentication, session management, webhook handling, and environment configuration.

## How it works

When you deploy a Shopify app, you're making your code available to merchants. This involves:

- Moving your code from your local development environment to a hosting service
- Connecting your hosted app to Shopify through the Partner Dashboard
- Managing app extensions and configurations separately through app versions

Your hosting service manages the app's runtime environment and handles incoming requests through authenticated connections set up in the Partner Dashboard.

## Deploying to production

If you're planning on deploying your app for use in production, then consider creating a separate app. The app might use the same repository and code base that you use for development and testing, but has its own record and configuration in the Partner Dashboard.

If you use a separate app for production, then you can use your original app to test different app elements. You'll also avoid changing your production app settings, such as app URLs, during the development and testing process.

> Note:
> [App extensions](/docs/apps/build/app-extensions) require separate deployment steps. After deploying your app code, you'll need to deploy extensions built with [Shopify CLI](/docs/apps/build/cli-for-apps) and configure any extensions you set up in the Partner Dashboard.

## Hosting and deployment options

The following are common providers for hosting your Shopify app:

<div class="resource-card-grid">
  <div>
  <a class="resource-card" href="https://fly.io/shopify" data-theme-mode="">
    <div class="resource-card__indicator-container"><img
     src="/assets/resource-cards/flyio"
     data-alt-src="/assets/resource-cards/flyio-dark"
     aria-hidden="true"
     class="resource-card__icon themed-image"></div>
    <h3 class="resource-card__title">
      Deploy to Fly.io
    </h3>
    <p class="resource-card__description">Learn how to deploy your Shopify app to Fly.io.</p>
  </a>
</div></p>

<p><div>
  <a class="resource-card" href="https://docs.render.com/deploy-shopify-app" data-theme-mode="">
    <div class="resource-card__indicator-container"><img
     src="/assets/resource-cards/render"
     data-alt-src="/assets/resource-cards/render-dark"
     aria-hidden="true"
     class="resource-card__icon themed-image"></div>
    <h3 class="resource-card__title">
      Deploy to Render
    </h3>
    <p class="resource-card__description">Learn how to deploy your Shopify app to Render.</p>
  </a>
</div>
</div>


### Manual deployment

If you're comfortable with app hosting and deployment, or if you have specific infrastructure requirements, then you can deploy to a preferred hosting service that can run JavaScript apps:

<div class="resource-card-grid">
  <div>
  <a class="resource-card" href="/docs/apps/launch/deployment/deploy-to-hosting-service" data-theme-mode="">
    <div class="resource-card__indicator-container"><img
     src="/assets/resource-cards/resource"
     data-alt-src="/assets/resource-cards/resource-dark"
     aria-hidden="true"
     class="resource-card__icon themed-image"></div>
    <h3 class="resource-card__title">
      Manual deployment guide
    </h3>
    <p class="resource-card__description">Choose this option if you need complete control over your hosting environment or have specific infrastructure requirements.</p>
  </a>
</div>
</div>


## App versions

After setting up your [app configuration](/docs/apps/build/cli-for-apps/app-configuration) or creating [app extensions](/docs/apps/build/app-extensions), you can deploy these components together and release a new app version to users.

<div class="resource-card-grid">
  <div>
  <a class="resource-card" href="/docs/apps/launch/deployment/app-versions" data-theme-mode="">
    <div class="resource-card__indicator-container"><img
     src="/assets/resource-cards/app"
     data-alt-src="/assets/resource-cards/app-dark"
     aria-hidden="true"
     class="resource-card__icon themed-image"></div>
    <h3 class="resource-card__title">
      App versions overview
    </h3>
    <p class="resource-card__description">Learn about the deployment model for app configuration and extensions.</p>
  </a>
</div>

<div>
  <a class="resource-card" href="/docs/apps/launch/deployment/deploy-app-versions" data-theme-mode="">
    <div class="resource-card__indicator-container"><img
     src="/assets/resource-cards/installation"
     data-alt-src="/assets/resource-cards/installation-dark"
     aria-hidden="true"
     class="resource-card__icon themed-image"></div>
    <h3 class="resource-card__title">
      Deploy and release app versions
    </h3>
    <p class="resource-card__description">Learn how to deploy app configuration and extensions to Shopify.</p>
  </a>
</div>

<div>
  <a class="resource-card" href="/docs/apps/launch/deployment/deploy-in-ci-cd-pipeline" data-theme-mode="">
    <div class="resource-card__indicator-container"><img
     src="/assets/resource-cards/resource"
     data-alt-src="/assets/resource-cards/resource-dark"
     aria-hidden="true"
     class="resource-card__icon themed-image"></div>
    <h3 class="resource-card__title">
      Deploy in a CD pipeline
    </h3>
    <p class="resource-card__description">Learn how to deploy in a CI/CD pipeline.</p>
  </a>
</div>

</div>


## Next steps

After you have deployed your app, it's time to [review distribution options](/docs/apps/launch/distribution/select-distribution-method).