Loading comparison...
Loading comparison...
A query language for APIs with a type system. Compare schema definitions, queries, and mutations.
Facebook developed GraphQL internally in 2012 and open-sourced it in 2015, with Lee Byron, Dan Schafer, and Nick Schrock leading the design of a query language that gives API clients the power to request exactly the data they need. Unlike REST's fixed endpoint-per-resource model, GraphQL exposes a single endpoint with a strongly-typed schema that clients query using a declarative syntax, requesting specific fields, traversing relationships, and aggregating data from multiple sources in a single round trip. The GraphQL Foundation (part of the Linux Foundation) now stewards the specification, which defines queries for reading data, mutations for writing data, and subscriptions for real-time updates over WebSockets.
Companies including GitHub, Shopify, Stripe, Airbnb, and The New York Times have adopted GraphQL for their public and internal APIs. The schema serves as both documentation and contract — types, fields, arguments, and relationships are explicitly defined, and introspection queries allow tools to discover the entire API surface automatically. This schema-first approach enables powerful tooling: GraphQL Playground and GraphiQL provide interactive query builders, code generators produce typed client SDKs from schemas, and schema registries track API evolution with breaking change detection.
The ecosystem includes server implementations like Apollo Server, GraphQL Yoga, and Mercurius, client libraries like Apollo Client and urql, and schema stitching/federation for composing multiple services into a unified graph. GraphQL's type system — with scalars, objects, interfaces, unions, enums, and input types — provides a structured hierarchy that benefits from semantic comparison when schemas evolve.
GraphQL schema changes can break every client application consuming the API, making diff review a critical gate before deployment. Comparing GraphQL files catches removed fields that cause client query failures, modified type definitions that break response parsing, changed input types that invalidate existing mutations, and altered resolver relationships that return unexpected data structures.
Schema evolution diffs must verify backward compatibility — additive changes (new fields, new types) are safe, while removals and type changes require coordinated client updates and deprecation periods.
UtraDiff parses GraphQL files into a schema-aware tree diff, matching types, fields, and directives by name. Reordered field definitions within a type are detected as identical, filtering formatter noise.
Added arguments, changed return types, and modified directive annotations are highlighted individually. The text diff with GraphQL syntax highlighting runs alongside the structural view, making it efficient to review schema evolution, query changes, and federation subgraph modifications.
Supported extensions: .graphql .gql