웹 컴포넌트, 오랜 친구

872025년 11월 10일3

릴리스를 앞둔 마지막 기술 회고 세션. 팀은 React 19에서 이루어진 크고 작은 변화들을 하나씩 되짚어보고 있었다. 그러던 중, 한 엔지니어가 ‘웹 컴포넌트(Web Components) 지원 향상’ 항목을 가리키며 말했다.

“솔직히 말해, 이 작업은 서버 컴포넌트나 Actions에 비하면 우선순위가 낮다고 생각했습니다. 하지만 프로젝트가 끝난 지금, 이 개선이 얼마나 중요한 의미를 갖는지 다시 보게 됩니다.”

그의 말에 팀원들은 조용히 고개를 끄덕였다.

과거, React 커뮤니티의 일부에서는 다른 기술에 대해 다소 배타적인 시선이 존재했던 것이 사실이다. 특히 웹 컴포넌트는 React의 컴포넌트 모델과 경쟁하는 것처럼 비춰지기도 했다. 이로 인해 React 애플리케이션 안에서 웹 컴포넌트를 사용하는 것은 기술적으로도, 문화적으로도 쉽지 않은 일이었다.

하지만 React 19 개발팀의 생각은 달랐다.

“우리의 목표는 React 제국을 건설하는 것이 아닙니다.” 앤드류 클라크가 말했다. “우리의 목표는 개발자가 더 나은 웹 애플리케이션을 만들도록 돕는 것이죠. 만약 웹 컴포넌트로 만들어진 훌륭한 디자인 시스템이나 비디오 플레이어가 있다면, React 개발자는 그것을 아무런 마찰 없이 가져다 쓸 수 있어야 합니다.”

이러한 철학의 변화는 React 19의 웹 컴포넌트 지원 개선 작업으로 이어졌다. 팀은 더 이상 웹 컴포넌트를 ‘외부 기술’로 취급하지 않았다. 그들은 웹 컴포넌트를 웹 플랫폼이라는 거대한 생태계의 ‘오랜 친구’이자, 존중해야 할 동료로 받아들였다.

이 관점의 변화는 구체적인 기술 개선으로 나타났다.

  • React는 이제 웹 컴포넌트의 커스텀 프로퍼티(Custom Properties)를 일반 prop처럼 자연스럽게 처리했다.
  • 커스텀 이벤트(Custom Events) 역시 React의 이벤트 시스템과 매끄럽게 연동되었다.
  • 개발자들은 더 이상 ref나 복잡한 래퍼(wrapper)를 사용하지 않고도, JSX 안에서 웹 컴포넌트를 마치 네이티브 HTML 태그처럼 편안하게 사용할 수 있게 되었다.

이것은 단순히 기술적 호환성을 높인 것 이상의 의미를 가졌다. 그것은 React의 성숙을 보여주는 상징적인 사건이었다.

“우리는 이제 모든 것을 React의 방식으로 해결하려는 오만에서 벗어났습니다.” 로렌 탄이 덧붙였다. “우리는 웹 표준이라는 거대한 흐름을 인정하고, 그 안에서 React가 가장 잘할 수 있는 역할에 집중하기로 한 겁니다.”

React 19는 이 개선을 통해, 개발자들에게 더 넓은 선택의 자유를 주었다. 그들은 이제 특정 기술에 얽매이지 않고, 당면한 문제를 해결하는 데 가장 적합한 도구를 자유롭게 선택하고 조합할 수 있게 되었다. React 생태계의 컴포넌트든, 웹 표준 기술인 웹 컴포넌트든, 그 경계는 허물어졌다.

이 작은 변화는 React가 더 이상 고립된 섬이 아니라, 더 넓은 웹 플랫폼이라는 대륙과 연결된 반도가 되었음을 선언하는 것이었다. 그리고 이러한 개방성과 포용성이야말로, React가 앞으로도 오랫동안 사랑받는 기술로 남을 수 있는 가장 중요한 원동력이 될 터였다.