Skip to content
Latchkey

Apollo "rover subgraph check" found breaking changes in CI

rover subgraph check diffs your proposed schema against the published graph and replays recent operations. When a change would break a known client operation, it reports the breaking changes and exits non-zero, failing the gate.

What this error means

A rover subgraph check step fails with "Compared X schema changes against Y operations" and a table of breaking changes (FIELD_REMOVED, TYPE_REMOVED, ARG_REMOVED), exit code 1.

rover
Compared 2 schema changes against 124 operations
There were 1 breaking changes
FAIL  FIELD_REMOVED  `User.fullName` was removed
error[E030]: This operation check has encountered 1 schema change that would break operations

Common causes

A field or type clients still use was removed

The proposed schema deletes or renames something that recent traffic in the registry still queries, so the check flags it as breaking.

An argument or nullability changed incompatibly

Making a previously optional argument required, or narrowing a return type, breaks existing operations.

How to fix it

Deprecate instead of removing, or restore the field

  1. Read which change the check marks breaking and which operations it affects.
  2. Keep the field and mark it @deprecated until clients migrate, or revert the removal.
  3. Re-run the check to confirm no breaking changes remain.
GraphQL
type User {
  name: String!
  fullName: String @deprecated(reason: "use name")  # keep until clients migrate
}

Accept a vetted breaking change deliberately

If the change is intended and clients are confirmed migrated, coordinate the launch rather than bypassing the gate silently.

Terminal
rover subgraph check my-graph@current \
  --schema ./schema.graphql --name users

How to prevent it

  • Run rover subgraph check on every schema PR.
  • Deprecate fields before removing them and watch usage drop to zero.
  • Coordinate breaking launches with client owners, not by skipping the check.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →