Preloading Assets not working

So I have a folder in replicated storage with a bunch of image labels that have the ids of the images I am wanting to preload. I get no errors, but when I join the game and move around, I can see images loading even after they have all supposedly been preloaded. What am I doing wrong?

-- Folders
local world = game.Workspace.World
local loadedAssets = ReplicatedStorage.LoadedAssets
local mainUI = Players.LocalPlayer.PlayerGui:WaitForChild("MainUI")

local assets = {}

for index, asset in ipairs(world:GetDescendants()) do
	if asset:IsA("ImageLabel") or asset:IsA("ImageButton") then
		table.insert(assets, asset)
	end 
end

for index, asset in ipairs(loadedAssets:GetDescendants()) do
	if asset:IsA("ImageLabel") or asset:IsA("ImageButton") then
		table.insert(assets, asset)		
	end
end

for index, asset in ipairs(mainUI:GetDescendants()) do
	if asset:IsA("ImageLabel") or asset:IsA("ImageButton") then
		table.insert(assets, asset)
	end
end

ContentProvider:PreloadAsync(assets)

Try passing the decals’ content/image (rbxassetid://123456) instead of the decal instance.

I did that and it still is buffering when they first see the image. When the image leaves their field of view, it buffers all over again. I’m using animations using multiple images and this is a huge problem. I preload all the image ids that are needed from replicated first and all the images are in replicated storage. I don’t actually use the images in replicated storage, just their ids.