diff --git a/custom-words.txt b/custom-words.txt
index 6039da2bc17..d70c152c6b9 100644
--- a/custom-words.txt
+++ b/custom-words.txt
@@ -196,6 +196,7 @@ paas
// these pop up when writing "GraphQL___"
qlapi
qlid
+qlide
// other
architecting
diff --git a/packages/graphiql-react/README.md b/packages/graphiql-react/README.md
index 0cca0a5f013..1d22c5fd9c3 100644
--- a/packages/graphiql-react/README.md
+++ b/packages/graphiql-react/README.md
@@ -1,7 +1,94 @@
[Changelog](https://github.com/graphql/graphiql/blob/main/packages/graphiql-react/CHANGELOG.md) | [API Docs](https://graphiql-test.netlify.app/typedoc/modules/graphiql_react.html) | [NPM](https://www.npmjs.com/package/@graphiql/react)
-A react SDK for building graphql developer experiences for the web
+# `@graphiql/react`
-Used by `graphiql@2` and beyond!
+A React SDK for building integrated GraphQL developer experiences for the web.
-(docs coming soon!)
+## Purpose
+
+This package contains a set of building blocks that allow its users to build GraphQL IDEs with ease. It's the set of components that make up Graph*i*QL, the first and official GraphQL IDE, owned and maintained by the GraphQL Foundation.
+
+There are two kinds of building blocks that this package provides: Stateful context providers for state management and simple UI components.
+
+## Getting started
+
+All the state for your GraphQL IDE lives in multiple contexts. The easiest way to get started is by using the `GraphiQLProvider` component that renders all the individual providers.
+
+There is one required prop called `fetcher`. This is a function that performs GraphQL request against a given endpoint. You can easily create a fetcher using the method `createGraphiQLFetcher` from the `@graphiql/toolkit` package.
+
+```jsx
+import { GraphiQLProvider } from '@graphiql/react';
+import { createGraphiQLFetcher } from '@graphiql/toolkit';
+
+const fetcher = createGraphiQLFetcher({
+ url: 'https://my.graphql.api/graphql',
+});
+
+function MyGraphQLIDE() {
+ return (
+
+ Hello GraphQL
+
+ );
+}
+```
+
+Inside the provider you can now use any UI component provided by `@graphiql/react`. For example, you can render a query editor like this:
+
+```jsx
+import { QueryEditor } from '@graphiql/react';
+
+function MyGraphQLIDE() {
+ return (
+
+
+
+
+
+ );
+}
+```
+
+The package also ships the necessary CSS that all its UI components need. You can import them from `@graphiql/react/dist/style.css`.
+
+**Note**: In order for these styles to apply, the UI components need to be rendered inside an element that has a class name `graphiql-container`.
+
+By default the UI components will try to use the [Roboto](https://fonts.google.com/specimen/Roboto) font for regular text and the [Fira Code](https://fonts.google.com/specimen/Fira+Code) font for mono-space text. If you want to use the default fonts you can load them using these files:
+
+- `@graphiql/react/font/roboto.css`
+- `@graphiql/react/font/fira-code.css`.
+
+You can of course use any other method to load these fonts (for example loading them from Google Fonts).
+
+Further details on how to use `@graphiql/react` can be found in the reference implementation of a GraphQL IDE - Graph*i*QL - in the [`graphiql` package](https://github.com/graphql/graphiql/blob/main/packages/graphiql/src/components/GraphiQL.tsx).
+
+## Available contexts
+
+There are multiple contexts that own different parts of the state that make up a complete GraphQL IDE. For each context there is a provider component (`ContextProvider`) that makes sure the context is initialized and managed properly. These components contains all the logic related to state management. In addition, for each context there is also a hook (`useContext`) that allows you to consume its current value.
+
+Here is a list of all contexts that come with `@graphiql/react`
+
+- `StorageContext`: Provides a storage API that can be used to persist state in the browser (by default using `localStorage`)
+- `EditorContext`: Manages all the editors and tabs
+- `SchemaContext`: Fetches, validates and stores the GraphQL schema
+- `ExecutionContext`: Executes GraphQL requests
+- `HistoryContext`: Persists executed requests in storage
+- `ExplorerContext`: Handles the state for the docs explorer
+
+All context properties are documented using JSDoc comments. If you're using an IDE like VSCode for development these descriptions will show up in auto-complete tooltips. All these descriptions can also be found in the [API Docs](https://graphiql-test.netlify.app/typedoc/modules/graphiql_react.html).
+
+## Theming
+
+All the components from `@graphiql/react` have been designed with customization in mind. We achieve this using CSS variables.
+
+All variables that are available for customization can be found in the [`root.css` file](https://github.com/graphql/graphiql/blob/main/packages/graphiql-react/src/style/root.css).
+
+### Colors
+
+Colors are defined using the [HSL format](https://en.wikipedia.org/wiki/HSL_and_HSV). All CSS variables for colors are defined as a list of the three values that make up HSL (hue, saturation and lightness).
+
+This approach allows `@graphiql/react` to use transparent colors by passing the value of the CSS variable in the `hsla` function. This enables us to provide truly reusable UI elements where good contrasts are preserved regardless of the elements background.
+
+## Development
+
+If you want to develop with `@graphiql/react` locally - in particular when working on the `graphiql` package - all you need to do is run `yarn dev` in the package folder in a separate terminal. This will build the package using Vite. When using it in combination with `yarn start-graphiql` (running in the repo root) this will give you auto-reloading when working on `graphiql` and `@graphiql/react` simultaneously.
diff --git a/packages/graphiql-react/package.json b/packages/graphiql-react/package.json
index f9fecea485b..104ba7cb3f2 100644
--- a/packages/graphiql-react/package.json
+++ b/packages/graphiql-react/package.json
@@ -27,9 +27,8 @@
"types"
],
"scripts": {
- "dev": "vite",
- "build": "tsc --emitDeclarationOnly && vite build",
- "preview": "vite preview"
+ "dev": "concurrently 'tsc --emitDeclarationOnly --watch' 'vite build --watch'",
+ "build": "tsc --emitDeclarationOnly && vite build"
},
"peerDependencies": {
"graphql": "^15.5.0 || ^16.0.0",