Version the file, not only the app
A saved file needs its own format version. Without it, the loader is guessing from shape, and a shape that fits two formats is a file loaded wrongly with no error.
Test with real old files
Keep a file from each past version in the test fixtures. Those files are the only honest test of a loader, and writing a new one instead of keeping an old one tests the wrong thing.