Alternative to Resources system for reskinning UI

I’m familiar with the Resources system and have been using it to “reskin” the UI of a game for a while. All of the textures associated with each skin reside in Resources and are loaded at runtime depending on the relevant skin, so that several large textures that aren’t being used don’t reside in memory.

However, I just came across this page in the Unity documentation, which with its instant recommendation of “Don’t use it.” seems to imply that I’ve fallen for a trap.

What is the recommended way to handle cases like UI skinning, wherein one of several sets of large textures could possibly be seen at any given time, but I don’t want all of these textures to exist in memory at the same time?

You use asset bundles.
Asset bundles are the thing to use to load anything.

As the page you linked said, using the resources folder is only acceptable for “core” things that will likely never change (or only very very rarely).

For example I use “Resources” for my main menu and all the assets used there.
I use it for scenes that will never change (MainMenu, LoadScreen, GameUI, …),
things like core-prefabs such as “player” (which doesn’t contain any visual component, no renderes, and is exclusively a gameobject with 10 scripts attached), etc.

For all “actual content” I use asset bundles.
All levels, 3D models, sounds, … are all bundled into categorized asset bundles.