전통적인 방식은 요청 → 로딩 스피너 → 응답 → 화면 갱신입니다. 옵티미스틱 UI는 성공 확률이 매우 높은 동작(좋아요, 체크박스)에 한해 **요청과 동시에 화면부터 갱신**하고, 실패한 드문 경우에만 되돌리며 에러를 보여줍니다.
Doherty 임계값(→ doherty-threshold)과 맞닿아 있습니다 — 체감 지연이 0에 가까워지면 사용자는 앱이 "즉각 반응한다"고 느낍니다. Slack·Twitter/X의 좋아요·반응 버튼이 대표 사례입니다.
데모의 왼쪽은 스피너를 기다린 뒤 채워지고, 오른쪽은 누르자마자 채워진 뒤 조용히 서버 확인을 마칩니다.
언제 쓰나
실패 확률이 낮고 되돌리기 쉬운 동작(좋아요, 토글, 장바구니 담기)에 씁니다. 결제·삭제처럼 되돌리기 어려운 동작엔 쓰지 마세요.