Getting started
GraphQL Client is a simple GraphQL client for React applications. It's focused on giving a good, typesafe experience when working on your codebase.
1. Install
$ yarn add @swan-io/graphql-client
or
$ npm install @swan-io/graphql-client
2. Generate the schema config
The schema config is necessary for the cache to understand when your spread an interface type (e.g. on ... Node { id }
). Don't worry, this ends up being really light and wont't affect your bundle size much.
$ generate-schema-config path/to/schema.gql dist/schema-config.json
3. Create your client
Configure your client with your url
, desired default headers
& the schemaConfig
you just generateed.
src/index.tsx
import { Client, ClientContext } from "@swan-io/graphql-client";
import { App } from "./App";
import { createRoot } from "react-dom/client";
import schemaConfig from "./dist/schema-config.json"
const client = new Client({
url: "/api",
headers: {
"Content-Type": "application/json",
},
schemaConfig,
});
export const Root = () => {
return (
<ClientContext.Provider value={client}>
<App />
</ClientContext.Provider>
);
};
const root = document.querySelector("#app");
if (root != null) {
createRoot(root).render(<Root />);
}
4. Add linter (recommended)
We recommend to install @graphql-eslint
and activate the @graphql-eslint/require-id-when-available
rule, as the cache heavily relies on id
being queried.
And you're ready to go!