Hey Caleb! Thanks for the question!
We would handle non-backwards compatible changes the same way that suggested in GraphQL: by creating new fields (and eventually deprecating the old fields)
Because our GraphQL schema is derived from the Repositories, the Repositories are where we would make any changes to the data shape (including adding new fields). So if say we had a Post
that had a field creator
and right now that field is a String
. If we wanted to change that field to an object that had a name
field and a username
field, we would need to add that field(with a different name, maybe fullCreator
or creatorObject
or something) to the protobuf or in some cases, we can add the field to the Repository only. In both cases, the new field gets derived in the final schema.
Eventually, we might be able to remove the field entirely and we can annotate it with the @deprecated
annotation.