Buttons should communicate consequence
A button needs a clear label, sufficient contrast, a stable hit area, and visible hover, focus, pressed, loading, and disabled states. Visual priority should match the importance of the action.
Use animation sparingly and never let it change layout or obscure the label. Familiar icons can support compact tools, but unfamiliar actions still need text or a tooltip.