Ship GraphQL schema changes
with confidence.
Nitro tests a proposed schema against the operations your clients publish to the target environment. See which operations and client versions a change could break, then fix it before users feel it.
Removing Order.total breaks queries that still select it. Queries and mutations from 3 client versions published to this stage are affected. Deprecate it, then remove it after those versions are retired or unpublished from the stage.
Block breaking schema changes at the pull request.
Nitro returns a failed check when a proposed schema would break an operation published by a client. Configure that check as required in your repository, and the pull request cannot merge until the schema passes.
See which clients a change would break.
Validation runs against the operations your client versions have published to that environment. Each client gets its own result: a change can be safe for web and still break mobile, and you see that before you merge.
| client | operations passing | status |
|---|---|---|
web production | 5/5 | OK |
mobile production | 3/5 | at risk |
partner sandbox | none published | outside result |
internal-admin staging | 6/6 | OK |
Every environment is its own gate.
Development, staging, and production can each hold a different set of published operations. Validate against the environment you plan to update, because a change that passes staging may still affect client versions published to production.
Run the checks in the CI you already have.
The validate, upload, and publish steps ship as ready-made GitHub Actions and Azure Pipelines tasks, both wrapping the Nitro CLI.
GitHub Actions
Azure Pipelines
Any other CI
Keep the full history of your schema.
Every uploaded or published schema leaves a browsable version in the registry, so your team can see what changed, how Nitro classified it, and which published clients the change could affect. See when a field changed without digging through merge commits.
- v12add Cart.discountSAFE
- v13deprecate Order.placedAtDANGEROUS
- v14remove Order.total (blocked)BREAKING
- v14add Order.totalAmountSAFE
- v15remove Order.total (no published client selects it)BREAKING
Know what breaks before your users do.
Publish the operations each client uses, validate proposed schemas against the environment you plan to update, and merge with the answer in hand.