Quick question - using Strings in typedef structures...

Just because the code compiles fine on a Nano (or any other platform) does not mean it will perform anything like you expect or desire.
This is a lesson about programming many noobs take a while to learn.

Even more insidiously with the storing of a String object in EEPROM is that if you are just doing a simple program/test with EEPROM put and get or AVR eeprom block writes, the sketch will appear to be working. Even if you unplug the Arduino and reconnect it again, or only do a read with the same sketch, the sketch can appear to work. The data in the memory location which the pointer references can still be unchanged.

I think it takes some sort of complete running program with other things going on for the read of the String object from EEPROM to fail. Of course, a simple EEPROM read of the raw bytes stored will show that you have not stored the character message you thought you did.