UMG Best Practises.

I’m not sure that de-couples things. It actually pushes game implementation details into your widget blueprints.
I prefer a UI that knows nothing about the game outside itself, and use a set of variables, events, and interfaces to put a seam between the UI and the game.
Any part of the game that wants to use a particular piece of UI, will have to create that UI, hook it up, and use it.
In the end, there is necessarily coupling here – either the game has to know about the UI, or the UI has to know about the game. I prefer treating the UI as the dumb thing.

You can build a Widget that has UserWidgets inside it. That way, in the end, the UI for “display loot box contents” or “search for available network game” or whatever is a single blueprint that the game can deal with; that blueprint makes use of smaller blueprints that you develop separately.

Finally: Measure your actual game. If it runs fine, you don’t need to optimize.