서버 액션과 그와 관련된 훅들(useFormStatus, useFormState)의 설계가 마무리되었을 때, 팀원들은 자신들이 만들어낸 결과물에 깊은 만족감을 느꼈다. 그것은 복잡한 폼 처리 문제를 놀랍도록 우아하게 해결했기 때문이다.
하지만 앤드류 클라크는 팀원들에게 이 성공 뒤에 숨겨진 더 중요한 사실을 상기시켰다.
“우리가 이 모든 것을 밑바닥부터 발명한 것이 아닙니다.”
그는 회의실 스크린에 서버 액션의 내부 동작을 설명하는 다이어그램을 띄웠다.
“자세히 들여다보면, 우리는 이미 존재하던 위대한 아이디어들 위에 서 있다는 것을 알 수 있습니다. 우리는 웹 플랫폼 자체가 제공하는 표준들을 최대한 존중하고, 그것들을 React의 방식으로 자연스럽게 엮어냈을 뿐입니다.”
그의 말은 사실이었다. 서버 액션의 아키텍처 곳곳에는 웹 표준에 대한 깊은 존중이 배어 있었다.
첫 번째 거인은 HTML <form> 태그 그 자체였다. React는 onSubmit과 e.preventDefault()로 폼의 기본 동작을 막는 대신, action이라는 폼의 가장 근본적인 속성을 다시 중심으로 가져왔다. 자바스크립트 없이도 동작하는 점진적 향상을 구현할 수 있었던 것은, 전적으로 이 오래된 웹 표준의 힘을 빌렸기 때문이었다.
두 번째 거인은 FormData 객체였다. React는 폼 데이터를 자신만의 독자적인 형식으로 만들지 않았다. 대신, 브라우저가 네이티브로 제공하는 FormData API를 그대로 활용했다. 덕분에 서버 액션 함수는 웹 표준과 완벽하게 호환되는 데이터를 받을 수 있었고, 개발자들은 새로운 데이터 형식을 배울 필요가 없었다.
세 번째 거인은 Request와 Response 객체였다. 클라이언트가 서버 액션을 호출할 때, React는 내부적으로 웹 표준 Request 객체를 생성하여 요청을 보냈다. 서버 측 프레임워크는 이 Request 객체를 받아 처리하고, 필요하다면 표준 Response 객체를 통해 리디렉션 같은 동작을 수행할 수 있었다. 이 모든 것이 서비스 워커(Service Worker)나 다른 웹 플랫폼 API와 자연스럽게 연동될 수 있는 기반이 되었다.
“우리는 새로운 바퀴를 발명하지 않았습니다.” 앤드류가 말을 이었다. “우리는 이미 세상에 존재하던 가장 튼튼하고 신뢰할 수 있는 바퀴들을 가져와, React라는 이름의 새로운 자동차에 맞춰 정교하게 튜닝했을 뿐입니다.”
이러한 접근 방식은 React 19의 철학을 보여주는 중요한 단면이었다.
과거의 많은 프레임워크들이 웹 표준을 대체하려는 독자적인 생태계를 구축하려 했다면, React 19는 정반대의 길을 걸었다. 웹 플랫폼이라는 거대한 거인의 어깨 위에 올라타, 그 힘을 최대한 활용하고, 그 위에 개발자 경험을 향상시키는 얇고 강력한 추상화 계층을 추가하는 것.
이러한 겸손한 태도는 React를 더욱 견고하고 미래지향적인 프레임워크로 만들었다. 특정 프레임워크에 종속된 기술이 아닌, 웹의 발전과 함께 진화할 수 있는 생명력을 부여했기 때문이다.
팀원들은 다시 한번 깨달았다. 가장 위대한 혁신은 때로는 무에서 유를 창조하는 것이 아니라, 이미 존재하는 위대한 유산들을 발견하고, 그것들을 새로운 방식으로 연결하는 지혜에서 비롯된다는 것을.


