The problem
Every API change meant editing the same shapes in several places.
Sooner or later you miss one and it drifts. On Swift one renamed field fails the whole decode, and a client that does not handle that failure crashes.
- Server
fullName: string - Swift client
let name: String - Decode
keyNotFound("name")