Skip to content

chore(deps): @astrojs/react를 7로 올린다 (#207 대체) - #219

Merged
CaesiumY merged 3 commits into
mainfrom
chore/deps-astrojs-react-7
Oct 12, 2026
Merged

CaesiumY merged 3 commits into
mainfrom
chore/deps-astrojs-react-7

Conversation

@CaesiumY

@CaesiumY CaesiumY commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

요약

React 컴포넌트를 Astro 페이지에 붙여 주는 @astrojs/react를 6.0.6에서 7.0.1로 올립니다(Dependabot #207). 7은 JSX 변환을 Babel에서 Oxc(Rust로 만든 빠른 JS 변환기)로 바꾼 메이저 버전입니다. 이 블로그는 사라진 옵션을 쓰지 않아서 코드 수정 없이 버전만 올렸습니다.

#207은 보안 패치(#211, #216) 이전 main 기준이라, 최신 main 위에서 @astrojs/react 한 줄만 바꿔 다시 설치했습니다.

영향 검토

  • 사라진 babel 옵션: astro.config.ts가 인자 없는 react()를 쓰므로 해당 없음
  • 새 피어 oxc-transform-react: 선택 사항(optional)이고, React Compiler를 켤 때만 필요
  • 의존성 트리: @babel/*, gensync, browserslist, react-refresh 등 Babel 관련 전이 의존성이 빠지고 @vitejs/plugin-react 6.1.2와 @astrojs/internal-helpers 0.12.0이 들어옴. 피어 의존성 경고 0건
  • React 아일랜드 3개: SonnerProvider(전 페이지), Comments(Giscus 댓글), ContinueReadingToast(이어 읽기). 빌드 결과물을 astro preview로 띄워 포스트 페이지에서 세 아일랜드가 모두 로드되고 Giscus 위젯과 Sonner 토스트 영역이 마운트되는 것을 확인했고, 콘솔 에러는 없었음. 이어 읽기 토스트는 e2e/continue-reading.spec.ts가 검증

검증 (로컬, Windows)

  • pnpm audit --audit-level=high: 통과 (moderate 2건은 main과 같음)
  • astro check: 0 errors, astro build: 성공
  • ESLint(추적 파일 전체), pnpm test:scripts: 통과
  • E2E 전체(76개): 로컬 통과. listener-leak.spec.ts의 /projects 왕복 테스트(astro:page-load 리스너 수 6 → 7)가 로컬 첫 실행과 이 PR의 CI에서 재시도 끝에 통과했습니다. 다만 React 6 그대로인 chore(deps): Dependabot 안전군 10건을 일괄 업그레이드한다 (#213, #212 통합) #217, #218의 CI에서도 같은 테스트가 같은 방식으로 재시도 끝에 통과했고(#218은 다음 실행에서 재시도 없이 통과), 해당 스펙만 로컬에서 3회 반복(21건)했을 때도 모두 통과했습니다. 그래서 React 7이 만든 회귀가 아니라 브랜치와 무관하게 원래 있던 불안정성으로 판단합니다. 원인은 #221에서 확인했습니다. dev 서버에만 있는 Astro 도구 막대의 audit 앱이 리스너를 늦게 달아 생긴 측정 오차였고, E2E에서 도구 막대를 끄는 것으로 고칩니다.

머지 순서

#217(안전군 묶음), #218(satori)과 잠금 파일이 겹치므로 먼저 머지되는 쪽 다음에 최신 main 위에서 잠금 파일을 다시 만들어야 합니다. 머지 후 #207은 이 PR로 대체했다는 코멘트와 함께 닫습니다.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@claude

claude Bot commented Oct 11, 2026

Copy link
Copy Markdown

리뷰: @astrojs/react 6 → 7

변경은 package.json 한 줄과 pnpm-lock.yaml 재생성뿐이라 범위가 깔끔합니다. diff와 PR 본문만 읽고 쓴 리뷰이고, 빌드와 테스트는 직접 돌리지 않았습니다.

코드 품질 / 호환성

  • 락 파일 diff가 본문 설명과 맞습니다. @babel/*, gensync, browserslist, react-refresh 등이 빠지고 @vitejs/plugin-react 6.1.2와 @astrojs/internal-helpers 0.12.0이 들어옵니다. 새 피어 oxc-transform-react는 optional이라 설치에 문제가 없습니다.
  • @vitejs/plugin-react 6의 피어가 vite: ^8.0.0입니다. 현재 Astro가 가져오는 Vite 버전이 8인지 락 파일에서 한 번 더 확인해 주세요. PR 본문의 "피어 경고 0건"이 이를 이미 다룬다면 충분합니다.
  • internal-helpers가 0.11.0과 0.12.0 두 버전으로 공존합니다. 동작에는 문제가 없지만, 이후 astro 쪽이 올라가면 정리될 가능성이 큽니다.

잠재 이슈

  • 본문에 적힌 listener-leak.spec.ts의 astro:page-load 리스너 수 6 → 7 실패가 1회 있었습니다. 반복 실행에서는 통과했지만, 리스너 누수를 잡는 스펙이라 "불안정"으로 넘기기엔 신호가 좋지 않습니다. Oxc 변환으로 React 아일랜드의 초기화 타이밍이 달라졌을 가능성도 열어 두고, CI에서 재시도(retry) 없이도 통과하는지 확인하길 권합니다. 재시도로만 통과한다면 원인을 더 파 보는 편이 안전합니다.
  • 머지 순서: chore(deps): Dependabot 안전군 10건을 일괄 업그레이드한다 (#213, #212 통합) #217, #218과 락 파일이 겹칩니다. 본문에 적힌 대로 먼저 머지되는 쪽 이후에 락 파일을 다시 만들어야 합니다.

성능

  • Babel을 Oxc로 바꾸는 변경이라 빌드와 dev의 JSX 변환은 빨라질 것으로 예상합니다. 의존성 트리도 줄었습니다.

보안

  • 의존성이 줄어드는 방향이고 새로 추가되는 런타임 의존성은 internal-helpers와 plugin-react 정도입니다. pnpm audit --audit-level=high가 통과했다고 하니 추가로 걸리는 점은 없습니다.

테스트 커버리지

  • 이 PR은 React 아일랜드 3개(SonnerProvider, Comments, ContinueReadingToast)의 번들링 경로를 바꿉니다. 로컬 astro preview 수동 확인과 E2E 76개 통과를 확인했다고 하니 충분해 보입니다. 이 PR은 package.json을 건드리므로 e2e-scope상 전체 스위트가 도는 경로입니다. 머지 전에 CI의 Code standards & build 잡이 초록인지만 확인해 주세요.

전반적으로 승인해도 좋은 변경입니다. 위의 listener-leak 재현 여부만 CI 결과로 확인해 주세요.

🤖 Generated with Claude Code

@CaesiumY
CaesiumY merged commit 6cc1d50 into main Oct 12, 2026
2 checks passed
@CaesiumY
CaesiumY deleted the chore/deps-astrojs-react-7 branch October 12, 2026 03:40
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