발행 시간: 2025-04-14T22:23:00.000Z
React와 Next.js의 문제점
프론트엔드 개발을 할 때 많은 사람들이 React와 Next.js를 기본 선택처럼 사용합니다. 그렇지만 리액트와 넥스트는 무겁고 복잡합니다. 이번 글에서는 리액트와 넥스트가 가진 문제점들을 정리해보겠습니다.
리액트/넥스트 문제점들:
1. 플러그인/모듈 호환성 문제와 ERESOLVE 오류
리액트 생태계는 수많은 플러그인과 모듈들로 구성되어 있습니다. 하지만 이러한 모듈들은 서로 다른 버전의 리액트 또는 다른 내부 의존성을 요구하면서 아래와 같은 오류를 자주 만나게 됩니다.
ERESOLVE unable to resolve dependency tree
해결하기 위해선 강제 설치(--legacy-peer-deps
)를 하거나 특정 모듈 버전을 수동으로 조정해야 하는데, 이는 초보자뿐만 아니라 숙련자에게도 골치 아픈 일입니다. 우리는 문제를 해결하기 위해 리액트를 사용하는데, 그 해결법이 오히려 문제를 야기하고 기술적 부채를 야기합니다. 리액트는 플러그인과 모듈을 프로젝트의 문제를 해결하는 지름길처럼 사용하는데, 그게 문제를 만들어 낸다는 겁니다.
2. 무겁고 복잡한 프로젝트 그리고 지나치게 큰 모듈 크기
넥스트 팀조차도 공식적으로 속도가 느리다는 점을 인정했습니다. 최근 리액트/넥스트 프로젝트를 한 경험을 말하자면 20 페이지도 안되는 웹사이트를 만들기 위해, 2GB 가까이 되는 모듈들을 설치해야 했습니다. 이상한 점은 모듈 간의 호환성 문제 뿐만 아니라 모듈 설치가 자주 멈추거나 설치하는 시간이 오래 걸립니다. 그리고 복잡하고 무거운 리액트/넥스트 프로젝트들은 저사양 컴퓨터에서는 개발 서버가 작동을 하지 않거나 빌드가 안됩니다.
3. 웹앱 시스템으로 발생하는 문제들
이벤트 훅, 라우터, 컴포지션 API 등등 이런 웹앱 프레임워크들이 공동적으로 가지고 있는 기능들은 불필요한 학습과 웹앱의 문제들을 해결하기 위한 노력이라 할 수 있습니다. 그 기능들이 필요해진 이유는 리액트 개발자들의 웹앱에 대한 욕심에서 발생했습니다.
결국 사용자가 다운로드 받아야 하는 웹페이지의 무게가 불필요하게 늘어납니다. 또한 페이지의 빌드를 사용자에게 떠넘기니 사용자들로부터 불필요한 컴퓨터 하드웨어 리소스 낭비가 일어납니다. 리액트 개발자들이 환경 보호 운동가이거나 환경을 핑계로 비건을 하는 사람이라면, 그건 정신 나간 광대를 보는 것과 같습니다.
제가 생각하는 리액트(웹앱)의 대단함은 서버에서 발생하는 웹사이트 빌드 비용을 클라이언트에게 떠넘긴 것 입니다. 정말로 불필요하고 양심 없는 시스템 디자인이라고 할 수 있습니다. 그 방향으로 가던 리액트 개발자들은 기어코 서버 사이드 렌더링과 하이브리드의 필요성을 느껴 넥스트를 만들었습니다…
그게 왜 문제일까요? 이들은 문제를 해결하기 위해 리액트를 발전시켜 왔고 그로 인해 발생하는 문제들을 해결하기 위해 넥스트를 만들었습니다. 이를 밖에서 바라보면 남들이 HTML, CSS, 자바스크립트 그리고 백엔드 기술들로 아름답고 하드웨어 리소스 남비가 적은 효율적인 웹사이트를 개발하고 운영할 때, 리액트 개발자들은 같은 결과물과 문제점들을 더 많은 노력과 시간 낭비를 통해 얻는다는 것입니다.
4. 취업하려면 리액트를 해야하는 세상
취업하려면 리액트를 할 줄 알아야 합니다. 자바의 나라 한국에서 일어나는 자바 의존의 문제가 리액트에서도 나타납니다. 리액트로 성장한 CTO/Lead/시니어들이 다시 리액트를 선택하고 의존하는 겁니다. 다만 자바는 훌륭하지만 리액트는 그렇지 않다는 게 차이점 입니다.
그리고 현실이 그렇다 하더라도 리액트와 넥스트의 문제점을 모두가 알아야 합니다. 리액트에 대한 나쁜 평가가 나오면 현실 이야기 하면서 취업 준비생들을 방패 삼아 리액트를 보호하지 말아야 합니다.
5. 프로젝트 유지보수, 빠른 개발, Vite로 빠른 빌드 어쩌구 스캠
리액트에서 프로젝트 개발 서버나 빌드가 느리고 무겁고 문제가 발생한다면, 리액트 개발자들이 밀고 있는 리액트의 시스템 디자인에 문제가 있는 겁니다. 프로젝트 유지보수, 빠른 개발, 빠른 빌드는 리액트만 할 수 있는 게 아니니 다른 웹 프레임워크나 웹사이트 컴파일러를 쓰면 해결이 됩니다.
결론
리액트와 넥스트는 강력한 도구이지만, 저는 추천하지 않습니다. 쓸 수 밖에 없는 경우도 있겠지만, 오랜 시간과 노력으로 기술적 부채를 만들어 내는 기술이니 잘 생각하고 결정해야 합니다.