> For the complete documentation index, see [llms.txt](https://adidas.gitbook.io/api-guidelines/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adidas.gitbook.io/api-guidelines/asynchronous-api-guidelines/kafka-asynchronous-guidelines/f_schema_data_evolution/backward-compatibility.md).

# Backward Compatibility

There are two variants here:

* BACKWARD - Consumers using a new version (X) of a schema can read data produced by the previous version (X - 1)
* BACKWARD\_TRANSITIVE - Consumers using a new version (X) of a schema can read data produced by any previous version (X - 1, X - 2, ....)

The operations that preserve backward compatibility are:

* Deleting fields
  * Consumers with the newer version will just ignore the non-existing fields
* Adding optional fields (with default values)
  * Consumers will set the default value for the missing fields in their schema version

<figure><img src="https://3944475286-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LI53HYOfSr4XCy2e2BV%2Fuploads%2Fgit-blob-17547da367c50d28e6996ea1d3fab4d10625765b%2Fspaces_PQHX3w20BF4lnkckLJzC_uploads_git-blob-17547da367c50d28e6996ea1d3fab4d10625765b_sr_backward_compatibility.png?alt=media" alt=""><figcaption></figcaption></figure>
