Dynamic length bytes storage variables and upgradeability

Since storage slots in the EVM are 32 bytes each, what happens if I have a storage layout like so:

uint256 public myNumber;
bytes public data;
uint256 public myNumber2;

if data goes beyond 32 bytes, will it bump myNumber2 down a slot? If so, what are the implications of this for upgradeability?

I'm guessing bytes is treated the same as string which is treated as a dynamic array like so: https://docs.soliditylang.org/en/v0.8.14/internals/layout_in_storage.html#mappings-and-dynamic-arrays?

This is it. Leaving for posterity: https://docs.soliditylang.org/en/v0.8.14/internals/layout_in_storage.html#bytes-and-string

2 Likes