React의 심판: 업계는 단일 문화를 넘어서고 있는가?

10년 넘게 React는 프론트엔드 개발의 중력 중심 역할을 해왔습니다. React는 웹을 정적인 페이지의 집합에서 고도로 상호작용하는 애플리케이션의 세계로 변화시켰으며, 선언적 UI와 컴포넌트 기반 아키텍처의 힘을 업계에 소개했습니다. 하지만 최근 몇 년 사이, 감정의 뚜렷한 변화가 나타나고 있습니다.

유명한 블로그 포스트부터 Hacker News에서의 뜨거운 토론에 이르기까지, 점점 더 많은 개발자와 CTO들이 React가 "모든 것을 못으로 보이게 만드는 격언 속의 망치"가 된 것은 아닌지 의문을 제기하고 있습니다. 이제 대화의 주제는 단순히 React가 "좋은가"가 아니라, 그 지배력이 기술적 우월성의 결과인지, 아니면 네트워크 효과와 노동 차익 거래의 자기 영속적 순환의 결과인지에 대한 것입니다.

거인에 반대하는 논거

React의 비판론자들은 이 프레임워크가 기술 부채가 DNA에 박혀 있는 비대해진 생태계로 진화했다고 주장합니다. 불만 사항은 일반적으로 성능, 복잡성, 거버넌스의 세 가지 범주로 나뉩니다.

1. 성능 세금

비판론자들 사이에서 반복되는 주제는 React 애플리케이션의 "JS-heavy"한 특성입니다. 많은 이들이 Virtual DOM (VDOM)과 hydration 패턴—서버가 HTML을 렌더링하고 클라이언트가 그 HTML을 JavaScript로 다시 "re-hydrates"하는 방식—이 특히 저사양 하드웨어에서 느린 사용자 경험을 만든다고 주장합니다.

"기본적으로, 당신은 두려운 hydration pattern을 얻게 됩니다. 서버의 JavaScript로 모든 계산을 수행하고(만세!), HTML을 즉시 제공하고(만세! 만세!) ... 그리고 서버에 있는 것과 똑같은 JavaScript를 다시 제공합니다(어—잠깐, 뭐라고?)"

일부 팀은 React에서 벗어나 native DOM API나 HTML-first 아키텍처로 전환함으로써 즉각적인 이득을 얻었다고 보고했습니다. 예를 들어, Microsoft Edge는 Web Components와 HTML-first 접근 방식을 채向하여 저사양 하드웨어 사용자들에게 상당한 이점을 제공한 것으로 알려졌습니다.

2. 인지 부하와 "미친 짓"

React의 멘탈 모델은 한때 단순함으로 찬사를 받았지만, Hooks의 도입과 그에 따른 상태 관리의 복잡성은 많은 이들을 좌절하게 만들었습니다. useEffectuseMemo에 대한 논쟁은 비판의 중심점이 되었으며, 일부는 React가 성능을 내는 솔루션을 구현하기 너무 어렵게 만든다고 주장합니다.

비판론자들은 React를 작성하는 "올바른" 방법이 끝없이 논쟁의 대상이 되며, API 디자인이 종종 우유부단하게 느껴진다고 지적합니다. 이는 개발자들이 애플리케이션의 성능을 유지하기 위해 "민속 전설"과 오래된 패턴들 사이의 지뢰밭을 헤쳐 나가야 하는 상황을 초래했습니다.

3. 생태계 종속성 및 거버넌스

Next.js의 부상은 새로운 긴장감을 불러일으켰습니다. Next.js는 React 앱을 구축하는 강력한 프레임워크를 제공하지만, 일부 개발자들은 이것이 Vercel vendor lock-in의 수단이 되었다고 느낍니다. 또한, 최근 React Server Components (RSC)에서의 보안 취약점과 이러한 공개를 다루는 미흡한 방식은 프로젝트의 거버넌스에 대한 우려를 불러일으켰습니다.

반론: 왜 React는 여전히 승리하는가

비판의 공세에도 불구하고, React는 여전히 업계 표준으로 남아 있습니다. 지지자들은 "React 단일 문화"가 사실은 안정성과 성숙도의 신호라고 주장합니다.

생태계의 힘

많은 이들에게 React 커뮤니티의 엄청난 규모는 가장 큰 특징입니다. 라이브러리, 문서, 그리고 방대한 경험 있는 개발자 풀은 기업들에게 가장 안전한 선택이 됩니다. 한 댓글 작성자는 "React는 우리가 시도해본 다른 모든 JS 프레임워크를 제외하고 최악의 JS 프레임워크입니다"라고 언급했습니다.

JSX의 우아함

React 런타임에 반감을 가진 이들조차 JSX에 대한 애정은 인정하는 경우가 많습니다. 단일 파일 내에서 선언적 스타일과 명령형 스타일을 결합할 수 있는 능력은 많은 이들에게 UI 개발의 혁a적인 돌파구로 여겨집니다. 이러한 영향은 React 런타임을 피하면서 React와 유사한 구문을문을 사용하는 Astro와 같은 다른 프레임워크에서도 분명하게 나타납니다.

컴포넌트 기반의 합리성

지지자들은 그 대안—수동 DOM 조작—이 복잡한 애플리케이션에서는 재앙의 레시피라고 주장합니다. 선언적, 컴포넌트 기반 접근 방식은 개발자가 모든 상태 전환을 수동으로 관리하는 대신, 상태에 기반하여 UI가 어떻게 보여야 하는지를 설명할 수 있게 해줍니다.

대안들: 개발자들은 어디로 향하는가?

"fat client" 시대가 저물기 시작하면서, 개발자들은 다양한 경로를 탐색하고 있습니다:

  • The Minimalists: HTMX, Hotwire, 또는 vanilla JS로 이동하여 JavaScript 페이로드를 줄이고 서버 사이드 렌더링으로 돌아가고자 합니다.
  • The Compiler Enthusiasts: Svelte 또는 Solid.js로 전환하여, 브라우저가 아닌 빌드 단계의 컴파일러로 "작업"을 옮겨 Virtual DOM의 필요성을 제거합니다.
  • The Functionalists: 엄격한 타입 시스템과 예측 가능한 상태 관리를 위해 Elm을 채택합니다 (The Elm Architecture).
  • The Pragmatists: 더 명확한 구조와 내장된 최적화 기능을 위해 Vue 또는 Angular를 사용합니다.

결론: Post-React 시대?

업계가 "post-React" 시대로 진입하고 있는 것일까요? 전체 시장 점유율 측면에서는 아닐지라도, 지적 지배력 측면에서는 확실히 그렇습니다. 대화의 주제는 "React를 어떻게 배울까?"에서 "이 프로젝트에 정말 React가 필요한가?"로 바뀌었습니다.

엔지니어링 리더들에게 주는 교훈은 명확합니다: "모두가 알고 있다"는 이유로 React를 선택하는 반사적 행동은, 채용의 용이성이라는 이점보다 더 큰 기술 부채를 생성할 수 있습니다. 웹의 미래는 단일한 지배적인 프레임워크가 아닐 수도 있습니다. 그보다는 프로젝트의 제약 조건에 따라 도구를 선택하는, 생태계의 관점성(momentum)보다 더 미묘한 접근 방식이 될 것입니다.

Sources