About any relevant courses or youtube video tutorials on shopify app development

Hey guys, is there any updated courses/tutorials available for shopify app dev ?

Hi @Abhinav_O

There have some changes recently with app dev tooling- so many of the existing courses could be out of date. What could be helpful might be to use an IDE like Cursor that has AI capabilities to walk you through tutorials like this on our docs: Build a Shopify app using React Router

You can prompt the AI to help you learn about the processes that are happening and show you how to implement different types of features that are possible to build. I’d also recommend using the Shopify Dev MCP too for help with this. That way instead of watching a tutorial you essentially have a personal tutor that shows you what is happening in your own environment, where you can ask questions about any code, and direct your own learning experience.

For example, this could be used as a model that you could follow in Cursor:

:rocket: Shopify App Development: Zero to App Store

A comprehensive learning course for developers with JavaScript, React, HTML, CSS, and hosting experience who want to build Shopify apps that provide real merchant value.


Course Overview

Duration ~4-6 weeks (self-paced)
Prerequisites JavaScript, React, HTML/CSS, hosting experience
End Goal Submit a functional app to the Shopify App Store

Module 1: Understanding the Shopify Ecosystem

:stopwatch: 2-3 days

1.1 Core Concepts

Before writing code, understand what you’re building for:

  • Merchants = Your users (store owners running businesses on Shopify)
  • Admin = The dashboard merchants use to manage their store
  • Storefront = The customer-facing online store
  • Extensions = UI you inject into Shopify surfaces (hosted by Shopify)
  • App Home = Your app’s main embedded page in the admin (hosted by you)

1.2 How Apps Fit In

┌─────────────────────────────────────────────────────────────┐
│                     SHOPIFY ADMIN                           │
│  ┌────────────────────────┐  ┌────────────────────────────┐ │
│  │    Your App Home       │  │   Admin UI Extensions      │ │
│  │   (React + Polaris)    │  │   (Shopify-hosted)         │ │
│  │   [Hosted by you]      │  │   [Blocks, Actions, etc.]  │ │
│  └────────────────────────┘  └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
                          ▼
              ┌─────────────────────────┐
              │    GraphQL Admin API    │
              │   (Query/Mutate Data)   │
              └─────────────────────────┘

1.3 Learning Tasks

  1. Create a Shopify Partner Accountpartners.shopify.com
  2. Create a Development Store (free sandbox store for testing)
  3. Explore the Admin — Add products, create orders, understand the merchant perspective
  4. Browse the App Store — Install 2-3 free apps to see what good apps look like

:books: Key Documentation


Module 2: Development Environment Setup

:stopwatch: 1-2 days

2.1 Install Required Tools

# 1. Node.js (v18+ recommended)
node --version

# 2. Install Shopify CLI globally
npm install -g @shopify/cli@latest

# 3. Verify installation
shopify version

2.2 Scaffold Your First App

# Create a new app with Remix template (recommended)
shopify app init

# Follow prompts:
# - App name: "my-first-app"
# - Template: Remix (recommended)
# - Language: JavaScript or TypeScript

2.3 Connect and Run

cd my-first-app

# Start development server (creates tunnel automatically)
shopify app dev

# This will:
# - Prompt you to select your Partner org
# - Connect to your development store
# - Start a local server with hot reload
# - Open your app in the Shopify admin

2.4 Understand the Project Structure

my-first-app/
├── app/                    # Remix routes (your app pages)
│   ├── routes/
│   │   ├── app._index.jsx  # App home page
│   │   └── app.*.jsx       # Additional app routes
│   └── shopify.server.js   # Shopify authentication setup
├── extensions/             # UI extensions (admin, checkout, etc.)
├── shopify.app.toml        # App configuration file (crucial!)
├── package.json
└── .env                    # Environment variables

:books: Key Documentation


Module 3: Building Your App UI with Polaris

:stopwatch: 3-4 days

Your app’s UI inside the Shopify admin uses Polaris, Shopify’s design system. This ensures your app feels native.

3.1 Polaris Fundamentals

Polaris provides React components that match Shopify’s look and feel:

// Example: Basic app page structure
import { Page, Layout, Card, Text, Button } from "@shopify/polaris";

export default function AppHome() {
  return (
    <Page title="My First App">
      <Layout>
        <Layout.Section>
          <Card>
            <Text as="h2" variant="headingMd">
              Welcome to your app!
            </Text>
            <Text as="p" tone="subdued">
              This is where you'll build merchant value.
            </Text>
            <Button variant="primary">Get Started</Button>
          </Card>
        </Layout.Section>
      </Layout>
    </Page>
  );
}

3.2 Essential Polaris Components to Learn

Category Components
Layout Page, Layout, Card, Box, Stack
Data Display DataTable, ResourceList, IndexTable
Forms Form, TextField, Select, Checkbox
Feedback Banner, Toast, Modal, Spinner
Navigation AppProvider, Frame, Navigation

3.3 App Bridge for Native Features

App Bridge gives you access to Shopify admin features:

