---
title: Build
description: What a Shopify app is made of, what you can build with it, and how you ship it.
source_url:
  html: https://shopify.dev/docs/apps/build
  md: https://shopify.dev/docs/apps/build.md
---

# Build apps for Shopify

Merchants run their whole business on Shopify, and they turn to apps for the features they need next. Your app runs inside Shopify's own surfaces, works with Shopify's APIs and store data, and can reach millions of merchants through the Shopify App Store.

[Scaffold an app\
\
](https://shopify.dev/docs/apps/build/scaffold-app)

[Use Shopify CLI to generate a new app project with everything you need.](https://shopify.dev/docs/apps/build/scaffold-app)

[Build an app\
\
](https://shopify.dev/docs/apps/build/build)

[After scaffolding, build a QR code app with the Admin API, web components, and metaobjects.](https://shopify.dev/docs/apps/build/build)

Building and deploying apps

## Build and release your first app

The [scaffold](https://shopify.dev/docs/apps/build/scaffold-app) and [build](https://shopify.dev/docs/apps/build/build) tutorials take you through the full journey: create an app, run it against a dev store, call an API, and release it.

* [Deployment](https://shopify.dev/docs/apps/launch/deployment) happens throughout development. The CLI packages your extensions and configuration into an app version, and you release that version to merchants.

* [Distribution](https://shopify.dev/docs/apps/launch/distribution) determines who can install your app. Decide this early, because building for the [Shopify App Store](https://shopify.dev/docs/apps/launch/app-store-review) is a different job from building for a single organization.

![The scaffolded app template running in the Shopify admin, with a terminal window in front of it running shopify app init.](https://shopify-assets.shopifycdn.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/what-youll-build-react-router-global-cli-BfLuzzpM.png)

***

Dev tools

## Set up your toolchain

The Shopify AI Toolkit gives your coding agent Shopify's schemas and docs to work from. Shopify CLI and the Dev Dashboard both work against the same app record, so you can create an app in either one.

* [Shopify AI Toolkit](https://shopify.dev/docs/apps/build/ai-toolkit) connects your coding agent to Shopify's docs and API schemas, so it writes queries that validate against the version you're building on.

* [Shopify CLI](https://shopify.dev/docs/apps/build/cli-for-apps) scaffolds your app, runs it against a dev store while you work, and packages and releases your app versions.

* [Dev Dashboard](https://shopify.dev/docs/apps/build/dev-dashboard) manages everything that belongs to the app itself: its credentials and scopes, your dev stores, user permissions, and its logs after merchants are running it.

![Dev Dashboard showing app creation interface with terminal commands for Shopify CLI](https://shopify-assets.shopifycdn.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/dev-dashboard/app-creation-dashboard-light-mode-Bx4Fn3YE.png)

***

Building blocks

## The parts of a Shopify app

An app is a set of components you declare in your [app configuration](https://shopify.dev/docs/apps/build/cli-for-apps/app-configuration), and Shopify runs most of them for you. Only your backend is yours to host.

* [Authentication](https://shopify.dev/docs/apps/build/authentication-authorization) gets your app an access token for the access scopes a merchant grants. Where your app's code runs decides how it gets that token, and which [API](https://shopify.dev/docs/apps/build/apis) the token can call.

* [Extensions](https://shopify.dev/docs/apps/build/app-extensions) put your interface inside Shopify's surfaces, and you build that interface from [Polaris web components](https://shopify.dev/docs/api/polaris). [Functions](https://shopify.dev/docs/apps/build/functions) run your logic in Shopify's request path. Shopify hosts all of it.

* [Custom data](https://shopify.dev/docs/apps/build/custom-data) stores what Shopify's model doesn't cover, in metafields and metaobjects. [Events and webhooks](https://shopify.dev/docs/apps/build/events-webhooks) tell you when store data changes, so you're not polling.

![Extensions, Functions, and custom data are hosted by Shopify. Your app's home page and backend are hosted by you.](https://shopify-assets.shopifycdn.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/build-page/hosting-app-QGPtFAOB.svg)

***

Design and quality

## Meet the bar merchants expect

Merchant workflows cross back and forth between your app and the native pages of the Shopify admin. An app that matches the appearance and behavior of its host surface keeps those workflows smooth, and that consistency builds merchant trust.

Polaris, Shopify's design system for app interfaces, gets you most of the way there. The guidelines remove the guesswork on the rest, from mobile-first layout to accessibility.

* [Design guidelines](https://shopify.dev/docs/apps/design) cover structure, layout, content, and navigation, down to how a single form or alert should behave.

* [Security](https://shopify.dev/docs/apps/build/security) covers the security requirements that your app needs to meet before review.

* [App performance](https://shopify.dev/docs/apps/build/app-quality) covers performance, accessibility, localization, and privacy.

* [Built for Shopify](https://shopify.dev/docs/apps/launch/built-for-shopify) is the badge for apps that clear the highest bar on all of them.

![An annotated App Home page with callouts for consistent spacing, header hierarchy, and a high contrast background.](https://shopify-assets.shopifycdn.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/design-guidelines/overview/high-quality-UX-DKTK8uwZ.png)

***

App surfaces

## Build across every surface

A surface is a place in Shopify where your app shows up. Shopify defines where an app can appear, and each surface comes with its own extension types, APIs, and design rules. Build against a surface's rules and your app keeps working when Shopify changes the surface underneath it.

[App Home](https://shopify.dev/docs/apps/build/app-home) is the surface your app owns: your app's own page in the admin, built as an iframe you host or a UI extension Shopify hosts.

Everywhere else, your app appears through extensions rendered inside the surface itself:

* [Admin](https://shopify.dev/docs/apps/build/admin) is where merchants run their business.
* [Checkout](https://shopify.dev/docs/apps/build/checkout) is the buyer's path to purchase.
* [Customer accounts](https://shopify.dev/docs/apps/build/customer-accounts) is where buyers track orders, start returns, and manage their profile.
* [Online store](https://shopify.dev/docs/apps/build/online-store) is the storefront, where your app rides along with the theme.
* [Point of Sale](https://shopify.dev/docs/apps/build/pos) puts your app in front of staff selling in person.

![Two Shopify POS tablet screens. The smart grid highlights the pos.home.tile.render extension target, and a screen behind it highlights the pos.home.modal.render target.](https://shopify-assets.shopifycdn.com/shopifycloud/shopify-dev/production/assets/assets/images/api/pos-ui-extensions/targets-overview-images/home-overview-BPxYFUox.png)

***

Use cases

## Solve a merchant problem

A use case is the merchant problem it solves, and it usually spans more than one surface. Most apps start here.

* [Products and pricing](https://shopify.dev/docs/apps/build/products-and-pricing) shapes the catalog, purchase options, and discounts.

* [Sales channels](https://shopify.dev/docs/apps/build/sales-channels) reach buyers beyond the merchant's store, [Global markets](https://shopify.dev/docs/apps/build/markets) handles international selling, and [B2B](https://shopify.dev/docs/apps/build/b2b) covers company accounts and negotiated catalogs.

* [Payments](https://shopify.dev/docs/apps/build/payments) moves the money, and [Orders and fulfillment](https://shopify.dev/docs/apps/build/orders-fulfillment) handles inventory, routing, fulfillment, and returns.

* [Marketing and web pixels](https://shopify.dev/docs/apps/build/marketing) runs campaigns and storefront tracking, [Analytics](https://shopify.dev/docs/apps/build/analytics) feeds your app's data into merchant reports, [AI and agents](https://shopify.dev/docs/apps/build/ai) reaches Sidekick and Storefront MCP, and [Flow](https://shopify.dev/docs/apps/build/flow) automates the work between them.

![An example of a bundle in checkout. A hair and skin bundle product enables the customer to purchase shampoo, conditioner, and moisturizer in a bundle at a discounted price.](https://shopify-assets.shopifycdn.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/bundles/checkout-xTIryTRr.png)

***

Selling and growing your app

## Get listed and get installs

Publish your app in the Shopify App Store and any merchant can install it once it passes review. A custom app takes the other path: one organization installs it directly, with no listing and no review.

* [Shopify App Store](https://shopify.dev/docs/apps/launch/app-store-review) reviews your listing before it goes live. Read the [requirements](https://shopify.dev/docs/apps/launch/shopify-app-store/app-store-requirements) before you submit, because a rejection costs you a full review cycle.

* [Billing](https://shopify.dev/docs/apps/launch/billing) is part of that listing. Shopify App Pricing lets you define your plans in the submission form, and Shopify hosts the plan selection page and handles charges, trials, and proration.

* [Marketing and growth](https://shopify.dev/docs/apps/launch/marketing) is how you get installs once you're listed: run [search ads](https://shopify.dev/docs/apps/launch/marketing/advertising) in the App Store, track how merchants are finding your listing, and reply to the reviews they leave.

![A Shopify App Store listing showing a Built for Shopify badge, a rating, and a highlights panel.](https://shopify-assets.shopifycdn.com/shopifycloud/shopify-dev/production/assets/assets/images/apps/build-page/build-BG_ZtdDK.png)

***