Skip to content

fix: Safari PWA 다이얼로그 스크롤 수정#18

Merged
bbbang105 merged 1 commit intodevfrom
fix/safari-dialog-scroll
Mar 8, 2026
Merged

fix: Safari PWA 다이얼로그 스크롤 수정#18
bbbang105 merged 1 commit intodevfrom
fix/safari-dialog-scroll

Conversation

@bbbang105
Copy link
Copy Markdown
Owner

@bbbang105 bbbang105 commented Mar 8, 2026

Summary

Safari PWA 환경에서 다이얼로그(Dialog/AlertDialog) 내부 콘텐츠가 화면보다 클 때 스크롤이 안 되고 클리핑되는 문제 수정.
Chrome과 Safari의 overscroll-behavior, display: grid, transform 처리 차이에서 발생하는 이슈.

Changes

파일 변경 내용
dialog.tsx gridflex flex-col, top-[50%] translate-y-[-50%]inset-y-0 my-auto, overflow-y-auto 추가, slide 애니메이션 origin 정리, WebkitOverflowScrolling 제거
alert-dialog.tsx dialog.tsx와 동일 수정
globals.css body[data-scroll-locked] { overscroll-behavior-y: auto !important } 추가 (Safari가 Radix의 scroll-lock으로 다이얼로그 내부 스크롤까지 차단하는 것 방지)
use-pull-to-refresh.ts data-scroll-locked 체크 추가 (다이얼로그 열림 시 pull-to-refresh 비활성화)
crawl-modal.tsx base DialogContent에서 flex flex-col 상속으로 중복 클래스 제거
CLAUDE.md UI 디자인 시스템 섹션에 Safari 다이얼로그 대응 규칙 추가
ARCHITECTURE.md 레이아웃 구조에 Dialog Safari 대응 및 pull-to-refresh 가드 명시

Design Decisions

결정 이유
gridflex flex-col Safari에서 grid + overflow-y: auto 조합이 스크롤 대신 클리핑 발생 (WebKit 버그)
translate-y-[-50%]inset-y-0 my-auto transform이 Safari에서 fixed 자식 요소의 스크롤을 깨뜨림
!important 사용 Radix UI가 inline style로 overscroll-behavior: none을 설정하므로 stylesheet에서 override하려면 필수
WebkitOverflowScrolling 제거 iOS 13 (2019) 이후 no-op, 코드 노이즈만 추가
slide 애니메이션 48% 제거 inset-y-0 my-auto 센터링과 불일치하여 애니메이션 잔상 발생

Test Plan

  • Chrome 데스크톱: 다이얼로그 열기/닫기 정상 동작
  • Safari 모바일 PWA: 긴 콘텐츠 다이얼로그 내부 스크롤 확인
  • 크롤링 모달 (CrawlModal): 결과 리스트 스크롤 정상
  • 글 등록 다이얼로그: needsTitle 상태에서 폼 잘림 없음
  • 다이얼로그 열린 상태에서 pull-to-refresh 비활성화 확인
  • AlertDialog (삭제 확인, 탈퇴 확인): 정상 표시 및 동작

🤖 Generated with Claude Code

- Dialog/AlertDialog: grid → flex flex-col, translate 센터링 → inset-y-0 my-auto
- overflow-y-auto 추가로 콘텐츠 클리핑 대신 스크롤 활성화
- slide 애니메이션 origin 48% → 제거 (새 센터링 방식과 불일치)
- WebkitOverflowScrolling 제거 (iOS 13 이후 no-op)
- globals.css: body[data-scroll-locked] overscroll-behavior-y: auto 추가
- use-pull-to-refresh: 다이얼로그 열림 시 제스처 비활성화
- crawl-modal: base DialogContent에서 flex flex-col 상속으로 중복 제거

Co-Authored-By: Claude <noreply@anthropic.com>
@bbbang105 bbbang105 requested a review from choihooo as a code owner March 8, 2026 08:33
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
study-admin-web Ready Ready Preview, Comment Mar 8, 2026 8:34am

@bbbang105 bbbang105 added the 🚨 fix 버그 수정 / 에러 해결 label Mar 8, 2026
@bbbang105 bbbang105 merged commit fb291af into dev Mar 8, 2026
8 checks passed
@bbbang105 bbbang105 deleted the fix/safari-dialog-scroll branch March 8, 2026 08:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🚨 fix 버그 수정 / 에러 해결

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant