.NET › API Versioning
How does GraphQL's approach to API evolution differ from REST's typical versioning strategies?
IntermediateAnswer
GraphQL generally avoids traditional versioning entirely, favoring a single, continuously evolving schema where new fields are added (additive, non-breaking) and old fields are marked @deprecated with a reason rather than removed immediately, since clients only request the specific fields they need -- unused deprecated fields simply don't affect clients that never query them, unlike REST where an entire response payload shape typically changes at once.
type Product {
id: ID!
name: String!
price: Float! @deprecated(reason: "Use priceWithCurrency instead")
priceWithCurrency: Money!
}
# Old clients querying 'price' keep working;
# new clients migrate to priceWithCurrency at their own paceReal-world example A GraphQL API deprecates a poorly-designed field for over a year, monitoring query analytics to confirm zero remaining clients still request it before finally removing it from the schema entirely, without ever needing a 'v2' schema.