Skip to content

[ICC-391] ✨ chore: Renovate 대규모 의존성 승격 (2026-07)#298

Merged
GulSauce merged 1 commit into
developfrom
ICC-391
Jul 5, 2026
Merged

[ICC-391] ✨ chore: Renovate 대규모 의존성 승격 (2026-07)#298
GulSauce merged 1 commit into
developfrom
ICC-391

Conversation

@GulSauce

@GulSauce GulSauce commented Jul 5, 2026

Copy link
Copy Markdown
Member

major 승격

  • eslint 9→10 (+@eslint/js), typescript 5.9→6, eslint-plugin-react-hooks 5→7
  • globals 16→17, i18nexus 3→4 (+i18nexus-tools 2→3), lucide-react 0.577→1
  • react-ga4 2→3, react-pdf 9→10, puppeteer 24→25, katex 0.16→0.17
  • eslint-plugin-react-refresh 0.4→0.5, react/react-dom 19.1→19.2
  • CI: actions/checkout v4→v7, actions/setup-node v4→v6
  • Tier A minor/보안: vite 6.4(SEC), axios 1.16(SEC), mermaid 11.15(SEC), radix 1.6, react-router 7.18, tailwindcss 4.3, typescript-eslint 8.62 등

breaking change 해소

  1. TS6: deprecated baseUrl 제거 (paths는 tsconfig 상대 경로라 무영향)
  2. eslint10 recommended no-useless-assignment: text-animate.tsx dead-store 제거
  3. react-hooks7 신규 컴파일러 rule(refs/set-state-in-effect/purity 등) warn 강등 → 개별 코드 수정은 후속 티켓으로 분리
  4. eslint flat config: 강등 블록에 react-hooks 플러그인 등록 + files 스코프
  5. react-pdf 10 ↔ pdfjs-dist 5.4.296 정렬 (worker/API 단일 버전 → 불일치 방지)
  6. prettier 3.9 union 타입 포맷 적용
  7. eslint ignores에 .claude 추가 → npm run lint의 벤더 스킬 코드 오염(5373 errors, pre-existing) 제외해 lint 게이트 복구 (npm run lint GREEN)

검증

  • npm run build GREEN (vite + prerender 7라우트 + sitemap)
  • npm run lint GREEN (0 errors, 82 warnings) / prettier --check . GREEN
  • react-pdf 런타임: pdfjs 단일 5.4.296 트리, API 실동작(3p 파싱) 확인

DEFER (스코프 밖)

