Skip to content

kito-arch/typescript-react-apollo-with-abort-controller

Repository files navigation

typescript-react-apollo-with-abort-controller

Adds built-in AbortController support to Apollo React hooks generated by GraphQL Code Generator which aborts the query when query hook unmounts


What is this?

This package is a custom plugin for GraphQL Code Generator that extends the popular typescript-react-apollo plugin.

It wraps generated Apollo React hooks with a custom hook that automatically manages an AbortController signal, cancelling in-flight queries when query hook umounts.


Why use this?

  • Automatically adds request cancellation support to your generated hooks.
  • Keeps TypeScript types intact.
  • No extra work needed in your components — just use the generated hooks as usual!

Installation

npm install typescript-react-apollo-with-abort-controller
# or
yarn add typescript-react-apollo-with-abort-controller

Usage

In your codegen.yml (or equivalent) config file, add typescript-react-apollo-with-abort-controller instead of typescript-react-apollo:

generates: {
  'path/to/generated/hooks.tsx': {
      plugins: [
-         'typescript-react-apollo'
+         'typescript-react-apollo-with-abort-controller'
      ]
  }
}

This will generate hooks wrapped with abort controller support seamlessly.

Example

import { useMyQuery } from "./path/to/generated/hooks";

const Component = () => {
  const { data, loading, error } = useMyQuery();

  // useMyQuery will now have built-in abort controller support
  // cancelling requests when component unmounts

  return <div>{loading ? "Loading..." : JSON.stringify(data)}</div>;
};

License

MIT