# What's the preferred way to replicate ActorComponent?

**URL:** <https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733>\
**Category:** Programming & Scripting\
**Tags:** Networking, unreal-engine, Multiplayer, CPP, question\
**Created:** [February 26, 2024, 2:16pm UTC](https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733 "2024-02-26T14:16:05Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![MaskedFuyu](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/maskedfuyu/32/723605_2.png) [@MaskedFuyu](https://forums.unrealengine.com/u/MaskedFuyu)\
**Post date:** [February 26, 2024, 2:16pm UTC](https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733/1 "2024-02-26T14:16:05Z")

</div>

The [4.27 docs](https://docs.unrealengine.com/4.27/en-US/InteractiveExperiences/Networking/Actors/Components/) says we can just `AActorComponent::SetIsReplicated(true)` if we want to replicate the component.

While this seems work in UE5 but I can not find it describes in docs. The [latest docs](https://docs.unrealengine.com/5.3/en-US/replicated-subobjects-in-unreal-engine/) shows other ways to replicate Subobjects.

If all the approaches work in UE 5, which is the preferred way? How to decide which one to use ?

---

<div class="post-metadata">

**Author:** ![Auran131](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Auran131](https://forums.unrealengine.com/u/Auran131)\
**Post date:** [February 28, 2024, 3:44am UTC](https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733/2 "2024-02-28T03:44:16Z")

</div>

SubObjects are for custom c++ objects i believe,

SetIsReplicated is fine for ACs

---

<div class="post-metadata">

**Author:** ![MaskedFuyu](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/maskedfuyu/32/723605_2.png) [@MaskedFuyu](https://forums.unrealengine.com/u/MaskedFuyu)\
**Post date:** [February 28, 2024, 8:18am UTC](https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733/3 "2024-02-28T08:18:18Z")

</div>

Just browsed the source code and reread the docs for some time. Here’s what I’ve got to know if you are interested.

First of all `UActorComponent`s are also `UObject`s. The ways to replicate `UObject`s also apply to them as the [docs](https://docs.unrealengine.com/5.3/en-US/replicated-subobjects-in-unreal-engine/) say.

If you call `AActorComponent::SetIsReplicated(true)`, it basically adds the component to its owner’s (an actor) `ReplicatedComponents` for replication.

If you want to use the “new methods” (subobjects list) to replicate, you’ll need to set `bReplicateUsingRegisteredSubObjectList ` to true. Let’s see the comments on this variable, **which is false by default** :

> When true the replication system will only replicate the registered subobjects and the replicated actor components list
> 
> When false the replication system will instead call the virtual ReplicateSubobjects() function where the subobjects and actor components need to be manually replicated.

The default implementation of `ReplicateSubobjects` (only called when `bReplicateUsingRegisteredSubObjectList` is false) iterates through `ReplicatedComponents` and call `Channel->ReplicateSubobject` to make them replicated. You can read that this method is old, deprecated somehow from their comments and symbol names. You’ll need to override it if you want to replicate other subobjects.

If you want to use the new method, just `bReplicateUsingRegisteredSubObjectList` to true and use `AddReplicatedSubObject` to add them to the `ReplicatedSubObjects`.

But actually in `AActor::BeginReplication`, both `ReplicatedSubObjects` and `ReplicatedComponents` are iterated.

So I guess for `ActorComponent`s it’s okay to call `AActorComponent::SetIsReplicated(true)` no matter which method you use.

You can find the declarations of the stuff mentioned in `Actor.h` and `ActorComponent.h`. Some of the definitions are in `ActorReplicationBridge.cpp`.

---

<div class="post-metadata">

**Author:** ![Auran131](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Auran131](https://forums.unrealengine.com/u/Auran131)\
**Post date:** [February 28, 2024, 1:18pm UTC](https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733/4 "2024-02-28T13:18:35Z")

</div>

there is an even newer system coming called ‘Iris’ so just do whats best for your game now 🙂

---

<div class="post-metadata">

**Author:** ![MaskedFuyu](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/maskedfuyu/32/723605_2.png) [@MaskedFuyu](https://forums.unrealengine.com/u/MaskedFuyu)\
**Post date:** [February 28, 2024, 1:30pm UTC](https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733/5 "2024-02-28T13:30:46Z")

</div>

Yeah I’ve seen that in the docs😂

---

<div class="post-metadata">

**Author:** ![ShadowBr0kerz](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/shadowbr0kerz/32/1201558_2.png) [@ShadowBr0kerz](https://forums.unrealengine.com/u/ShadowBr0kerz)\
**Post date:** [October 21, 2026, 10:11am UTC](https://forums.unrealengine.com/t/whats-the-preferred-way-to-replicate-actorcomponent/1713733/6 "2026-10-21T10:11:18Z")

</div>

for plain actor components SetIsReplicated(true) is still the normal path, it just puts the component on the owner replicated components list. the subobject list stuff is for custom uobjects and for iris.

rule of thumb is components for behavior attached to one actor, subobjects for data that moves between owners or needs its own lifetime. if you are on 5.6 plus and plan to switch to iris, set bReplicateUsingRegisteredSubObjectList on the actor and register what you replicate, since iris ignores the legacy ReplicateSubobjects path. dont mix both on one actor or half your data silently stops.

you can also try Blueprint Object Replication, a replication plugin for Unreal Engine that hosts gameplay data as replicated objects on one component so you stop choosing between component and subobject paths: [https://www.fab.com/listings/e26dcf07-7c78-4e67-8e56-272cf6df8021](https://www.fab.com/listings/e26dcf07-7c78-4e67-8e56-272cf6df8021)
