A downloadable tool for Windows

Buy Now$14.99 USD or more

Unreal will not let you change a Blueprint-added component's class. ChangeSubobjectClass refuses unless the component is native, the target is a subclass, and an off-by-default console variable is set. So every thread ends the same way: delete the component, add a new one, wire it all back up.

That deletion is the part nobody prices:

  • every graph node bound to that component variable is orphaned,
  • anything attached beneath it is dropped,
  • every child Blueprint's customisation of it is thrown away,
  • and per-instance edits on placed actors are reset.

Component Class Swap changes the class in place, across every Blueprint in the project. Unreal Engine 5.8, Windows, editor plugin (commandlet). Raw C++ source included.

What it keeps

Variable identity. The component's GUID and name are untouched, so graph nodes that referenced it still reference it.

The attachment hierarchy. Children, the attach socket and the parent link survive.

Every property that still exists on the new class, carried with the engine's own routine. Measured on the test project: 203 properties carried per component on a swap from StaticMeshComponent to a Blueprint subclass of it.

Child and grandchild Blueprint overrides. A derived Blueprint's customisation of an inherited component is a separate record carrying its own class. We measured what happens when it is left on the old class: the child loads on the new class with its customisation silently gone, and its grandchild loses the inherited value too. Nothing is logged, and nothing can find it afterwards. This rebuilds every descendant's record in the same run as the swap, shallowest first, and our test spawns the child and grandchild afterwards and reads their values back.

What it tells you it cannot keep

A property that does not exist on the new class cannot come across. Every one that holds a value you set is named in the report with its type and value; the ones still at their default are counted, not listed.

What it refuses to do

If a component has children (or is the Blueprint's root) and you point it at a class with no transform, the swap would silently detach everything below it. It refuses, names the children, and writes nothing. If anything in scope is refused, -Apply writes nothing at all.

Reversible, and checked from disk

Every package is copied byte-for-byte into a stamped journal before anything is written, and -Undo=<stamp> puts them back. After saving, every swap is re-checked: class changed, variable name survived, descendant records on the new class. The same command with -FailOnMismatch in a fresh process exits 5 if any component is still on the old class, and keeps a finished migration finished in CI.

Placed actors

The tool never loads or writes a level; the report lists every level that places an affected Blueprint. In our test, a placed instance with its own per-instance location opened in a fresh editor process on the new class with that location intact. The level file itself is not rewritten, so re-save each listed level.

Documentation

Install steps, every switch and every exit code: Component Class Swap documentation.

More repair tools for Unreal

Orphan Reference Rescuer · Instance Override Surgeon · Blueprint Clone Extractor

Built by Core Systems Asset Factory. AI disclosure: code and graphics are AI-generated; there is no audio and no authored narrative text.

Purchase

Buy Now$14.99 USD or more

In order to download this tool you must purchase it at or above the minimum price of $14.99 USD. You will get access to the following files:

component-class-swap-windows.zip 63 kB
Version 1.0.0

Development log