From personal experience having just tried both on a simple static page with a form located beneath a "hidden" button, visibility: hidden performs flawlessly whereas display: none causes clickable buttons to slightly jump upon clicking, as if it tries to show the hidden button for a millisecond.