I thought I was reading my own comment at first because I had the exact same thing happen with my mature app (also 10 years, but updated once or twice a year). Data corrupted reading during didFinishLaunchingWithOptions most likely due to prewarming. I was not using NSFileProtectionComplete, either. The fix that "worked" for me was recommended by an Apple engineer: constantly write backup files of your settings (I'm keeping 10) and if one is unreadable, go back to the next most recent. Shamefully ugly, but I've had no new user complaints since.