낙관적 UI의 심리학

722025년 10월 26일3

릴리스를 위한 최종 문서 검토 회의. 팀은 useOptimistic 훅에 대한 설명을 다시 읽고 있었다. 문서는 훅이 ‘어떻게’ 동작하는지, 즉 실제 상태와 낙관적 상태를 분리하고 실패 시 자동으로 롤백하는 메커니즘을 기술적으로 정확하게 설명하고 있었다.

하지만 로렌 탄은 여전히 무언가 부족하다고 느꼈다.

“우리는 useOptimistic이 ‘어떻게’ 동작하는지는 충분히 설명했습니다. 하지만 ‘왜’ 이 훅이 필요한지에 대한 근본적인 철학을 이야기해야 합니다. 이것은 단순한 상태 관리 기법이 아니에요.”

그녀의 말에 팀원들은 문서에서 눈을 떼고 그녀를 바라보았다.

“사용자는 기다리는 것을 싫어합니다.”

그녀는 가장 기본적인 명제에서부터 이야기를 시작했다.

“인간-컴퓨터 상호작용(HCI) 연구에 따르면, 시스템의 반응 속도에 대한 인간의 인지에는 몇 가지 중요한 경계점이 있습니다. 그중 가장 중요한 것이 바로 0.1초, 즉 100밀리초의 벽입니다.”

그녀는 화이트보드에 ‘100ms’라고 크게 적었다.

“시스템이 0.1초 안에 반응하면, 사용자는 자신의 행동이 즉각적인 결과를 낳았다고 인지합니다. 지연을 느끼지 못하죠. 하지만 0.1초를 넘어서는 순간부터, 사용자는 ‘시스템이 내 요청을 처리하고 있구나’라고 인지하며 ‘기다림’을 시작합니다.”

“그런데 서버와 통신하는 작업에서 이 0.1초의 벽을 넘는 것은 거의 불가능합니다. 사용자의 기기에서 서버까지 데이터가 오고 가는 네트워크 지연 시간(latency)만 해도 수십, 수백 밀리초가 걸리니까요. ‘좋아요’ 버튼을 눌렀을 때, 서버의 확인을 기다리는 방식으로는 절대로 즉각적인 반응을 만들어낼 수 없습니다.”

팀원들은 고개를 끄덕였다. 이것이 바로 그들이 해결하려 했던 문제였다.

“그래서 우리는 선택의 기로에 놓입니다. 사용자에게 ‘네트워크의 냉정한 진실(느린 응답)’을 보여줄 것인가, 아니면 그 진실을 잠시 숨기고 ‘최상의 경험’을 먼저 제공할 것인가?”

로렌의 시선이 팀원들을 훑었다.

useOptimistic은 이 딜레마에 대한 React의 대답입니다. 그것은 ‘대부분의 요청은 성공할 것이다’라는 합리적인 ‘낙관’을 바탕으로, 사용자에게 먼저 최상의 피드백을 제공하는 전략이죠. 우리는 의도적으로, 그리고 전략적으로 사용자에게 즉각적인 반응을 보여줌으로써, 0.1초의 마법을 실현하는 겁니다.”

그녀는 말을 맺었다.

“실패 시의 롤백은 그 마법에 대한 보험일 뿐입니다. useOptimistic의 진짜 목적은 실패를 처리하는 것이 아니라, 성공을 ‘가정’함으로써 사용자의 인지적 기다림을 없애는 데 있습니다. 이것은 심리학에 기반한 사용자 경험 설계입니다.”

그녀의 설명은 useOptimistic을 새로운 차원으로 끌어올렸다. 그것은 더 이상 기술적인 트릭이나 편의 기능이 아니었다. 그것은 사용자의 뇌가 시간을 인지하는 방식 자체를 이해하고, 그에 맞춰 최적의 경험을 설계하려는 React의 깊은 고민이 담긴, 철학적인 도구였다.

useOptimistic은 그 0.1초의 마법을, 모든 React 개발자가 쉽게 구현할 수 있도록 만든 React의 대답이었다.