이 주제는 꽤 오래전에 임시 글로 저장해 두었던 주제이다. 최근 리액트와 Next.js에 대한 포스팅을 자주 했는데 이 시점에 마무리 느낌의 글을 쓰는 것이 좋을 것 같아 쓴다.
리액트를 처음 고민하게 된 계기는 별거 없다. vue보다 핫해서 고민하게 되었다. 사실 냉정히 얘기하면 우리 회사 규모에서 서비스를 만드는 데 있어서 Vue + Nuxt면 충분했고, 오히려 효율도 더 좋았다. 개인적으로 개발을 모르는 퍼블리셔도 조금만 알려주면 페이지를 만들 수는 있다는 것이 가장 큰 이점이었다.
그랬지만 대부분의 프론트엔드 기술 스택을 리액트와 Next.js로 옮기고 있다. 앞에서 말한 핫하다는 점은 몇 가지가 있다.
첫째로 스폰서가 메타다. 큰 벤더가 스폰서라는 것은 꽤 중요하다. 게다가 Next.js를 리딩하고 있는 곳은 Vercel이다. 그러다 보니 안정성이 다른 오픈소스 프로젝트에 비해 월등히 좋다는 느낌을 받는다. (실제로 월등히 좋다고 느낄 정도로 깊게 써보진 못한 것 같다.)
둘째로 커뮤니티 규모가 다르다. Vue + Nuxt도 꽤 큰 커뮤니티를 가지고 있지만 리액트와 Next.js 가 훨씬 크다. 물론 이 규모라는 것은 jQuery와 비슷한 것 같다. 즉, 오래된 것도 한몫한다는 것이다.
셋째는 의무감이다. 프론트엔드 개발을 하는 데 있어서, 리액트와 Next.js를 경험하지 않고 이 세대를 건너뛰면 안 될 것 같다는 생각이 들었다. 모던 웹 프레임워크(또는 라이브러리)라고 해서 앵귤러를 시작으로 (정확지는 않다) 리액트, Vue 등이 나오고 최근 Svelte와 같은 시도도 나오고 있는데 이 세대에서 리액트를 경험하지 않고, 언젠가 나올 다음 기술로 넘어가면 큰 구멍이 생기는 것 같았다.
생각보다 얄팍한(?) 이유로 시작했지만, 꽤 익숙해지고 있어서 뿌듯하다. 계기를 쓰다 보니 좋은 점만 쓰게 되었는데, 쓴 이후에 느낀 점을 써보면, 생각보다 써드 파티 시장이 협소한 것 같다.
Vue와 리액트는 라이브러리에 가까운 느낌이었고 Nuxt와 Next.js는 프레임워크에 가까운 느낌이었다. 그런데, Nuxt는 굉장히 많은 써드파티 라이브러리가 있지만 Next.js는 그렇지 않았다. 억측이나마 추측해 보자면 Vue와 Nuxt의 태생이 중국이고 중국인들이 많이 참여한 프로젝트다 보니, 중국의 많은 개발자들이 써드파티 라이브러리를 공개한 것이 아닌가 생각한다. 단적으로 모바일에서 거의 필수로 사용되는 Infinite Scroll 만 해도 Nuxt에서는 라이브러리 설치 후 컴포넌트 수준에서 매우 쉽게 개발할 수 있는데, Next.js에서는 사실상 거의 직접 구현해야만 한다.
사실 어떤 기술이 더 좋다 나쁘다를 평가할 수는 없고, 그저 느낀 점은 두 진영의 접근 방식이 다르다는 것이다. 최근 Next.js에서 내놓은 App Router 방식 + 서버 컴포넌트만 봐도 컴포넌트를 바라보는 관점이 정말 다르다는 것이 느껴진다.
그런 점에서 두 기술 다 경험해 볼 수 있다는 것은 굉장히 좋은 기회였다는 생각을 하게 되었다. 단순히 아티클을 보고 구조만 보고 이해하는 것이 아니라 직접 개발하고 문제와 직면해 볼 기회가 있었다는 게 감사할 일이다.
과거에 잠깐, “왜 나는 핫한 리액트로 시작하지 않고 Vue로 시작해서 뒤쳐지고 있는가?”라고 생각했던 적이 있는데 어리석다는 생각도 들지만, 참으로 사람이 어떤 태도로 받아들이냐가 중요하다는 생각이 든다.