조쉬 스토리의 회고

622025년 10월 16일3

공식 릴리스를 앞두고, React Core Team은 지난 몇 년간의 여정을 돌아보는 내부 회고 세션을 가졌다. 각자가 느꼈던 점, 어려웠던 순간, 그리고 프로젝트를 통해 얻은 교훈을 공유하는 시간이었다. 많은 이야기가 오간 뒤, 마이크를 잡은 것은 조쉬 스토리였다.

그는 평소처럼 유쾌했지만, 그의 목소리에는 깊은 성찰이 담겨 있었다.

“프로젝트 초기에, 그리고 Next.js App Router가 처음 공개되었을 때, 우리가 가장 많이 들었던 비판 중 하나가 무엇이었는지 기억하십니까?”

그는 잠시 말을 멈추고 팀원들을 둘러보았다.

“‘React가 너무 복잡해졌다’는 말이었습니다. 한때 단순함의 상징이었던 라이브러리가, 이제는 서버와 클라이언트를 넘나드는 괴물이 되어버렸다고들 했죠.”

그의 말에 몇몇 팀원들이 씁쓸한 표정으로 고개를 끄덕였다. 그것은 그들의 가장 아픈 손가락이었다.

“솔직히 말해, 그 말을 처음 들었을 때 저도 잠시 흔들렸습니다. 우리가 정말 잘못된 길로 가고 있는 건 아닐까? 개발자들에게 너무 많은 것을 배우라고 강요하고 있는 건 아닐까?”

조쉬는 잠시 창밖을 바라보았다. 그의 시선은 과거의 어느 시점을 향해 있는 듯했다.

“하지만 프로젝트가 진행되고, 모든 조각들이 맞춰지는 것을 보면서, 저는 깨달았습니다. 우리의 비판자들이 한 가지 간과하고 있는 사실이 있다는 것을요.”

그는 다시 팀원들을 향해 몸을 돌렸다.

“우리는 React를 더 복잡하게 만든 게 아닙니다.”

그의 목소리에 힘이 실렸다.

“우리는 웹 애플리케이션의 본질적인 복잡성을 React가 품어 안도록 만든 것입니다.”

그 순간, 회의실의 공기가 바뀌었다. 팀원들의 눈빛이 흔들렸다. 조쉬의 한 문장이 그들의 모든 노력을 새로운 관점에서 재정의하고 있었다.

“생각해보세요.” 그가 말을 이었다. “데이터 로딩, 캐싱, 서버와의 상태 동기화, 네트워크 폭포수 문제… 이 문제들은 React가 없다고 해서 사라지는 문제들이 아닙니다. 이것들은 현대적인 웹 애플리케이션을 만든다면 누가, 어떤 기술을 쓰든 반드시 마주쳐야 하는 본질적인 복잡성입니다.”

“과거의 React는 이 복잡성을 외면했습니다. 그리고 그 짐은 고스란히 개발자들에게 전가되었죠. 개발자들은 이 문제들을 해결하기 위해 수많은 라이브러리를 조합하고, 각자 자신만의 아키텍처를 만들며 싸워야 했습니다. 그 결과가 바로 우리가 보아온 수많은 보일러플레이트와 예측 불가능한 버그들이었습니다.”

“React 19가 한 일은, 바로 그 흩어져 있던 복잡성을 프레임워크 안으로 가져온 것입니다. 서버 컴포넌트, Actions, Suspense… 이 모든 것은 개발자 개개인이 짊어지고 있던 짐을, React라는 표준화되고 검증된 시스템이 대신 짊어지기로 한 선언입니다.”

그의 회고는 팀에게 깊은 울림을 주었다.

그들은 React를 더 어렵게 만든 것이 아니었다. 오히려 웹 개발이라는 행위 자체를 더 쉽게 만들고 있었다. 개발자가 더 이상 인프라 수준의 복잡성에 대해 고민하지 않고, 오직 자신의 제품과 사용자 경험이라는 본질에만 집중할 수 있도록, React가 기꺼이 궂은일을 도맡아 하고 있었던 것이다.

“그러니 다음에 누군가 ‘React가 복잡해졌다’고 말한다면, 우리는 자신 있게 대답할 수 있습니다. ‘아닙니다. 웹 개발이 원래 복잡한 겁니다. 그리고 이제 React가 당신을 위해 그 복잡성을 해결해 드립니다’ 라고요.”

조쉬의 말이 끝나자, 회의실에서는 뜨거운 박수가 터져 나왔다. 그의 회고는 팀의 정체성을 다시 한번 확인시켜 주었다. 그들은 단순한 라이브러리 제작자가 아니었다. 그들은 웹 개발의 복잡성이라는 거대한 파도에 맞서, 개발자들을 위한 견고한 방파제를 쌓아 올리는 위대한 건축가들이었다.