Skip to content

docs: add first guide for schema governance series#2267

Open
sarahxsanders wants to merge 2 commits intographql:sourcefrom
sarahxsanders:schema-review
Open

docs: add first guide for schema governance series#2267
sarahxsanders wants to merge 2 commits intographql:sourcefrom
sarahxsanders:schema-review

Conversation

@sarahxsanders
Copy link
Contributor

Description

adds the first guide for the new "schema governance" guides for graphql.org/learn

includes new guide: review and validate schema changes:

  • defining review criteria
  • automate validation
  • CI/CD integration
  • ownership and approval process
  • breaking changes
  • scaling
  • pitfalls

Note

PLEASE DO NOT MERGE, THIS IS THE FIRST IN A THREE GUIDE SERIES

next guides are on:

  • naming conventions and design standards: define consistent naming and documentation patterns
  • schema ownership and governance: expand on the basics from this guide
  • evolve schemas with versioning and tooling

@vercel
Copy link

vercel bot commented Dec 14, 2025

@sarahxsanders is attempting to deploy a commit to the The GraphQL Foundation Team on Vercel.

A member of the Team first needs to authorize it.

@benjie benjie marked this pull request as draft December 18, 2025 16:00
@martinbonnin
Copy link
Contributor

@sarahxsanders is this ready? Do you need feedbacks on this?

@sarahxsanders sarahxsanders marked this pull request as ready for review February 17, 2026 22:33
@sarahxsanders
Copy link
Contributor Author

@martinbonnin yes this is ready!

@martinbonnin
Copy link
Contributor

Awesome @sarahxsanders ! I'll review now!

@benjie @hasparus Do you have access to Vercel to approve the preview?

Copy link
Contributor

@Urigo Urigo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great work, I won't comment here but some of the comments I've made in the other PR but in high level some of them are related here as well

type: "separator",
title: "Schema Governance",
},
"review-and-validate-schema-changes": "",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this is an error, the filename is supposed to be schema-review, to avoid breaking routing

Suggested change
"review-and-validate-schema-changes": "",
"schema-review": "",

const fields = types.flatMap(typeName => {
const type = schema.getType(typeName);
if ('getFields' in type) {
return Object.keys(type.getFields());

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not certain how important this is but, this part produces an array like ["id", "name", "price"], just bare field names with no type prefix. Then later, it looks up usageData.get("name") instead of usageData.get("Product.name"). So if two types share a field name, they'd collide in the lookup.

Suggested change
return Object.keys(type.getFields());
return Object.keys(type.getFields()).map(f => `${typeName}.${f}`);

@vercel
Copy link

vercel bot commented Feb 26, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
graphql-github-io Error Error Feb 26, 2026 7:50pm

Request Review

@benjie
Copy link
Member

benjie commented Feb 26, 2026

Vercel is reporting the same issue as CI, which I believe was addressed in the comments above.

info  - Need to disable some ESLint rules? Learn more here: https://nextjs.org/docs/basic-features/eslint#disabling-rules
Failed to compile.
./src/components/learn-aggregator/learn-pages.tsx:13:7
Type error: Property '"review-and-validate-schema-changes"' is missing in type '{ introduction: { description: string; icon: string; section: "getting-started"; }; schema: { description: string; icon: string; section: "getting-started"; }; queries: { description: string; icon: string; section: "getting-started"; }; ... 18 more ...; "debug-errors": { ...; }; }' but required in type 'Record<LearnPagePath, Omit<LearnPageItem, "title" | "href"> | null>'.
  11 | }
  12 |
> 13 | const _items: Record<
     |       ^
  14 |   LearnPagePath,
  15 |   Omit<LearnPageItem, "title" | "href"> | null
  16 | > = {
Next.js build worker exited with code: 1 and signal: null
 ELIFECYCLE  Command failed with exit code 1.
Error: Command "pnpm run build" exited with 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants