Join us for GraphQL Summit, October 10-12 in San Diego. Use promo code ODYSSEY for $400 off your pass.
Launch GraphOS Studio

Client-side schema

Extend your schema with client-specific fields

You can optionally provide a client-side schema to Apollo Client that defines local-only types and fields. You can define completely new types, or extend types from your server's with new s.

As with any GraphQL , your client-side schema must be written in Schema Definition Language.

The client-side is not used to validate s like it is on the server (the graphql-js modules for validation would dramatically increase your bundle size). Instead, your client-side schema is used for in the Apollo Client Devtools, where you can explore your in GraphiQL.


The following demonstrates how to define a client-side and provide it to the ApolloClient constructor:

import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
const typeDefs = gql`
extend type Query {
isLoggedIn: Boolean!
cartItems: [Launch]!
extend type Launch {
isInCart: Boolean!
extend type Mutation {
addOrRemoveFromCart(id: ID!): [Launch]
const client = new ApolloClient({
cache: new InMemoryCache(),
uri: 'http://localhost:4000/graphql',

If you open up the Apollo Client Devtools and click on the GraphiQL tab, you'll be able to explore your client in the "Docs" section. This example doesn't include a remote schema, but if it did, you would be able to see your local queries and s alongside your remote ones.

GraphiQL in Apollo Devtools
Reactive variables
Local resolvers
Edit on GitHubEditForumsDiscord