Where does this custom inventory data "live" at runtime?

True, though it still bothers me when I imagine my character running with 100+ attached actors, which are still replicating even if only to this character.

Substitute UObject for struct and this is pretty much how I have my inventory set up. But in my case, as I’ve said before, designer only creates a 'pickup (an actor) and populate the item data on it. Then, I can just generate the actual item struct at runtime whenever I need it.

Btw, have you managed to use EditInlineNew and Instanced on UObjects? So that it’s possible to create them within the editor? Or did you just subclass them?