후속 티켓 후보

  • react-hooks7 신규 rule 82 warnings 정리
  • tsc 크래시(#pages/* 매핑 유발, pre-existing) 조사

ICC-391 — Renovate 대규모 의존성 승격 (2026-07)

dependency-upgrade-cycle 스킬 실행 기록. 로컬 노트(docs/는 gitignored).
통합 커밋: 790b6a9 (branch ICC-391, develop 대비 단일 커밋)

처리 대상

오픈 Renovate PR 37건 → 결정:

세이프티 넷 정의 (프론트엔드 각색)

백엔드 스킬의 ./gradlew test 대신 클라이언트 기준으로 정의:

상태 비고
npm run build (vite + prerender 7라우트 + sitemap) ✅ GREEN 컴파일·번들·SSR 렌더 검증
npm run lint (eslint .) ✅ GREEN .claude ignore 추가 후 복구
eslint src ✅ 0 errors 유효 소스 넷
prettier --check . ✅ GREEN pre-commit 훅 통과
tsc --noEmit 제외 pre-existing 컴파일러 크래시 (아래)
react-pdf 런타임 ✅ 검증 Playwright + node 파싱

버전 승격 상세

major

대상 before → after 개선점 / 손실
eslint (+@eslint/js) 9 → 10 recommended 강화(no-useless-assignment 등). flat config 검증 엄격화
typescript 5.9 → 6 baseUrl deprecated. 크래시는 미해결(아래)
eslint-plugin-react-hooks 5 → 7 React Compiler 기반 신규 rule. pre-existing 패턴 68건 노출
globals 16 → 17
i18nexus (+tools) 3 → 4 (2 → 3) 런타임 번역 정상(/ko·/en prerender 확인)
lucide-react 0.577 → 1 첫 stable major. 아이콘 API 호환
react-ga4 2 → 3
react-pdf 9 → 10 pdfjs 5 계열로 내부 이동
pdfjs-dist 4.8 → 5.4.296 (pin) react-pdf 10 번들 버전에 정렬(v6 아님)
puppeteer 24 → 25 prerender end-to-end 정상
katex 0.16 → 0.17
eslint-plugin-react-refresh 0.4 → 0.5
react / react-dom 19.1 → 19.2
actions/checkout · setup-node v4 → v7 · v6 CI

minor / 보안 (Tier A — semver 범위 내라 lockfile만 반영)

vite 6.4 🔒 · axios 1.16 🔒 · mermaid 11.15 🔒 · radix-ui 1.6 · react-router-dom 7.18 · tailwindcss 4.3 · typescript-eslint 8.62 · framer-motion/motion 12.42 · prettier 3.9 · zustand 5.0.14 · react-toastify 11.1 · tailwind-merge 3.6 · shadcn 4.13 · @uiw/react-md-editor 4.1.1

계단식 breaking change 로그 (재사용 자산)

# 원인 조치 파일
1 @vitejs/plugin-react@6 peer = vite ^8 (vite 8 미제공) DEFER #286, plugin-react v4 유지 package.json
2 react-pdf@10pdfjs-dist@5.4.296 exact 번들 → top-level v6이면 worker/API 불일치 DEFER #292, top-level pdfjs를 5.4.296로 정렬 package.json
3 TS6: baseUrl deprecated (TS5101) baseUrl 제거 (paths는 tsconfig 상대라 무영향) tsconfig.json
4 react-hooks 7 신규 rule 68 errors (refs/set-state-in-effect/purity/static-components) 신규 rule warn 강등 + 후속 티켓 eslint.config.js
5 eslint 10 recommended no-useless-assignment 신규 error (실 dead-store) 무의미 초기화자 제거 text-animate.tsx
6 강등 블록이 react-hooks 플러그인 미등록 → flat config 검증 실패 (.cjs 등에서) files 스코프 + 플러그인 등록 eslint.config.js
7 prettier 3.9 union 타입 줄바꿈 임계 변경 해당 2파일 --write 2 src files
8 npm run lint.claude/skills/seo 벤더 코드 5373 errors 린트 (pre-existing) eslint ignores에 .claude 추가 eslint.config.js

계단식 8회지만 모두 수렴(BUILD SUCCESSFUL 도달) → 스코프 초과 아님.

react-pdf ↔ pdfjs 커플링 (핵심 리스크, 해소됨)

  • 현상: worker는 top-level pdfjs-dist/build/pdf.worker.min.mjs에서, API(pdfjs)는 react-pdf 번들에서 로드. 두 버전이 다르면 런타임 "API version does not match Worker version" 에러.
  • 원래 상태: react-pdf 9 + top-level pdfjs 둘 다 4.x → 일치(정상 동작).
  • 함정: react-pdf 10(pdfjs 5.4.296 번들) + #292의 top-level pdfjs 6 → 불일치.
  • 해소: top-level pdfjs를 5.4.296로 pin. 트리에 pdfjs 단일 버전(중복 0) → 불일치 구조적 배제. #292는 DEFER.
  • 검증: ① find node_modules -name pdfjs-dist → 단일 5.4.296. ② node로 3페이지 PDF 파싱·텍스트 추출 성공. ③ 브라우저 로드·업로드 트리거 시 불일치 에러 없음(콘솔 에러는 백엔드 미기동 Network Error뿐).
  • 잔여: UI 캔버스 렌더 end-to-end는 백엔드 업로드 게이팅으로 미확인. 단 실패 모드(버전 불일치)는 배제됨.

pre-existing 이슈 (승격 무관, 미수정)

  1. tsc 크래시resolveExternalModule Debug Failure. TS 5.9.3부터 발생, TS6에서도 지속. #pages/*./src/pages/*/index.tsx(와일드카드→특정 파일) 매핑이 유발하는 TS 컴파일러 버그로 추정. typecheck 스크립트 부재로 실제 개발엔 영향 없었음. → 후속 티켓.
  2. .claude lint 오염 → 이번 커밋 #8에서 해소.

검증 요약

npm run build      → ✅ (vite 6.72s + prerender 7라우트 + sitemap)
npm run lint       → ✅ exit 0 (0 errors, 82 warnings)
prettier --check . → ✅
react-pdf 런타임    → ✅ (단일 pdfjs 5.4.296, API 실동작)
pre-commit 훅       → ✅ 통과

prerender가 headless Chrome에서 전체 앱을 렌더 → lucide 1 · radix 1.6 · react-router 7.18 · i18nexus 4 · react 19.2 · puppeteer 25 런타임 검증됨.

남은 후속 티켓 후보

  1. react-hooks 7 신규 rule 82 warnings 정리refs/set-state-in-effect/purity 등. 일부 실버그 가능, 개별 검토 필요.
  2. tsc 크래시 조사#pages/* 매핑 재설계 or TS 이슈 트래킹.
  3. Update dependency @vitejs/plugin-react to v6 #286 재평가 — vite 8 승격 시 @vitejs/plugin-react v6.
  4. Update dependency pdfjs-dist to v6 #292 재평가 — react-pdf가 pdfjs 6을 번들할 때 top-level pdfjs v6.

Phase 5 — Renovate 운영 주의

  • 통합 커밋이 develop에 병합되면 Renovate가 target 도달을 감지해 MERGE_NOW/Superseded PR을 자동 close(superseded).
  • DEFER한 Update dependency @vitejs/plugin-react to v6 #286·#292는 수동 close 금지 — Renovate가 rejection으로 오인해 향후 알림이 끊긴다. 열어둔 채 dashboard에 사유만 남긴다.

소요

Phase 0(조사) → Phase 1(넷) → Phase 2(스파이크·계단식 fix) → Phase 3/4(통합·단일 커밋) → react-pdf 런타임 검증.

📢 설명

변경 1: [제목]

[변경에 대한 설명]

의사 선택과정 (trade-off)

trade-off가 있는 경우에만 작성

얻은 것

잃은 것

코드 설명: 인라인 코멘트 확인

✅ 체크 리스트

재현 확인

  • (PR 작성 시 채워주세요)

기본

  • 의사 선택 과정이 적절한지 확인
  • 코드 리뷰

## major 승격
- eslint 9→10 (+@eslint/js), typescript 5.9→6, eslint-plugin-react-hooks 5→7
- globals 16→17, i18nexus 3→4 (+i18nexus-tools 2→3), lucide-react 0.577→1
- react-ga4 2→3, react-pdf 9→10, puppeteer 24→25, katex 0.16→0.17
- eslint-plugin-react-refresh 0.4→0.5, react/react-dom 19.1→19.2
- CI: actions/checkout v4→v7, actions/setup-node v4→v6
- Tier A minor/보안: vite 6.4(SEC), axios 1.16(SEC), mermaid 11.15(SEC),
  radix 1.6, react-router 7.18, tailwindcss 4.3, typescript-eslint 8.62 등

## breaking change 해소
1. TS6: deprecated baseUrl 제거 (paths는 tsconfig 상대 경로라 무영향)
2. eslint10 recommended no-useless-assignment: text-animate.tsx dead-store 제거
3. react-hooks7 신규 컴파일러 rule(refs/set-state-in-effect/purity 등) warn 강등
   → 개별 코드 수정은 후속 티켓으로 분리
4. eslint flat config: 강등 블록에 react-hooks 플러그인 등록 + files 스코프
5. react-pdf 10 ↔ pdfjs-dist 5.4.296 정렬 (worker/API 단일 버전 → 불일치 방지)
6. prettier 3.9 union 타입 포맷 적용
7. eslint ignores에 .claude 추가 → npm run lint의 벤더 스킬 코드 오염(5373 errors,
   pre-existing) 제외해 lint 게이트 복구 (npm run lint GREEN)

## 검증
- npm run build GREEN (vite + prerender 7라우트 + sitemap)
- npm run lint GREEN (0 errors, 82 warnings) / prettier --check . GREEN
- react-pdf 런타임: pdfjs 단일 5.4.296 트리, API 실동작(3p 파싱) 확인

## DEFER (스코프 밖)
- #286 @vitejs/plugin-react v6 (peer로 vite 8 필요, 미제공)
- #292 pdfjs-dist v6 (react-pdf 10이 pdfjs 5 번들 → v6 지원 시 재평가)

## 후속 티켓 후보
- react-hooks7 신규 rule 82 warnings 정리
- tsc 크래시(#pages/* 매핑 유발, pre-existing) 조사

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 75b1def2-c8b4-420a-ad35-5e938e7402a9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ICC-391

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@GulSauce GulSauce merged commit e92d4ce into develop Jul 5, 2026
1 check passed
@GulSauce GulSauce deleted the ICC-391 branch July 5, 2026 02:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant