Quick answer: Unity UI Toolkit AddToClassList / RemoveFromClassList in update loop causing per-frame relayout? Style class changes invalidate layout - batch into discrete events.

Health bar updates a 'low-health' class per frame; profiler shows 8ms in layout.

Toggle on threshold

bool low = hp < 30;
if (low != wasLow) {{ ToggleClass(low); wasLow = low; }}

One toggle per state change; not per frame.

Or use schedule

Toggle in scheduled event; not Update. Batched.

Audit per-frame class changes

Each ToggleClass call's frequency. Identify hotspots.

“Class changes are layout-relevant. Per-frame changes are layout-thrashing.”

If your UI Toolkit is slow, the per-frame class toggle is a common culprit. Audit; gate.

Related reading