This repository contains example code that is referenced in the Admin UI Extension tutorials on shopify.dev. You can use this code as a reference when following those tutorials to build your own Admin UI Extensions with Preact.
Visit the shopify.dev
documentation for more details on the Remix app package.
Before you begin, you'll need the following:
- Node.js: Download and install it if you haven't already.
- Shopify Partner Account: Create an account if you don't have one.
- Test Store: Set up either a development store or a Shopify Plus sandbox store for testing your app.
If you used the CLI to create the template, you can skip this section.
Using yarn:
yarn install
Using npm:
npm install
Using pnpm:
pnpm install
Using yarn:
yarn dev
Using npm:
npm run dev
Using pnpm:
pnpm run dev
Press P to open the URL to your app. Once you click install, you can start development.
Local development is powered by the Shopify CLI. It logs into your partners account, connects to an app, provides environment variables, updates remote config, creates a tunnel and provides commands to generate extensions.
To authenticate and query data you can use the shopify
const that is exported from /app/shopify.server.js
:
export async function loader({ request }) {
const { admin } = await shopify.authenticate.admin(request);
const response = await admin.graphql(`
{
products(first: 25) {
nodes {
title
description
}
}
}`);
const {
data: {
products: { nodes },
},
} = await response.json();
return nodes;
}
This template comes preconfigured with examples of:
- Setting up your Shopify app in /app/shopify.server.ts
- Querying data using Graphql. Please see: /app/routes/app._index.tsx.
- Responding to mandatory webhooks in /app/routes/webhooks.tsx
Please read the documentation for @shopify/shopify-app-remix to understand what other API's are available.
This template uses Prisma to store session data, by default using an SQLite database.
The database is defined as a Prisma schema in prisma/schema.prisma
.
This use of SQLite works in production if your app runs as a single instance. The database that works best for you depends on the data your app needs and how it is queried. You can run your database of choice on a server yourself or host it with a SaaS company. Here’s a short list of databases providers that provide a free tier to get started:
Database | Type | Hosters |
---|---|---|
MySQL | SQL | Digital Ocean, Planet Scale, Amazon Aurora, Google Cloud SQL |
PostgreSQL | SQL | Digital Ocean, Amazon Aurora, Google Cloud SQL |
Redis | Key-value | Digital Ocean, Amazon MemoryDB |
MongoDB | NoSQL / Document | Digital Ocean, MongoDB Atlas |
To use one of these, you can use a different datasource provider in your schema.prisma
file, or a different SessionStorage adapter package.
Remix handles building the app for you, by running the command below with the package manager of your choice:
Using npm:
npm run build
Using pnpm:
pnpm run build
Shopify apps are built on a variety of Shopify tools to create a great merchant experience.
The Remix app template comes with the following out-of-the-box functionality:
- OAuth: Installing the app and granting permissions
- GraphQL Admin API: Querying or mutating Shopify admin data
- Webhooks: Callbacks sent by Shopify when certain events occur
- AppBridge: This template uses the next generation of the Shopify App Bridge library which works in unison with previous versions.
- Polaris: Design system that enables apps to create Shopify-like experiences
This template uses Remix. The following Shopify tools are also included to ease app development:
- Shopify App Remix provides authentication and methods for interacting with Shopify APIs.
- Shopify App Bridge allows your app to seamlessly integrate your app within Shopify's Admin.
- Webhooks: Callbacks sent by Shopify when certain events occur
- Polaris: Design system that enables apps to create Shopify-like experiences