Repository

shopify-app-js

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 · License unknown · Install via npm · Maintenance unknown

License
Unknown
Package
Latest version
@shopify/admin-api-client
Client for the GraphQL and REST Admin APIs.
@shopify/storefront-api-client
Client for the GraphQL Storefront API.

Specs

  • PackageLatest version
  • @shopify/admin-api-clientClient for the GraphQL and REST Admin APIs.
  • @shopify/storefront-api-clientClient for the GraphQL Storefront API.
  • @shopify/graphql-clientGeneric GraphQL API client.
  • @shopify/api-codegen-presetCodegen preset for Shopify APIs. Automatically integrates with the clients above.
  • PackageLatest version
  • @shopify/shopify-apiFramework and runtime agnostic library for Shopify OAuth, APIs, webhooks, and more.
  • @shopify/shopify-app-remixImplementation of @shopify/shopify-api to make it easy to create apps using Remix.
  • @shopify/shopify-app-expressImplementation of @shopify/shopify-api to make it easy to create apps using Express.
  • PackageLatest version
  • @shopify/shopify-app-session-storageProvides the interfaces used by the app middleware packages to write custom packages.
  • @shopify/shopify-app-session-storage-drizzleDrizzle implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-dynamodbDynamoDB implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-kvCloudflare KV implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-memoryMemory implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-mongodbMongoDB implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-mysqlMysql implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-postgresqlPostgreSQL implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-prismaPrisma implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-redisRedis implementation of the session storage interface.
  • @shopify/shopify-app-session-storage-sqliteSQLite implementation of the session storage interface.

README

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:

API clients

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 Latest badge Client for the GraphQL and REST Admin APIs.
@shopify/storefront-api-client Latest badge Client for the GraphQL Storefront API.
@shopify/graphql-client Latest badge Generic GraphQL API client.
@shopify/api-codegen-preset Latest badge Codegen preset for Shopify APIs. Automatically integrates with the clients above.

Apps and middlewares

These packages make it easy to create Shopify apps with TS / JS using different tech stacks.

Package Latest version Description
@shopify/shopify-api Latest badge Framework and runtime agnostic library for Shopify OAuth, APIs, webhooks, and more.
@shopify/shopify-app-remix Latest badge Implementation of @shopify/shopify-api to make it easy to create apps using Remix.
@shopify/shopify-app-express Latest badge Implementation of @shopify/shopify-api to make it easy to create apps using Express.

Session storage

These packages provide database-specific implementations to manage @shopify/shopify-api sessions.

Package Latest version Description
@shopify/shopify-app-session-storage Latest badge Provides the interfaces used by the app middleware packages to write custom packages.
@shopify/shopify-app-session-storage-drizzle Latest badge Drizzle implementation of the session storage interface.
@shopify/shopify-app-session-storage-dynamodb Latest badge DynamoDB implementation of the session storage interface.
@shopify/shopify-app-session-storage-kv Latest badge Cloudflare KV implementation of the session storage interface.
@shopify/shopify-app-session-storage-memory Latest badge Memory implementation of the session storage interface.
@shopify/shopify-app-session-storage-mongodb Latest badge MongoDB implementation of the session storage interface.
@shopify/shopify-app-session-storage-mysql Latest badge Mysql implementation of the session storage interface.
@shopify/shopify-app-session-storage-postgresql Latest badge PostgreSQL implementation of the session storage interface.
@shopify/shopify-app-session-storage-prisma Latest badge Prisma implementation of the session storage interface.
@shopify/shopify-app-session-storage-redis Latest badge Redis implementation of the session storage interface.
@shopify/shopify-app-session-storage-sqlite Latest badge SQLite implementation of the session storage interface.

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.