Skip to content

docs: schema change management#2318

Open
sarahxsanders wants to merge 4 commits into
graphql:sourcefrom
sarahxsanders:governance-versioning
Open

docs: schema change management#2318
sarahxsanders wants to merge 4 commits into
graphql:sourcefrom
sarahxsanders:governance-versioning

Conversation

@sarahxsanders

Copy link
Copy Markdown
Contributor

Description

adds a new guide on schema change management covering schema evolution in GraphQL:

  • covers additive changes, deprecation strategies, and migration patterns
  • part of the schema governance documentation series

@vercel

vercel Bot commented Jan 25, 2026

Copy link
Copy Markdown

@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.

@sarahxsanders
sarahxsanders marked this pull request as ready for review February 17, 2026 22:34
@martinbonnin
martinbonnin requested a review from a team June 16, 2026 09:21
@sarahxsanders

Copy link
Copy Markdown
Contributor Author

@martinbonnin needs review


## Identify breaking changes

Breaking changes modify or remove existing schema elements in ways that cause previously valid queries to fail or return different data.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
Breaking changes modify or remove existing schema elements in ways that cause previously valid queries to fail or return different data.
A breaking change is any change that breaks the server/client contract. This happens when previously valid operations become invalid or when the shape of the returned data changes.

- Changing field types, such as `String` to `Int`
- Removing or renaming enum values
- Making optional arguments required
- Changing argument types

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
- Changing argument types
- Changing argument types
- Making a non-null field nullable

}
```

**Making a nullable field non-null:**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
**Making a nullable field non-null:**
**Making a non-null field nullable:**

}
```

These examples show schema changes that break existing queries. Clients requesting the removed `email` field receive errors. Clients expecting a `Float` for `price` get a `Money` object instead. Queries relying on `null` discounts fail validation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
These examples show schema changes that break existing queries. Clients requesting the removed `email` field receive errors. Clients expecting a `Float` for `price` get a `Money` object instead. Queries relying on `null` discounts fail validation.
These examples show schema changes that break existing queries. Clients requesting the removed `email` field receive validation errors. Clients expecting a `Float` for `price` get a `Money` object instead. Queries relying on `non-null` discounts may crash.


## Handle dangerous changes

Some changes appear safe but can cause subtle issues. These "dangerous" changes don't break the schema structurally but might break client logic.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
Some changes appear safe but can cause subtle issues. These "dangerous" changes don't break the schema structurally but might break client logic.
Some changes appear safe but can cause subtle issues. These "dangerous" changes don't break the schema structurally and [robust applications](./robust-applications) can handle most of them but caution must be exercised.

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.

3 participants