Demystifying Shopify App Deployment: When Your Custom App Needs Outside Hosting

Hey everyone! I've been diving deep into the Shopify Community forums lately, and a really common question keeps popping up, especially for those of you building custom, in-house apps for your Plus stores. It's a topic that can feel a bit like navigating a maze: "When do I need to deploy my app to a server outside Shopify, and when can Shopify host it directly?"

Our friend sbeheshti recently posted about this, expressing some understandable confusion. They're building a private app for their Plus store, not meant for public distribution, and it's currently connected to localhost for testing. Sound familiar? Let's break down what the community experts had to say and clear things up once and for all.

Shopify Isn't Your General Code Host (Mostly!)

One of the most crucial points, as PaulNewton succinctly put it, is that "Shopify is not a hosting provider for arbitrary code." This is a fundamental concept often misunderstood. When you build a "Shopify app," you're essentially creating an integration. Your app's core logic, its database, its server-side processing – all that usually lives on your own server or a cloud hosting service. Shopify then interacts with your app through its powerful APIs for authentication and to read or write store data.

Think of it like this: Shopify provides the storefront, the admin panel, the checkout process, and the data. Your custom app provides the unique functionality that extends Shopify, but that functionality needs a home of its own to run.

The Big Exception: Checkout UI Extensions

Now, there's a significant exception to this rule, and it's where some of the confusion, like sbeheshti's, often stems from. If your custom app includes a Checkout UI Extension (or other types of checkout extensions), then that specific part of your app actually runs directly on Shopify's infrastructure. This is a huge benefit for Shopify Plus merchants, allowing for deep customization of the checkout experience without needing external hosting for that particular component.

So, to clarify Nalanetworks' excellent summary:

  • If your app is only a Checkout UI Extension: You deploy it directly to Shopify and use it there.
  • If your app has other custom features (which most do): These features require external hosting.
  • And remember, localhost is strictly for your development and testing phases – it's not a deployment solution!

Your Deployment Roadmap for Custom Apps

Okay, so now that we understand the "where," let's talk "how." Nalanetworks laid out a very compact and helpful deployment flow that covers the essentials. This is what you'll generally follow for a custom app with an external backend:

Step-by-Step: Getting Your Custom App Live

  1. Create/Register Your Custom App: Start in your Shopify Partner account. This is where you tell Shopify about your app, get your API keys, and configure permissions.
  2. Connect the App to Your Target Store: This links your development efforts to your actual Plus store.
  3. Set the App URL / Redirect URL: This is a critical step! You'll configure your app in the Partner account to point to the live URL of your externally hosted server. Shopify needs to know where to send requests and where to redirect users after authentication.
  4. Deploy Your Backend/App Code to Cloud Hosting: This is where your custom app's brain lives. Choose a reliable cloud service (like Heroku, AWS, Google Cloud, Vercel, etc.) and deploy your application code there. This server will handle all the logic, data processing, and API calls to Shopify.
  5. Install the App on Your Store: Once everything is configured and your backend is live, install the app on your Shopify store. This initiates the OAuth handshake and gives your app the necessary permissions.
  6. If Using Checkout Extensions, Deploy Them Separately: If your app includes a Checkout UI Extension, you'll deploy that specific part to your Plus store using the Shopify CLI. This is the only part that Shopify truly "hosts" for you directly within its infrastructure.

PaulNewton also shared some excellent resources from shopify.dev/docs/apps/launch/deployment and shopify.dev/docs/apps/launch/deployment/deploy-to-hosting-service, which are fantastic jumping-off points for deeper dives into choosing hosting services and deployment specifics. I highly recommend checking those out!

A Quick Note on "Generated Apps"

Paul also brought up a good distinction about "generated apps" (like those you might generate with Shopify Sidekick). These are often glorified Single-Page Applications (SPAs) that connect to Shopify's existing backend. They don't necessarily create a *new* backend of their own. So, if you're building something more complex with custom logic and data storage, you're definitely in the "external hosting" camp.

Ultimately, the key takeaway is this: for most custom Shopify apps, especially those with their own unique backend logic, you'll be leveraging external hosting. Shopify provides the incredible platform and the APIs to connect, but your app's "engine" needs its own garage. The exception for Checkout UI Extensions is a powerful tool for Plus stores, allowing those specific components to run seamlessly within Shopify's environment. Knowing this distinction and following the deployment steps will save you a lot of headache and ensure your custom app runs smoothly for your store. Keep building awesome things!

Share:

Use cases

Explore use cases

Agencies, store owners, enterprise — find the migration path that fits.

Explore use cases