Quick answer: Unreal SaveGame archive failing to deserialize older save files? Adding a UPROPERTY breaks binary compatibility - implement Serialize override with version handling.

Patch added a new inventory slot count. Players' old saves now load as 'corrupted'.

Override Serialize

void USaveData::Serialize(FArchive& Ar) {
  Super::Serialize(Ar);
  int32 Version = 3;
  Ar << Version;
  if (Version >= 3) Ar << NewField;
  else NewField = DefaultFor(3);
}

Version field lets old saves load with a sensible default for the new property.

Or use FCustomVersion

Engine-level versioning system. Tag your serializer with a GUID; engine handles back-compat lookups.

Validate on every release

Save a 1.0 file. After every release, verify it still loads. The test is cheap; the regression is expensive.

“Save format evolution is forever. Each release inherits the obligation.”

Build a save format migration test suite from day one. Tomorrow's release is easier when yesterday's saves still work.