This seems to occur due to an interaction between how Iris handles serializing the FGameplayAbilityTargetData_SingleTargetHit struct and how the FActorInstanceHandle HitObjectHandle in the FHitResult is resolved.
When the line trace is performed, the FHitResult’s HitObjectHandle will have its ReferenceObject set to the component that was hit and its ResolutionStatus set to “NeedsResolving”. In this state, the FActorInstanceHandle will be resolved later, such as when HitResult.GetActor() is called.
However, if the FHitResult is serialized when the HitObjectHandle is in this state (such as when it is sent as an RPC parameter), the Iris FStructNetSerializer will only serialize the ReferenceObject and not the ResolutionStatus, as ReferenceObject is a UPROPERTY while ResolutionStatus is not.
On the receiving end, the HitObjectHandle’s ReferenceObject will still be the component, but when HitResult.GetActor() is called, the FActorInstanceHandle is not resolved, due to ResolutionStatus being set to the default value of “Invalid”.
This issue can be avoided by manually calling GetActor on the hit result before calling ServerSetReplicatedTargetDat), as this will resolve the ReferenceObject before the struct is serialized.
In the generic replication system, this is avoided because the FArchive << operator for FActorInstanceHandle (called from FHitResult::NetSerialize) calls ResolveHandle itself before serializing the ReferenceObject.
See additional info URL for detailed repro steps and a sample project.
Expected: The hit result will contain a valid actor and component.
Actual: The component will be valid, but the actor will be null.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-365455 in the post.
| 0 |
| Component | UE - Networking - Iris |
|---|---|
| Affects Versions | 5.8 |
| Created | Feb 12, 2026 |
|---|---|
| Updated | Feb 12, 2026 |