How to use a struct in an upgradable contract

The answer is it depends where you are actually using your struct.

It’s always a good practice to write tests to check the upgrade process itself.

For laying out the variables in storage, Solidity will first linearize the contract hierarchy, and then start laying out the variables starting from the most base contract, onto the most derived one.

Have a look at the following for more details: