Restrictions with attaching components at runtime

I was playing with components some time ago and noticed that there’s a blueprint function that allows you to attach components at runtime (Palette > Add Component) but I can’t help to notice that it is not possible to place an Add Component blueprint node on any blueprint that is not derived from an actor class.

  1. To be specific, the node can be placed on: Actors, Pawns, Controllers, HUDs, GameModes, PlayerStates (all of which have a scene root).

  2. It is not possible to place an Add Component node in: Actor Components, Scene Components, UObjects.

I find it weird because it is entirely possible to call the function from inside an actor blueprint and have any it run on any other actor by specifying the target, but for everything else, like say scene components, trying to drag the node from the palette results in “Cannot place this node in this type of graph” and the current documentation doesn’t mention this anywhere

An obvious work around is to use actors to handle attaching components at runtime. This is likely not a bug but a engine design choice, although it still baffles me that it works that way, so I’ll leave this post here just in case anyone finds it useful.