- Gumroad는 새 프로젝트 Helper에서 가벼운 프런트엔드를 기대하며 htmx를 검토했지만, 복잡한 UX 요구가 커지면서 React/Next.js로 전환함
- 단순 상호작용에는 htmx가 유망했지만, 동적 검증과 조건부 필드가 있는 폼에서는 서버 측 로직이 장황해져 개발 흐름이 부자연스러웠음
- 워크플로 빌더의 드래그앤드롭, 실시간 협업, 복잡한 상태 관리, 동적 폼 생성은 React 생태계와 컴포넌트 모델에서 더 직접적으로 구현됨
- 문제 해결 자료와 AI 도구 지원은 Next.js와 React 쪽이 더 풍부했고, htmx는 오픈소스 학습 데이터 부족 때문에 개발 속도에서 불리했음
- htmx는 기존 서버 렌더링 앱이나 단순한 상호작용 모델에는 적합할 수 있지만, Helper처럼 상태가 많은 인터페이스에는 React와 Next.js가 더 잘 맞았음
Helper에서 htmx를 검토한 배경
- Gumroad는 새 프로젝트 Helper를 시작하면서 htmx를 프런트엔드 후보로 검토함
- 초기 기대는 React가 필요 이상으로 무겁다는 기존 경험에서 나왔고, htmx가 단순한 상호작용을 가볍게 추가하는 방법이 될 수 있다고 봄
- 팀 내부에서는 htmx가 복잡해진 JavaScript 생태계를 풍자하는 밈과 비슷하다는 평가도 있었음
- Tailwind가 인라인 CSS의 다른 문법처럼 보이듯, htmx도 인라인 JavaScript의 다른 문법에 가깝다는 시각이 있었음
- Tailwind는 Gumroad의 도구 체계에 자리 잡았지만, htmx는 Helper의 목적에 맞게 확장되지 않았고 고객에게 가장 좋은 사용자 경험으로 이어지지 않았음
React/Next.js가 더 자연스러웠던 지점
-
개발 경험과 폼 처리
- htmx로도 올바른 구현은 가능했지만, Gumroad는 Next.js에서 기능을 동작시키는 과정이 더 직관적이라고 느꼈음
- 동적 검증과 조건부 필드가 있는 복잡한 폼에서는 React의 클라이언트 측 작업이 더 단순했고, htmx에서는 서버 측 로직이 길어짐
-
UX와 상호작용 제약
- htmx는 앱을 Rails/CRUD 방식으로 밀어가는 경향이 있어, 기본 경험이 평범하거나 일반적인 형태가 되기 쉬웠음
- 워크플로 빌더의 드래그앤드롭 인터페이스는 htmx에서 우회 구현이 필요했고, React 라이브러리로 얻는 매끄러운 경험보다 투박하게 느껴졌음
-
AI 도구와 문제 해결 속도
- AI 도구는 Next.js에는 익숙하지만 htmx에는 덜 익숙했으며, 그 이유로 오픈소스 학습 데이터 부족이 꼽힘
- React/Next.js 쪽 자료가 풍부해 문제가 생겼을 때 해결책을 찾는 속도가 더 빨랐음
-
복잡도와 확장성
- 프로젝트가 복잡해질수록 htmx의 단순함은 장점보다 제약에 가까워짐
- 실시간 협업과 복잡한 데이터 시각화가 추가되면서, htmx의 서버 중심 접근에서는 여러 컴포넌트 사이의 상태 관리가 점점 어려워졌음
Helper 기능별로 드러난 차이
- 드래그앤드롭: React 생태계의
react-beautiful-dnd는 적은 설정으로 매끄럽고 접근성 있는 드래그앤드롭을 제공함 - 복잡한 상태 관리: 각 워크플로 단계의 설정과 조건 로직을 실시간으로 UI에 반영하는 데
useState나 Redux 같은 React 상태 관리 방식이 더 직접적이었음 - 동적 폼 생성: 단계 유형마다 다른 설정 폼을 만들고 사용자 입력에 따라 바꾸는 작업은 React 컴포넌트 모델에서 더 직관적으로 처리됨
- 실시간 협업: 여러 사용자가 동시에 워크플로를 편집하는 기능은 WebSockets와 React로 비교적 직접 구현됐고, htmx에서는 더 복잡한 서버 측 로직과 커스텀 JavaScript가 필요했음
- 성능 최적화: 워크플로가 커지고 복잡해질수록 React의 virtual DOM,
useMemo,useCallback같은 훅으로 렌더링을 세밀하게 최적화할 수 있었음
생태계와 최종 판단
- React/Next.js 생태계는 크고 성숙해 Gumroad가 마주친 거의 모든 문제에 대한 해법을 제공함
- htmx에서는 기능을 타협하거나 직접 다시 만드는 상황이 많았고, 서드파티 서비스와 라이브러리 통합에서도 React 바인딩은 있지만 htmx 대응물이 없는 경우가 있었음
- React/Next.js로 옮긴 뒤 Gumroad는 복잡한 UX를 구축하는 데 더 잘 맞는 선택이었다고 평가함
- 더 빠르게 움직일 수 있었고, 더 몰입감 있는 사용자 경험을 만들 수 있었으며, 기존 도구와 라이브러리를 활용할 수 있었음
- Helper의 핵심 고객을 위한 앱 사용자 경험도 크게 개선할 수 있었음
- htmx의 한계가 극복 불가능한 것은 아니지만, 해결 과정이 htmx의 강점에서 벗어나 JavaScript 중심 환경에 더 자연스러운 해법으로 이동하게 만들었음
- htmx는 단순한 상호작용 모델이나 기존 서버 렌더링 앱 위에 구축된 프로젝트에는 좋은 선택이 될 수 있음
- Helper처럼 복잡하고 상태가 많은 인터페이스에서는 React와 Next.js가 더 적합했으며, Gumroad는 필요 변화와 새 기술에 따라 기술 스택을 계속 다시 평가할 수 있다고 봄