Alex Schiff
07/11/2026, 3:28 PMkotlinx-serialization-protobuf in an upcoming project at my job, but I see that the status for the format is still "experimental". Is there a timeline for when this will be production ready?Bernd Prünster
07/11/2026, 4:47 PMAlex Schiff
07/11/2026, 4:54 PMBernd Prünster
07/11/2026, 5:00 PMVsevolod Tolstopyatov [JB]
07/14/2026, 8:28 PM@Serializable class Foo(val bar: Bar = Bar(), val int: Int = 42).
The proto2-centric core is stable and reasonably tested (including fuzzing), unlikely to changeAlex Schiff
07/14/2026, 8:49 PMJuan Hurtado
07/15/2026, 3:41 AMfields are omitted if they are 0 or ""), but Kotlinx Serialization uses Proto2 semantics by default (see: formats.md#protobuf) and throws a MissingFieldException if a field is missing from the wire and has no explicit default in Kotlin.
For binary protobuf, this forces you to write explicit defaults for every property in your data class, or use Square's Wire.
If what you need is canonical Proto3 JSON mapping and you're willing to try alternatives, we solved this mismatch in our project ghost-serializer (ghost-protobuf). It handles zero-value omissions and WKTs out of the box.pdvrieze
07/15/2026, 3:33 PM