Forward and backward compatible wire rules for changing schemas

Protobuf lets old and new services talk

A gRPC service and its clients ship on their own schedules, so the schema has to change while both old and new binaries are running. Protobuf is built for exactly that: the compatibility contract lives in field numbers and wire types rather than in names, and a reader that does not recognise a field skips it instead of failing. ...

February 26, 2028 · 4 min · XB Field Notes
A binary serialization format whose recorded field numbers allow forward and backward schema drift.

Protobuf lets schemas evolve without breaking encoders

Backward compatibility comes from never reusing a field number and from defaulting to new, unknown fields being skipped rather than fatal. Numbers pin the contract A protobuf field is committed to a wire identity the moment it is given a number, and that number is the contract, not the name. Renaming a field is safe, changing its wire number is a breaking change. So the mapping of tag numbers to meanings must be adjudicated carefully and never reused for a different type, because old binaries holding the old meaning will decode it wrongly the moment the number is reassigned. ...

November 19, 2027 · 5 min · XB Field Notes