import { useAppBridge } from "@shopify/app-bridge-react";
import { Redirect } from "@shopify/app-bridge/actions";

function MyComponent() {
  const app = useAppBridge();
  
  // Navigate within the admin
  const redirect = Redirect.create(app);
  redirect.dispatch(Redirect.Action.ADMIN_PATH, "/products");
  
  // Show resource picker
  const selection = await shopify.resourcePicker({ type: "product" });
}

3.4 Practice Exercise

Build an app home page that:

  1. Shows a welcome banner
  2. Has a form to input some settings
  3. Displays a table with mock data
  4. Includes a button that opens a modal

:books: Key Documentation


Module 4: Working with the GraphQL Admin API

:stopwatch: 4-5 days

This is where the real power comes in. The Admin API lets you read and modify store data.

4.1 Key Concepts

  • Shopify uses GraphQL exclusively (REST is deprecated as of April 2025)
  • All requests need authentication (handled by Shopify CLI template)
  • Access scopes determine what data you can access

4.2 Making API Requests

The Remix template sets this up for you:

// In a Remix loader or action
import { authenticate } from "../shopify.server";

export async function loader({ request }) {
  const { admin } = await authenticate.admin(request);
  
  // Query products
  const response = await admin.graphql(`
    query {
      products(first: 10) {
        edges {
          node {
            id
            title
            status
            totalInventory
          }
        }
      }
    }
  `);
  
  const data = await response.json();
  return json({ products: data.data.products.edges });
}

4.3 Common Operations to Learn

Operation What it does
Query Products products(first: 10) { ... }
Query Orders orders(first: 10) { ... }
Query Customers customers(first: 10) { ... }
Create Discount discountCodeBasicCreate(...)
Update Product productUpdate(input: {...})
Create Metafield metafieldsSet(metafields: [...])

4.4 Access Scopes

In shopify.app.toml, define what data your app needs:

[access_scopes]
scopes = "read_products,write_products,read_orders"

:warning: App Store Requirement: Only request scopes you actually need!

4.5 Practice Exercise

Build a feature that:

  1. Fetches the store’s top 5 products by inventory
  2. Displays them in an IndexTable
  3. Allows clicking a product to view details
  4. Has a button to add a tag to selected products

:books: Key Documentation


Module 5: Webhooks — Responding to Store Events

:stopwatch: 2-3 days

Webhooks let your app react when things happen in the store.

5.1 How Webhooks Work

Store Event (Order Created) 
       ↓
Shopify sends POST to your webhook URL
       ↓
Your app processes the event

5.2 Subscribing to Webhooks

In shopify.app.toml:

[webhooks]
api_version = "2025-01"

  [[webhooks.subscriptions]]
  topics = ["orders/create"]
  uri = "/webhooks/orders-create"

Handle in your app:

// app/routes/webhooks.orders-create.jsx
import { authenticate } from "../shopify.server";

export async function action({ request }) {
  const { payload, shop } = await authenticate.webhook(request);
  
  console.log(`New order from ${shop}:`, payload.id);
  
  // Do something with the order...
  // e.g., send to fulfillment, update inventory, notify team
  
  return new Response();
}

5.3 Mandatory Compliance Webhooks

Required for App Store submission:

[[webhooks.subscriptions]]
topics = ["customers/data_request"]
uri = "/webhooks/customers-data-request"

[[webhooks.subscriptions]]
topics = ["customers/redact"]  
uri = "/webhooks/customers-redact"

[[webhooks.subscriptions]]
topics = ["shop/redact"]
uri = "/webhooks/shop-redact"

:books: Key Documentation


Module 6: Extending Shopify with UI Extensions

:stopwatch: 3-4 days

Extensions let you add UI directly into Shopify surfaces (admin, checkout, etc.).

6.1 Types of Extensions

Extension Type Where It Appears
Admin Actions Buttons/modals on admin pages
Admin Blocks Cards on resource pages (orders, products)
Theme App Extensions Storefront theme blocks
Checkout Extensions Custom UI in checkout flow

6.2 Creating an Admin Extension

# Add an admin action extension
shopify app generate extension

# Select: Admin action
# This creates: extensions/my-admin-action/

Extension code (uses Polaris web components):

// extensions/my-admin-action/src/ActionExtension.jsx
import { useEffect, useState } from "react";
import { 
  reactExtension,
  useApi,
  Button,
  Text,
} from "@shopify/ui-extensions-react/admin";

export default reactExtension("admin.product-details.action.render", () => {
  return <ProductAction />;
});

function ProductAction() {
  const { data } = useApi();
  const productId = data.selected[0]?.id;

  return (
    <>
      <Text>Do something with product {productId}</Text>
      <Button onPress={() => console.log("Clicked!")}>
        Run Action
      </Button>
    </>
  );
}

6.3 Theme App Extensions

Add blocks merchants can place in their storefront themes:

<!-- extensions/my-theme-block/blocks/announcement.liquid -->
<div class="announcement-bar" style="background: {{ block.settings.bg_color }}">
  {{ block.settings.message }}
