Evolving APIs Without Breaking Clients
An API is not only an HTTP path or function signature. It is a contract about syntax, semantics, timing, errors, ordering, defaults, and lifecycle.
Breaking changes often happen because a server remains syntactically compatible while changing one of those less-visible assumptions.
Safe API evolution starts by identifying what clients can reasonably depend on and designing changes that allow old and new versions to coexist.
Compatibility has multiple dimensions A change can preserve JSON shape and still break clients.