Minimalist Shopify app using React Router (v7) running on cloudflare (worker, kv, analytics). Only essential features, no future changes other than core upgrades & platform alignment.
- @shopify/shopify-[api,app-remix] to complex (to much abstraction)
- Needed a simple starter, than only does the basics
- Small code surface, easier audit
- Stability over feature completeness
- Minimally opinionated, by supporting only:
- Embedded app use-case
- New Embedded Auth Strategy
- Managed Pricing
- Cloudflare account
- cloudflared cli
brew install cloudflared
- Node.js & NPM see package.json#engines
brew install node@22
- Github cli
brew install gh
(optional)
npm install
cp .env.example .env # update vars to match your env values from partners.shopify.com (Apps > All Apps > Create App)
# vi [wrangler.json, shopify.app.toml] # update vars[SHOPIFY_API_KEY, SHOPIFY_APP_URL], SHOPIFY_APP_URL is the cloudflare tunnel url (e.g. https://shopflare.trycloudflare.com) in development and the cloudflare worker url (e.g. https://shopflare.workers.dev) in other environments.
npx wrangler secret put SHOPIFY_API_SECRET_KEY
gh secret set --app=actions CLOUDFLARE_API_TOKEN # value from dash.cloudflare.com (Manage Account > Account API Tokens > Create Token)
gh secret set --app=actions SHOPIFY_CLI_PARTNERS_TOKEN # value from partners.shopify.com (Settings > CLI Token > Manage Tokens > Generate Token)
gh variable set SHOPIFY_API_KEY
npm run deploy:shopify
npm run dev
# open -a Safari ${SHOPIFY_APP_URL}
npm run deploy
Copyright (c) 2025 chr33s. See LICENSE.md for further details.