GraphQL Tooling

Jake Dawkins

Who Am I

  • Open Source Engineer
  • Working on tooling
  • Education and accessibility

@JakeDawkins

What I'm Talking About

  • The promise of GraphQL
  • The state of GraphQL tooling
  • A modern tooling setup
  • Where we're going

The Promise of GraphQL

The promise of GraphQL

A GraphQL server can be queried for the types it supports. This creates a powerful platform for tools and client software to build atop this information...

Schema Awareness

Schema Awareness Enables...

  • Code generation
  • Editor improvements

Schema Registries

Registries Enable...

  • Advanced usage metrics
  • Schema change validation
  • Operation safelisting
  • And much more

The state of GraphQL tooling

The tooling ecosystem around GraphQL is powerful, capable, but disconnected and not complete.

Code Generators

  • Apollo Codegen (Apollo CLI)
  • GraphQL Code Generator

Editor plug-ins (js)

  • Apollo GraphQL
  • Graphql

Introspection/Runtime Tooling

  • GraphiQL/GraphQL Playground
  • Apollo Client Devtools
  • GraphQL Voyager

Toolsets are best when they can be configured in unison and work with one another

Configuring GraphQL tools

  • Where does the reference schema info come from?
  • Where do queries and type definitions come from?
  • Handling multiple projects, including ones that share schemas or operations
  • Platform-specific concerns (Registry endpoints, API keys, reporting URLs)

graphql-config

graphql-code-generator

vscode-graphql

atom-language-graphql

Apollo Config

Apollo CLI

vscode-apollo

A modern tooling setup

A modern tooling setup...

  • Tracks schemas in a registry
  • Checks service schema changes against traffic
  • Safelists permitted operations in production
  • Generates types for client operations
  • Checks client operation changes against the schema

Where we're going

Where we're going

  • Generating new projects from the CLI
  • Schema explorer link to schema registry
  • Ability to save operations and generate hooks and types

Thank You!

@JakeDawkins