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.
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.
Package | Latest version | Description |
---|---|---|
@shopify/admin-api-client |
Client for the GraphQL and REST Admin APIs. | |
@shopify/storefront-api-client |
Client for the GraphQL Storefront API. | |
@shopify/graphql-client |
Generic GraphQL API client. | |
@shopify/api-codegen-preset |
Codegen preset for Shopify APIs. Automatically integrates with the clients above. |
These packages make it easy to create Shopify apps with TS / JS using different tech stacks.
Package | Latest version | Description |
---|---|---|
@shopify/shopify-api |
Framework and runtime agnostic library for Shopify OAuth, APIs, webhooks, and more. | |
@shopify/shopify-app-remix |
Implementation of @shopify/shopify-api to make it easy to create apps using Remix. |
|
@shopify/shopify-app-express |
Implementation of @shopify/shopify-api to make it easy to create apps using Express. |
These packages provide database-specific implementations to manage @shopify/shopify-api
sessions.
Package | Latest version | Description |
---|---|---|
@shopify/shopify-app-session-storage |
Provides the interfaces used by the app middleware packages to write custom packages. | |
@shopify/shopify-app-session-storage-drizzle |
Drizzle implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-dynamodb |
DynamoDB implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-kv |
Cloudflare KV implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-memory |
Memory implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-mongodb |
MongoDB implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-mysql |
Mysql implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-postgresql |
PostgreSQL implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-prisma |
Prisma implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-redis |
Redis implementation of the session storage interface. | |
@shopify/shopify-app-session-storage-sqlite |
SQLite implementation of the session storage interface. |
We use pnpm
to develop this package. 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, pack it, and install it in e.g. a Remix app:
cd packages/<package>
pnpm build
pnpm pack
cd <app folder>
# Install local package with pnpm
pnpm add <path to shopify-app-js>/packages/<package>/<path to .tar.gz file>
# OR use npm instead
npm add <path to shopify-app-js>/packages/<package>/<path to .tar.gz file>
shopify app dev
Caution
We don't recommend using yarn to install the local package, because yarn caches the tar file, so it only works the first time.