Quick answer: Unreal Iris GameplayTag added at runtime missing on a late-joining client? Tags propagate via initial state; runtime additions need delta replication enabled on the tag container.
Server applies a damage tag. Existing clients see it; late-join client doesn't.
Use FGameplayTagContainerNetSerializer
Custom serializer that handles delta + initial state. The default container replicates atomically; late join misses runtime additions.
Or attach via component
A GameplayTagComponent with its own replication picks up the late-join state cleanly.
Verify on PIE-with-extra-client
Open PIE, add a second client mid-game. Tags applied before the second connect should appear; if not, replication is incomplete.
“Initial state and runtime delta are different replication paths. Tags need both.”
For competitive games, audit every replicated GameplayTagContainer. The late-join bug class is hard to spot in playtests.