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.