Skip to content

Easy setup for retrying rate limited request in Shopify's (Admin) GraphQL API

License

Notifications You must be signed in to change notification settings

tolgap/apollo-link-shopify-retry

Repository files navigation

apollo-link-shopify-retry

Easy setup for retrying rate limited request in Shopify's (Admin) GraphQL API.

Installation

For npm:

npm i apollo-link-shopify-retry

For yarn:

yarn add apollo-link-shopify-retry

Usage

When creating your client, inject this link as a middleware:

// client.js
import {
  ApolloClient,
  HttpLink,
  ApolloLink,
  InMemoryCache,
} from "@apollo/client";
import { createShopifyRetryLink } from "apollo-link-shopify-retry";

export const createClient = (shop, accessToken) => {
  const endpoint = new HttpLink({
    uri: `https://${shop}/admin/api/2021-04/graphql.json`,
  });
  const rateLimit = createShopifyRetryLink();

  const link = ApolloLink.from([
    rateLimit,
    endpoint,
  ]);

  return new ApolloClient({
    cache: new InMemoryCache(),
    link,
  });
};

Options

By default, we log the throttles to console.log. You can disable this by passing { debug: false } to createShopifyRetryLink.

Behavior

It utilizes @apollo/client/link/error. This link checks how much cost needs to be restored in order to perform a GraphQL operation, allows you to wait until the operation can succeed. If the operation exceeds the maximum allowed cost of your Shopify API, the error will still be raised.

About

Easy setup for retrying rate limited request in Shopify's (Admin) GraphQL API

Topics

Resources

License

Stars

Watchers

Forks