Shopify API and app tools for JavaScript
This repository contains packages you can use to interact with Shopify's APIs.
You can use these packages to create clients for those APIs directly, or to create apps using TypeScript / JavaScript.
It is organized as a monorepo, which includes multiple packages that can be used together.
Packages
The packages in this repository can be used to extend Shopify in different ways:
These packages make it easy to interact with Shopify's APIs if you have the required access tokens.
These packages make it easy to create Shopify apps with TS / JS using different tech stacks.
These packages provide database-specific implementations to manage @shopify/shopify-api
sessions.
Developing in this repo
We use pnpm
to develop this package, and we recommend using it for development to ensure your environment is consistent with ours.
To get started, install the dependencies, and build the packages:
cd shopify-app-js
pnpm install
pnpm build
Once the packages are built, you'll be able to make changes. Note that if you're working on multiple packages, you'll need to build them for changes to affect other packages.
We aim to add test coverage for every change to help prevent regressions. You can run the whole suite by running this at the root:
pnpm test
[!NOTE]
Make sure to run build
before test
to ensure the internal dependencies are available.
If you're only working on one package, you can build and run tests individually:
cd packages/<package>
pnpm build
pnpm test
When you're ready to test a package in an app, you can build it, and install it with a file:
protocol in e.g. a Remix app:
cd packages/<package>
pnpm build
cd <app folder>
pnpm add "file:<path to shopify-app-js>/packages/<package>"
shopify app dev
To update the local package, run pnpm build
in the package folder, and restart your app.