Nineteen short notes that take you from never having built a Shopify app to working on a real one. Written for people starting from zero — every term is explained before it is used, and every note ends with the traps that cost real time.
Keep 18 open whenever something is not working.
Collected from across the series. If you only remember a handful of things, make it these.
where: { shop } returns every shop's rows. Invisible while one shop is installed; a data breach when the second arrives. (04, 05)userErrors. A failed Shopify mutation still returns HTTP 200. Without checking, your code reports success while nothing saved. (06)first: 50 looks perfect on a small test shop and silently truncates on a real one. (06)# set up
npm install
npx prisma generate
shopify app dev
# every new page
loader → read data (scope it by session!)
action → write data (check userErrors)
default → the UI
# before every production deploy
back up the database
shopify app info # am I on the right app?
read the migration SQL
deploy code AND settings
open the app and click through
Each note is self-contained and copy-paste friendly. They are written generically — myapp.com, db.widget — so they apply to any Shopify app, not one specific project.
Shopify's APIs change every quarter. The concepts here are stable, but before copying an exact field name or mutation, check it against the docs for your pinned API version, or test it in shopify app graphiql first.