</div>

{% schema %}
{
  "name": "Announcement Bar",
  "target": "section",
  "settings": [
    {
      "type": "text",
      "id": "message",
      "label": "Message"
    },
    {
      "type": "color",
      "id": "bg_color",
      "label": "Background Color",
      "default": "#FFD700"
    }
  ]
}
{% endschema %}

:books: Key Documentation


Module 7: Real-World App Project

:stopwatch: 5-7 days

Build a complete app that solves a real merchant problem.

Recommended Starter Project: “Product Notes App”

This app lets merchants add internal notes to products that aren’t visible to customers.

Features:

  1. :white_check_mark: Admin embedded page listing products with notes
  2. :white_check_mark: Admin action to quickly add notes from product pages
  3. :white_check_mark: Uses metafields to store notes (custom data)
  4. :white_check_mark: Search and filter products by note content
  5. :white_check_mark: Webhook to archive notes when products are deleted

Why This App Is Good for Learning:

  • Uses core patterns (embedded app, extensions, API, webhooks)
  • Provides real merchant value (organized workflows)
  • Simple enough to complete in a week
  • Complex enough to demonstrate competence

Project Milestones

Day Milestone
1-2 Set up project, build app home with product list
3-4 Implement note creation/editing with metafields
5 Add admin action extension for quick notes
6 Add search, filtering, and polish UI
7 Test thoroughly, fix bugs, document

Module 8: Preparing for App Store Submission

:stopwatch: 3-4 days

8.1 Technical Requirements Checklist

Requirement Status
Uses GraphQL Admin API (not REST)
Uses latest App Bridge
OAuth authentication works
TLS/SSL certificate valid
Compliance webhooks implemented
No user interface bugs
Only necessary access scopes requested
App loads in admin.shopify.com

8.2 App Listing Requirements

You’ll need:

  • App Name (unique, 30 chars or less, brand-first)
  • App Icon (1200×1200px, PNG/JPEG)
  • App Card Subtitle (concise value proposition)
  • Screenshots (1600×900px, showing functionality)
  • Feature Video (optional but recommended, 2-3 min)
  • Pricing Details (free trial recommended)
  • Privacy Policy URL
  • Test Credentials (for reviewer to test your app)
  • Demo Screencast (showing setup and features)

8.3 Submission Process

  1. Complete automated checks in Partner Dashboard
  2. Provide testing instructions and credentials
  3. Submit for review
  4. Respond to reviewer feedback (usually 1-3 exchanges)
  5. App approved → Published to App Store! :tada:

:books: Key Documentation


Quick Reference: Essential Links

Resource URL
Partner Dashboard partners.shopify.com
Shopify.dev Docs shopify.dev/docs/apps
Polaris Components polaris.shopify.com
GraphQL Explorer Available in Partner Dashboard
CLI Reference shopify.dev/docs/api/shopify-cli
Community Forum community.shopify.com/c/shopify-apps

Your Learning Path Summary

Week 1:  Ecosystem + Setup + Polaris basics
Week 2:  GraphQL API + Webhooks  
Week 3:  Extensions + Start building real app
Week 4:  Complete app + Testing + Submit to App Store

:light_bulb: Pro Tips

  1. Start with shopify app dev — It handles auth, tunneling, and hot reload automatically
  2. Use the GraphQL explorer in Partner Dashboard to test queries before coding
  3. Install the Shopify app on your phone to see the mobile merchant experience
  4. Read rejection reasons — Common issues are documented, avoid them from day 1
  5. Build for a problem you understand — Apps solving real pain points succeed

Common App Store Rejection Reasons to Avoid

Issue How to Prevent
Missing compliance webhooks Implement all 3 mandatory webhooks from day 1
Using deprecated REST API Use GraphQL Admin API exclusively
Requesting unnecessary scopes Only request what you actually use
App doesn’t load in new admin domain Use latest App Bridge, test on admin.shopify.com
UI bugs or broken features Test thoroughly on development store
Incomplete app listing Follow listing guidelines, include demo video
No privacy policy Create and link a privacy policy page

Glossary

Term Definition
Partner Dashboard Where you manage your apps, stores, and earnings
Development Store Free sandbox store for testing (never expires)
Access Scopes Permissions your app requests (e.g., read_products)
Metafields Custom data you can attach to Shopify resources
App Bridge JavaScript library for admin integration features
Polaris Shopify’s React component library for admin UI
Embedded App App that runs inside the Shopify admin iframe
Theme App Extension Code that runs on the merchant’s storefront
Webhook HTTP callback triggered by store events
OAuth Authentication protocol for app installation

Next Steps After This Course

  1. Advanced Extensions — Checkout UI, Functions (custom discounts/shipping)
  2. Billing API — Charge merchants for your app
  3. App Performance — Optimize for Lighthouse scores
  4. Internationalization — Support multiple languages
  5. Analytics — Track app usage and merchant success

Based on official Shopify documentation from shopify.dev