Overview

gRPC diff tool — detect every change, automatically

What the diff engine detects#

Breaking change types#

Field removed from a message · Field number (tag) changed · Field type changed · Field renamed (same number) · Field label changed to required (proto2) / cardinality change · Enum value removed · RPC method removed · RPC request or response type changed · Service removed

Non-breaking changes#

New optional field with new number · New RPC method added · New enum value added · New message or service added · Description updated

Why automated gRPC/Protobuf diffing matters#

Manually comparing two versions of a Protobuf schema is tedious and highly error-prone. As gRPC APIs evolve, their schemas grow complex, with intricate relationships between messages, fields, and services. Changing a field number or type is a significant breaking change, but it might appear as a minor, one-word alteration in a text file — a purpose-built diff tool parses the schema, resolves all references, and understands the hierarchical structure of the contract.

How CodeRifts performs the diff#

The engine parses both the old and new gRPC/Protobuf schemas, creating a complete, canonical representation of each API version. It performs a semantic comparison of the two structures, categorizing every detected change — from a removed field to a modified RPC method — by severity: breaking, non-breaking, or deprecation. Each change gets a risk score based on its type and potential impact on consumers.

Three ways to diff#

  • In-browser — Upload two schemas to app.coderifts.com/try, no signup required.
  • On every PR — Install the GitHub App and CodeRifts automatically diffs your gRPC/Protobuf schemas on every pull request. Zero config.
  • Via API or CLI — Use the REST API or CLI to integrate diff into any CI/CD pipeline, pre-commit hook, or custom workflow.

See also: AsyncAPI diff, OpenAPI breaking changes.

Updated

Was this page helpful?