Backward Compatibility
ELI5 - The Vibe Check
Backward compatibility means the new version of your thing still works with the old stuff that depends on it, old API calls still succeed, old file formats still open, old client apps don't suddenly break. Break it without warning and you turn a routine update into an outage for every single person who didn't get the memo that things changed.
Real Talk
Backward compatibility is the property of a system, API, or file format where new versions continue to support inputs, calls, or data created for older versions, without requiring consumers to change their code. It is a core consideration in API versioning and semantic versioning, where a breaking change, such as removing a field or altering behavior, requires a major version bump precisely because it forfeits backward compatibility.
Show Me The Code
// backward compatible: old callers still work, new field is optional
interface UserV2 {
id: string
email: string
displayName?: string // added in v2, safe because it's optional
}
When You'll Hear This
"We can add fields to the response, that's backward compatible, just don't remove any." / "Breaking backward compatibility on a public API without a deprecation window is how you make enemies."
Related Terms
API Versioning
API versioning is how you update your API without breaking everyone's apps.
Breaking Change
A Breaking Change is a modification to your API or library that will BREAK existing code that uses it.
Contract Testing
Contract testing verifies that two services agree on their API contract — the request format, response shape, and status codes. It's like checking that the
Semantic Versioning (SemVer)
Semantic versioning uses three numbers — MAJOR.MINOR.PATCH — where each number means something. PATCH (1.0.1) = bug fix. MINOR (1.1.