Skip to content

Develop - #961

Merged
klmhyeonwoo merged 21 commits into
mainfrom
develop
Aug 18, 2026
Merged

klmhyeonwoo merged 21 commits into
mainfrom
develop

Conversation

@prgmr99

@prgmr99 prgmr99 commented Jul 29, 2026

Copy link
Copy Markdown
Member

PR 제목은 핵심 변경 사항을 요약해주세요


🏄🏼‍♂️‍ Summary (요약)

🫨 Describe your Change (변경사항)

🧐 Issue number and link (참고)

📚 Reference (참조)

klmhyeonwoo and others added 17 commits July 5, 2026 12:04
반응 조회·등록·삭제·변경 API 훅과 타입을 추가합니다.
등록 직후 변경과 삭제를 포함해 캐시를 먼저 갱신하고 실패 시 롤백합니다.
기본 노출 툴팁의 트리거 이벤트를 비활성화할 수 있게 합니다.
자동 종료 시간과 위치 동기화 cleanup을 명시적으로 관리합니다.
데스크탑 Popper와 모바일 BottomSheet에서 반응을 선택하고 확인합니다.
반응 교체·삭제와 빈 상태 안내 UI를 낙관적 상태에 연결합니다.
분석 결과 카드에 답변 ID와 반응 UI를 연결합니다.
분석 정보와 반응 정보가 모두 준비된 뒤 초기 로딩을 종료합니다.
회고 분석 답변 리액션 기능 추가
한 사용자가 하나의 답변에 여러 종류의 반응을 남길 수 있도록 변경합니다.

반응 개수는 2개 이상일 때만 표시하고, 삭제 후 재등록 방식의 변경 mutation을 제거해 등록과 삭제 낙관적 업데이트 흐름을 단순화합니다.
반응 기능 낙관적 업데이트 및 캐시 관리 개선
vite ^5.2.0 → ^6.4.3, @vitejs/plugin-react ^4.2.1 → ^4.7.0,
vite-plugin-svgr ^4.2.0 → ^4.5.0

- vite: 최종 목표인 v8까지 가려면 필수 경유 버전. 한 번에 점프하지 않고
  메이저 단위로 나눠 올려서 문제 발생 시 원인 구간을 좁힘
- @vitejs/plugin-react: 기존 4.2.1은 peer dependency가 vite5까지만 허용해
  vite6 설치 자체가 막힘. 4.7.0은 vite6/7 stable을 모두 커버해서 다음
  단계(Step 2, vite7)에서 재수정이 필요 없음
- vite-plugin-svgr: 기존 4.2.0은 peer가 vite5로 고정 상한이 있었는데,
  4.3.0부터 상한 없는 `>=2.6.0`으로 열려서 4.5.0으로 올려 vite6 peer
  경고를 해소

검증: pnpm install(peer 경고 없음), tsc --noEmit, vite build, dev 서버
스모크 테스트(PWA/GA/svgr/react-compiler 트랜스폼) 모두 통과
vite ^6.4.3 → ^7.3.6, vite-plugin-radar ^0.9.6 → ^0.11.0,
@types/node ^20.12.12 → ^20.19.0, .nvmrc 20 → 20.19.2

- vite: 8까지 가기 위한 다음 경유 버전. v7부터 Node 18 지원이 종료되고
  Node ^20.19.0 || >=22.12.0이 요구됨
- vite-plugin-radar: 기존 0.9.6은 peer 상한이 vite6까지라 vite7 설치가
  막힘. 0.11.0은 vite6/7/8을 모두 커버해서 Step 3에서 재수정 불필요
- @types/node: pnpm install 시점에 실제로 peer dependency 충돌 발견
  (vite 7.3.6이 @types/node ^20.19.0 || >=22.12.0을 요구하는데 기존
  ^20.12.12가 20.16.5로 풀려 범위 밖). 20.19.0으로 올려 해소
- .nvmrc: 기존 `20`은 patch가 불명확해 팀원 로컬 환경에 따라 20.19
  미만일 수 있음. vite7 요구사항을 만족하는 구체적 버전(20.19.2)으로
  고정해 CI(actions/setup-node)와 nvm 사용자를 함께 보호

검증: pnpm install(peer 경고 없음), tsc --noEmit, vite build, dev 서버
스모크 테스트(PWA/GA/svgr/react-compiler 트랜스폼) 모두 통과
## 버전
vite ^7.3.6 → ^8.1.5, @vitejs/plugin-react ^4.7.0 → ^5.2.0,
vite-plugin-pwa ^1.2.0 → ^1.3.0, workbox-window ^7.4.0 → ^7.4.1,
workbox-build ^7.4.1 신규 추가

## vite.config.ts
- Vite 8 기본 번들러가 esbuild+Rollup에서 Rolldown+Oxc로 바뀌면서
  build.rollupOptions.manualChunks의 객체 형태가 더 이상 지원되지
  않아(`TypeError: manualChunks is not a function`) 동일한 청크
  분리 결과를 내는 함수 형태로 변경
- resolve.dedupe에 react/react-dom 추가. swiper처럼 react peer
  dependency를 선언하지 않은 패키지가, 모노레포 pnpm 스토어에
  apps/mobile용으로 같이 존재하는 react 18.2.0으로 잘못 resolve되어
  "Cannot read properties of null (reading 'useState')" 에러가
  발생하던 것을 방지

## CJS/UMD interop 버그 수정
Vite 8의 CJS→ESM interop 처리 방식이 바뀌면서, default export를
`exports.default` + `__esModule: true` 형태로 내보내는 UMD 패키지들의
default import가 실제 컴포넌트 대신 모듈 객체 자체로 resolve되어
"Element type is invalid... got: object" 에러가 발생함
(lottie-react, react-slick, react-canvas-confetti에서 확인).

- src/lib/resolveDefaultExport.ts 신규: default를 함수를 찾을 때까지
  재귀적으로 풀어주는 공용 유틸
- src/lib/lottie-react-compat.ts: 위 유틸을 사용하도록 정리
- lottie-react를 default import하던 13개 파일을 공용 유틸 경유로 변경
- LoginCarousel.tsx(react-slick), Confetti.tsx(react-canvas-confetti)도
  동일하게 수정

## 검증
pnpm install(peer 경고 없음), tsc --noEmit, vite build(청크 구성 동일,
PWA 정상 생성), dev 서버에서 실제 브라우저 렌더링 확인(로그인 캐러셀,
Lottie 로딩 모달, Swiper 사용 화면 등 에러 없이 정상 동작)

PWA/GA는 vite build && vite preview(프로덕션 모드) 기준으로 별도 확인:
- PWA 서비스워커 정상 등록, 오프라인 진입 정상 동작 확인
- GA 이벤트 정상 적재 확인 (Network 탭 collect 요청 기준)
Vite 8 업그레이드 및 종속성 업데이트
- 더보기에 호버했을 때, 전체 반응 리스트로 노출되도록
회고 반응 기능 개선 및 옵티미스틱 업데이트 로직 중앙화
* feat: #958 약관 동의 기능 추가 및 닉네임 설정 페이지 업데이트

* chore: #958 마켓팅 활용 및 광고 수집 전문 작성

* feat: #958 회원가입 API 스펙 변경 사항 반영

* feat: #958 기존 사용자 마켓팅 활용 및 광고 수신 동의 옵션 추가

* feat: #958 모바일 - 알림 설정 페이지 및 관련 컴포넌트 추가

* feat: #958 사용자 프로필 드롭다운에 하위 메뉴 표시 방식 개선 및 상태 관리 추가

* feat: #958 마케팅 수신 동의 프롬프트 컴포넌트 추가 및 관련 API 연동

* fix: #958 레이어 공식 이메일로 문의 메일 주소를 변경
@coderabbitai

coderabbitai Bot commented Jul 29, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one) (1)
  • Not Rabbit

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: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7782165e-43b9-4917-98bb-aca49699dad0

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

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.

@klmhyeonwoo

Copy link
Copy Markdown
Member

반응 기능만 별도로 나갈 수 있도록 브랜치파서 별도 풀리로 올려놓겠습니다~!

@klmhyeonwoo
klmhyeonwoo merged commit 3bfd6d8 into main Aug 18, 2026
5 checks passed
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.

3 participants