본문으로 건너뛰기
← 블로그로 돌아가기
개발 2025년 12월 15일

React vs Astro — 정적 사이트에 뭘 쓸까

포트폴리오, 블로그, 랜딩 페이지에 React가 필요할까? Astro와의 실전 비교.

React Astro 정적 사이트 성능

정적 사이트의 정의

여기서 “정적 사이트”란 콘텐츠 중심 사이트를 말한다. 블로그, 포트폴리오, 랜딩 페이지, 문서 사이트. 로그인이나 실시간 데이터가 필요 없는 사이트.

이런 사이트에 React를 쓰는 건 트럭으로 편의점에 가는 것과 비슷하다. 도착은 하지만 과하다.

번들 사이즈 비교

동일한 포트폴리오 사이트를 React(Next.js SSG)와 Astro로 만들었을 때:

항목Next.js SSGAstro
총 JS~95KB~2KB
HTML서버 렌더링 + 하이드레이션순수 HTML
First Load JS~85KB (React 런타임)0KB
LCP1.2초0.5초

Astro는 기본적으로 JavaScript를 보내지 않는다. 인터랙션이 필요한 컴포넌트에만 선택적으로 JS를 추가한다.

React가 필요한 경우

  • 복잡한 상태 관리: 폼, 필터, 장바구니 등 클라이언트 상태가 많은 경우
  • 실시간 업데이트: WebSocket, SSE 기반 라이브 데이터
  • SPA 네비게이션: 페이지 전환 시 상태를 유지해야 하는 경우
  • 팀의 기술 스택: 팀 전체가 React에 익숙하고, 새로운 프레임워크 학습 비용을 감당하기 어려운 경우

Astro가 더 나은 경우

  • 콘텐츠 중심: 블로그, 포트폴리오, 문서
  • SEO 중요: 검색 노출이 핵심인 사이트
  • 성능 중요: Core Web Vitals 점수가 비즈니스에 영향
  • 빠른 구축: 마크다운/MDX로 콘텐츠를 관리하고 싶은 경우

Astro Islands — 둘 다 쓰기

Astro의 “Islands Architecture”는 정적 HTML 안에 인터랙티브한 컴포넌트(React, Vue, Svelte)를 섬처럼 끼워넣는 구조다.

---
import StaticHeader from './StaticHeader.astro';
import InteractiveSearch from './Search.tsx';
---

<StaticHeader />
<!-- 이 부분만 React가 로드됨 -->
<InteractiveSearch client:visible />

client:visible은 컴포넌트가 뷰포트에 들어올 때만 JavaScript를 로드한다. 페이지 상단의 정적 콘텐츠가 먼저 렌더링되고, 스크롤해서 검색 컴포넌트가 보일 때 React가 로드된다.

이 방식이면 “전체를 React로 만들 것인가, 말 것인가”의 이분법에서 벗어날 수 있다.

빌드 속도

규모Next.js SSGAstro
10페이지5초1초
100페이지15초3초
1000페이지60초10초

Astro의 빌드 속도가 빠른 이유는 JavaScript 번들링 단계가 없기 때문이다. HTML을 직접 생성한다.

DX (Developer Experience) 비교

항목React (Next.js)Astro
라우팅파일 기반파일 기반
스타일CSS Modules, styled-components, TailwindScoped CSS, Tailwind
콘텐츠 관리MDX (추가 설정 필요)Content Collections (내장)
타입 안전성TypeScriptTypeScript
생태계매우 풍부성장 중
러닝 커브중간낮음 (HTML을 안다면)

Astro의 .astro 파일은 HTML과 거의 같다. JSX 문법을 모르는 사람도 바로 쓸 수 있다.

마이그레이션

기존 Next.js SSG 사이트를 Astro로 마이그레이션하는 건 생각보다 쉽다.

  1. 페이지 컴포넌트를 .astro로 변환 (JSX → Astro 템플릿)
  2. 정적 컴포넌트는 그대로 .astro
  3. 인터랙티브 컴포넌트는 .tsx로 유지하고 client:* 디렉티브 추가
  4. CSS/Tailwind는 거의 그대로 사용 가능
  5. Content Collections로 콘텐츠 관리 전환

Karnel Labs 사이트 마이그레이션은 하루 만에 끝났다. 대부분의 시간은 JSX를 Astro 템플릿으로 변환하는 데 쓰였다.

결론

정적 사이트에는 Astro가 더 적합하다. 성능, 빌드 속도, SEO 모두에서 유리하고, 필요하면 React를 부분적으로 쓸 수 있다. “기본은 Astro, 인터랙션이 필요한 곳만 React”가 2026년 정적 사이트의 최적 조합이다.