Unreal Engine 5.6.1: C++ components (SpringArm & Camera) randomly disappear from Blueprint after reopening editor – is this a known issue?

I’ve just started learning Unreal Engine, and I’m using version 5.6.1.
I created a C++ class as follows:

APlayerCharacter::APlayerCharacter()
{
PrimaryActorTick.bCanEverTick = true;

SpringArm = CreateDefaultSubobject(TEXT(“SpringArm”));
SpringArm->SetupAttachment(RootComponent);

Camera = CreateDefaultSubobject(TEXT(“Camera”));
Camera->SetupAttachment(SpringArm, USpringArmComponent::SocketName);
}

Then I created a Blueprint based on this C++ class.
Everything was working fine at first — until I reopened the editor and discovered that the SpringArm and Camera components had disappeared.

I’m not sure how to reliably reproduce the issue, but I’ve encountered it twice simply by reopening the editor.
I managed to fix it once by clicking the “Recompile and Reload C++” button, but all the parameters had to be reconfigured from scratch.

Honestly, I’m quite shocked that such a severe bug exists in a commercial-grade game engine. How can I avoid this problem?
Encountering such a serious issue at the very beginning makes me question whether Unreal is really a suitable engine.


I’m using Mac, so there’s no live coding option to disable

A lot of time this happens because the serialization fails for your actor/component on loading due to one reason or another. Changing your class signature or other setup info can cause this. Learn about using core redirects if this is the case as it handles most situations:

In the past I’ve had it happen when ctrl(cmd)-c, ctrl-v copy/pasting blueprinted actors and components around the content browser, rather than using ‘Duplicate’ or the drag/copy method, possibly due to the instanced component not serializing properly.

I don’t think this is a ‘bug’. If you are doing a lot of jumping between c++ and BP you may encounter this until your signature gets hardened, although to be honest I create/modify several classes a day and encounter it very rarely, generally finding it’s because I deleted/renamed something that had dependencies I should have created a redirect for.