A minimalist GraphQL client based on phin
npm install @taskless/graphinql
A super-lightweight GraphQL client built on cross-fetch. As few dependencies as possible, works in the browser and server. Specifically built to work with strings and avoid a dependency on graphql / graphql-tag so you can keep your codebase light. In short, the best parts of graphql-request without the graphql dependency, but without losing the ability to type your requests and responses.
- ✅ Queries, Mutations, Introspection
- ✅ Custom headers per request or shared via new GraphQLClient()
- ✅ Typed responses and variables
- ❌ Typed GraphQL Document Node (exposing these types would force graphql to be a dependency, and risks the "multiple GraphQL" bug even for types-only support)
- Note: If you need the Typed Document Node, you should use the excellent graphql-request library
- ❌ Subscriptions (operates over https fetch)
:warning: With node 18 providing a What-WG compatible fetch, version 4.0 of graphinql no longer provides a fetch by default nor includes p-retry. If you need these features, you can provide them yourself, via the new fetch option.
``ts
import { GraphQLClient, request } from "@taskless/graphinql";
// as an object
const client = new GraphQLClient(endpoint, options);
const { data, error } = await client.request
stringDocument,
{
// variables
},
{
// options
}
);
// or as a one-off
request
`
- endpoint Your GraphQL endpointstringDocument
- A GraphQL query, as a stringvariables
- (optional) GraphQL Variables if applicableoptions
- (optional) A set of GraphQL Client options, provided as an objectoptions.headers
- (optional) A Headers compatible object, specifying headers to include with the requestoptions.fetch
- (optional) A What-WG compatible fetch interface
- Using a ponyfilled fetch
- Using a p-retry for retrying requests
This library was originally built on phin` before migrating to a What-WG fetch solution.

Jakob Heuser 💻 🚇 📖 | takanome_dev 📖 💻 | Samuel Giddins 💻 🚇 ⚠️ |
The source code in this repository is made available under the MIT license.