I do EXACTLY this in my game, and my approach is very much like yours, loopers. I have a bone (actually, a small group of bones, since the weapon has multiple parts) which controls the weapon itself, and I animate it along with the player. This allows me to get far more complex than socket attachment would allow.
In-engine, what I do is I export my player character without any of the weapon verts skinned; the bones are just empty control bones. Then I export my weapons as separate meshes and, inside my character BP, I attach those meshes to the player mesh using socket snapping (so that, rather than being snapped to the player’s hand, it’s snapped to his weapon-control-bone). The advantage to doing this is it lets me easily control attachment and visibility; for example, if the player throws his weapon and it needs to move through the environment, I can spawn a simple actor which has a duplicate of the weapon’s mesh on it, and I can set the default, attached weapon mesh to be invisible.