Humanoid:ApplyDescription() Does Not Apply Custom Animations (Only Catalog Animations Work)

I’m reporting a reproducible issue where custom animations do not apply when using Humanoid:ApplyDescription().
Only catalog animations (Marketplace assets owned by Roblox) apply correctly.
Custom animations uploaded to the same group as the game fail to apply unless the character is fully reloaded (Custom animations have proper structure like R15Anim → string value called idle → anim object etc…).

Minimal Reproduction Code:

local Players = game:GetService("Players")

local ids = {1, 2, 3}
local descs = {}

print(game:GetService("StarterPlayer").AllowCustomAnimations) -- true

for _, id in ids do
	local desc = Players:GetHumanoidDescriptionFromUserId(id)

	-- ❌ Custom animations (uploaded to the same group) DO NOT APPLY with ApplyDescription
	-- desc.RunAnimation = 104821640743713
	-- desc.IdleAnimation = 127163335466399

	-- ✔️ Catalog animations apply correctly
	desc.RunAnimation = 1090130630
	desc.IdleAnimation = 1090133099

	table.insert(descs, desc)
end

while true do
	for i = 1, #ids do
		task.wait(5)
		local player = Players:GetPlayers()[1]
		local hum = player.Character.Humanoid

		hum:ApplyDescription(descs[i]) -- ❌ Does not update custom animations
		-- player:LoadCharacterWithHumanoidDescription(descs[i]) -- ✔️ Works
	end
end

Notes
• This issue makes dynamic animation swapping impossible for experiences that depend on custom animation assets.
• The behavior is inconsistent between animation types, indicating an engine-level problem (or expected somehow?) in ApplyDescription.

Studio version: 0.699.418.6991649 (arm64) (Apple M1)

Expected behavior

Humanoid:ApplyDescription() should update the humanoid’s animations, including:
• Group-owned animations
• User-owned animations
…just like LoadCharacterWithHumanoidDescription() does.

1 Like

It sounds like this is an AssetTypeVerification issue? Assuming that the custom animation was uploaded as a Model asset, you need to supply Enum.AssetTypeVerification.ClientOnly as the second parameter to ApplyDescription.

A change was made recently to make Enum.AssetTypeVerification.Always the default value instead, which means asset types are always verified before applying, meaning that trying to use a Model asset instead of an actual avatar animation asset would be rejected.

Hey @GeldiBaskan

Thanks for your report! As @xyrafrost mentioned above, this is likely due to the recent change to Humanoid:ApplyDescription to make Enum.AssetTypeVerification.Always the default. I would recommend explicitly passing in Enum.AssetTypeVerification.ClientOnly for your calls to Humanoid:ApplyDescription that use custom animations and report back if this resolves your issue or not.

Thanks @JollySunbro6 and @xyrafrost! Using Enum.AssetTypeVerification.ClientOnly fixed the issue. Appreciate the help!

3 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.