Next.js 15.1+는 Vercel 외 환경에서 사실상 쓸 수 없다

23 hours ago 1

  • Next.js 15.1.8부터 메타데이터 처리 방식이 변경되어 Vercel 이외의 배포 환경에서 심각한 문제 발생
    • 메타데이터가 HTML head에 직접 렌더링되지 않고 "메타데이터 스트리밍"이라는 방식으로 따로 전송됨
  • 검색 엔진이 자바스크립트를 실행하지 않으면 메타데이터가 아예 노출되지 않아 SEO가 치명적으로 훼손
    • 크롤러 감지(htmlLimitedBots)로 예외 처리하지만 완벽하지 않음
  • Vercel이 아닌 Netlify, Cloudflare, AWS 등은 OpenNext로 호환 시도 중이나, 실제로는 Next.js가 Vercel 인프라에 너무 강하게 묶여 포팅 자체가 어렵고 버그가 많음
  • 정적 빌드도 메타데이터가 HTML head에 포함되지 않으며, 모든 배포 환경이 복잡한 크롤러 감지/JS 실행을 강요받는 구조로 바뀜
  • 보안 이슈(2025년 3월 공개된 치명적 취약점)
    • 메타데이터 스트리밍을 피하려고 구버전을 고집하면 심각한 보안 취약점에 노출됨(패치는 15.2.3에서만 제공)
  • 메타데이터 스트리밍은 실제로 페이지 성능 문제를 감추고, SEO에도 부정적 영향
  • 결론:
    Next.js는 오픈소스처럼 보이지만, 사실상 Vercel 종속이 심각한 프레임워크가 되었으므로 새 프로젝트에는 다른 선택지를 고려하는 것이 현명함

개요

  • Next.js 15.1.8 버전부터 Vercel을 제외한 환경에서 metadata 처리에 심각한 문제가 발생함
  • 이는 Next.js의 본질적으로 Vercel 인프라에 대한 종속성 심화와 검색 엔진 최적화(SEO) 저하, 심지어 보안 위협까지 야기함

문제의 시작: metadata streaming의 도입

  • 2024년, Vercel은 metadata streaming이라는 실험적 기능을 도입함
  • 기존 방식과 달리 metadata(tags: title, description, Open Graph 등)를 HTML ``에 직접 렌더링하지 않고, 초기 페이지 로딩 이후 별도로 전송
  • 이 기능은 JavaScript 실행이 필요해짐

Vercel의 기술적 설명과 실질적 문제점

  • 도입 배경: metadata 생성의 컴퓨팅 병목 현상 해소 목적
  • 하지만 실제 metadata는 대부분 정적이고 소량(1KB 미만)의 데이터임
  • 서버 round-trip 비용이 inline 처리보다 더 큼
  • 동적 metadata는 극히 일부 예외적 케이스
  • metadata streaming의 구현 복잡성과 혼란 가중

성능 문제의 배경

  • 일부 개발자가 외부 API 연동 등에서 metadata 생성 지연이라는 성능 이슈를 겪었음
  • Vercel은 이 문제를 해결하고자 스트리밍 방식을 개발함

검색 엔진 크롤러와 SEO 영향

  • JavaScript를 실행하지 않는 검색 엔진은 metadata를 읽지 못함
  • 이에 따라 SEO에 큰 악영향을 줌
  • 해결책으로 Vercel은 서버가 크롤러를 감지할 경우 스트리밍을 건너뛰고 HEAD에 metadata를 넣는 htmlLimitedBots 기능을 제공함

기타 클라우드 제공업체의 한계

  • Netlify, Cloudflare, AWS 등도 Next.js와 호환을 위해 OpenNext라는 어댑터 프로젝트를 만듦
  • 하지만 Next.js가 너무 Vercel에 밀접하게 종속되어 있어, 이식 시 리버스 엔지니어링이 필요함
  • OpenNext의 품질 문제로 인해 실질적으로 제대로 동작하지 않음

정적 빌드조차 불완전

  • 정적 사이트 빌드(Static Build)도 metadata가 더는 HTML head에 포함되지 않음
  • React Server Components와 함께 번들되므로 JavaScript 실행 필요
  • 기본 HTML metadata를 위해서 크롤러 감지 로직까지 직접 구현해야 하는 불합리함 발생

심각한 보안 취약점 및 업데이트 문제

  • 2025년 3월 21일, 치명적 취약점(보안등급 9.1, GHSA-f82v-jwr5-mffw/CVE-2025-29927) 공개됨
  • 이 취약점은 특정 헤더 조작을 통해 미들웨어의 인증 보안을 우회할 수 있음
  • 취약점 패치는 Next.js 15.2.3에 적용되었으나, metadata streaming을 피하고자 15.1.8에 머물 경우 보안에 매우 취약

스트리밍 도입이 가져온 부정적 결과

  • metadata streaming은 숨겨진 성능 문제를 더욱 감춤
  • 페이지 메타데이터 처리 지연 시 실사용자는 인지하지 못함
  • 검색 엔진 크롤러는 느린 응답에 따라 SEO 점수 페널티를 부여하게 됨

결론

  • Next.js는 오픈소스 프레임워크라는 위장된 Vercel 벤더 록인으로 변질됨
  • 차기 프로젝트의 기술 스택 선택 시, Next.js 대신 타 프레임워크를 고려하는게 더 현명

Read Entire Article