본문 바로가기
카테고리 없음

2026 풀스택 스택 업그레이드 실전 가이드 — React 19·Node 22 LTS·TypeScript 5.7 마이그레이션 완벽 정복

by bamsik 2026. 3. 2.
반응형

지금 당장 스택 업그레이드가 필요한 이유

여전히 React 18, Node.js 20, TypeScript 5.3을 사용하고 있다면 이 글을 주목하라. 2026년 기준으로 이 조합은 지난 시대의 기본값이 됐다. 단순히 새 기능을 놓치는 게 아니다. 실질적인 비용이 발생하고 있다:

  • 🔴 Node.js 20 EOL — 2026년 4월 지원 종료. 보안 패치 없음
  • 🔴 번들 크기 20~30% 비대 — 최신 툴링 대비
  • 🔴 TypeScript strict 모드로 잡힐 버그들이 런타임까지 살아남음
  • 🔴 CI/CD 파이프라인 불필요하게 느림

이 글은 한 주말에 실전 프로젝트를 다운타임 없이 업그레이드하는 단계별 실전 가이드다.

2026 스택 업그레이드 로드맵 전체 개요

컴포넌트 현재 (구버전) 목표 (2026 기준) 주요 변경점
Node.js v20 (EOL) v22 LTS 성능 향상, 보안 패치
TypeScript 5.3 5.7 strict 추론 강화
React 18 19 컴파일러, Actions
npm v10 v11 lock 파일 성능

STEP 1: 업그레이드 전 현황 감사 (Audit)

무조건 건드리기 전에 먼저 현재 상태를 스냅샷으로 찍어라. 롤백 포인트를 만드는 것이다.

# 현재 상태 스냅샷
node -v > .stack-audit.txt
npm -v >> .stack-audit.txt
npx tsc --version >> .stack-audit.txt

# 오래된 패키지 확인
npm outdated >> .stack-audit.txt

# 보안 취약점 점검
npm audit >> .stack-audit.txt

TypeScript strict 모드 위반 건수를 먼저 파악하라. 많다고 당황하지 말고 우선순위를 정하면 된다:

# tsconfig 변경 없이 strict 모드 위반 개수 확인
npx tsc --strict --noEmit 2> ts-strict-errors.txt
wc -l ts-strict-errors.txt

# 50개 미만 → 주말 오전에 처리 가능
# 200개 이상 → TypeScript 먼저 고치고 나머지 진행

STEP 2: Node.js v22 LTS 업그레이드

런타임을 먼저 올려야 한다. 프레임워크보다 항상 런타임이 우선이다.

# nvm 사용 (권장)
nvm install 22
nvm use 22
nvm alias default 22

# 버전 확인
node -v  # v22.x.x 출력되어야 함

# npm도 함께 업그레이드
npm install -g npm@11

# 네이티브 모듈 재빌드 (필수!)
npm rebuild

⚠️ 흔한 오류: better-sqlite3, bcrypt, sharp 등 네이티브 모듈에서 ABI 불일치 에러가 발생할 수 있다. 이때는 npm rebuild 모듈명으로 개별 재빌드하면 해결된다.

STEP 3: TypeScript 5.7 업그레이드

5.5나 5.6에 멈추지 말고 5.7로 직행하라. 5.7의 narrowing 개선 덕분에 strict 모드 위반 수정 작업이 훨씬 쉬워진다.

npm install -D typescript@latest

# tsconfig.json 2026 기본값으로 업데이트

권장 tsconfig.json 설정 (2026 기준):

{
  "compilerOptions": {
    "target": "ES2024",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "lib": ["ES2024", "DOM"],
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true,
    "skipLibCheck": true
  }
}

STEP 4: React 19 마이그레이션

React 19는 컴파일러가 핵심이다. useMemo, useCallback, React.memo를 수동으로 쓰던 최적화가 자동화된다. 그리고 Actions로 서버/클라이언트 폼 처리가 완전히 바뀐다.

npm install react@19 react-dom@19

# 마이그레이션 코드모드 실행 (자동 수정)
npx react-codemod@latest --list
npx react-codemod@latest update-react-imports

# 타입 정의 업데이트
npm install -D @types/react@19 @types/react-dom@19

React 19에서 달라진 핵심 API

  • use() 훅 — Promise와 Context를 동기적으로 읽기
  • useActionState — 폼 제출과 비동기 액션 상태 관리
  • useFormStatus — 부모 폼의 제출 상태 접근
  • useOptimistic — 낙관적 UI 업데이트 내장
  • ref as prop — forwardRef 더 이상 필요 없음

STEP 5: 패키지 매니저 최적화

모노레포나 대형 프로젝트라면 pnpm v9으로 전환을 고려하라. npm 대비 디스크 공간 절약과 설치 속도에서 눈에 띄는 차이가 난다:

npm install -g pnpm@9

# 기존 프로젝트에 적용
pnpm import  # package-lock.json → pnpm-lock.yaml 변환
rm -rf node_modules package-lock.json
pnpm install

업그레이드 후 검증 체크리스트

업그레이드 완료 후 반드시 확인해야 할 항목들:

  • npm run build — 빌드 성공 확인
  • npm run test — 전체 테스트 통과 확인
  • npx tsc --noEmit — TypeScript 에러 0건 확인
  • ☐ 번들 크기 비교 — 이전 대비 개선 확인
  • ☐ Lighthouse 성능 점수 측정
  • ☐ 스테이징 환경 배포 후 E2E 테스트
  • ☐ 네이티브 모듈 정상 동작 확인

2026 추천 풀스택 조합 정리

SaaS / 콘텐츠 플랫폼

Next.js 15 + TypeScript 5.7 + Prisma 6 + PostgreSQL
서버 컴포넌트 + SSR로 SEO와 성능을 동시에. Prisma 6는 더욱 강화된 타입 안전성 제공.

API 서버 / 백엔드

Hono + Node.js 22 + DrizzleORM + Turso
초경량 엣지 친화적 프레임워크. Express 대비 10배 빠른 요청 처리.

실시간 앱

Bun 1.2 + ElysiaJS + Supabase Realtime
Bun의 네이티브 WebSocket과 Supabase 실시간 구독의 조합.

결론 — 지금이 업그레이드 적기

Node.js 20 EOL이 2026년 4월이다. 지금 당장 v22 LTS로 올려야 보안 패치를 계속 받을 수 있다. React 19의 컴파일러는 수동 최적화 코드를 대거 제거해 코드베이스를 가볍게 만든다. TypeScript 5.7 strict 모드는 잠재적 버그를 컴파일 타임에 잡는다.

한 주말이면 충분하다. 위 가이드대로 순서를 지키고, 각 단계마다 커밋하면 롤백도 안전하다. 지금 시작하자.


📎 참고 자료

반응형