Hot reload for components is a mess with the "HOTRELOAD" name bug at the moment.

So I’ve been using UE4 since 4.0 and like hot-reload a lot. However, when it comes to components, there is one bug, that just totally sucks the value out of it. Basically, whenever you hot reload changes to a component, the component name gets mangled into something like “HOTRELOADED_<YourComponentName>_X”, where X is the number of times you have hot reloaded. If you have any references to this component in a BP, these automatically get changed to be this new component type. Unfortunately, the nodes they are connected to, still expect the old name. Your BP will now fail to compile because it is seeing as a different type by the BP compiler. This was reported as far back as the start of Feb or earlier, but still isn’t fixed.

Not stressing too much about this, but it is an annoying issue. Especially for something of a tent-pole feature of the engine and workflow of the editor. To get around this, you have to basically quit the editor and force a rebuild of the code.


PS: Directly related bugs:


Related issues:

This also stops affected BPs from being able to be saved. As the BPs will reference an “private external reference”.

To be fair, I haven’t gotten anything of hot reload except function implementations to work properly.

This has been a very annoying issue for me the past month. Sometimes to the point where I’ve lost work because I can’t save a file due to the error. =\

Hi Tommybear,

It looks like all three of the bugs you listed are marked as fixed and are potentially slated for 4.8. Keep an eye out for the engine release notes!

Hi Adam,

Well that is great news. Fingers crossed! Like I said, this totally nixes the benefit of hot reloads in general. That is especially true for component development, which is extremely useful for workflow. I have been moving more of my development from Actor based implementations to more modular component based dev. So this is very important to me as shutting down and starting up breaks that awesome clean flow.


Okay so I just tested the latest 4.8 promoted label. Looks like this issue is history in that build. Found one little bug though… I’ll file a bug report. Basically, if you have a component with a function (that’s blueprint callable), let’s say “void TestFunction(float value)”. You do all your hookup, call this function from a BP script, save your BP, then go and add another parameter so it is now “void TestFunction(float value, float value2)”, when the hot reload happens, the BP node placed in the BP script is still missing the “value2” pin. So when you try to compile the BP you get “Missing value2 pin. Fatal compile error has occurred”. You have to manually delete the call function node, and re add it before it will correctly add the pin.


Bug report is here:

Steps to repro:

  • Start new project
  • Place empty actor in the level
  • Save the level and add a BP to this actor
  • Do File | Add new c++ class
  • Create new “ActorComponent” class with whatever name
  • In either XCode or Visual Studio add a new function “void TestFunction(float value)” + it’s implementation in the cpp
  • Build
  • Go back to the editor and observe the hot reload
  • Click on actor in scene
  • Add newly created c++ component onto this actor
  • Edit the actor’s BP
  • Add a call to the components test function
  • Observe that the call function node has the correct “value” pin present
  • Go back to XCode or Visual Studio
  • Change function and implementation to be “void TestFunction(float value, float value2)”
  • Build
  • Go back to editor and wait for hot reload
  • Notice after the hot reload that the call function node still only has one parameter pin (value)
  • Expect to see “value2” pin appear
  • Click compile on BP
  • Note the compile error about the missing pin
  • Pin still does not appear
  • Delete the call function node
  • Add it back
  • Note the “value2” pin is now present


They’re not fixed. You can’t use them like the class they’re supposed to be, they’re just a bungled mess.I can’t even cast them.


I’ve just started encountering this bug in 4.25.3 as Amelia says above. I don’t know how to fix my game now.

Same issue with 4.26.1 .
My (not ideal) solution is to right click on nodes with “ERROR” and then “refresh nodes”. This will fix the error, but also break some links. The links are easy to fix. It is still annoying, but at least it is a way to fix the errors.

My (not ideal) solution is to close the Blueprint editor window (of the Blueprint that was using C++ code) before compiling, then compile and reopen it. Somehow object references were then not converted into the “HOTRELOADED” version.
Ok, sometimes this workaround works a dozen times and then it does not. I do not see a pattern.