Skip to content

fix: 안드로이드 스플래시 로고 저해상도 노출 수정 (RN 오버레이 전환) - #352

Merged
ychany merged 4 commits into
devfrom
fix/351-splash-android-quality
Jul 17, 2026
Merged

fix: 안드로이드 스플래시 로고 저해상도 노출 수정 (RN 오버레이 전환)#352
ychany merged 4 commits into
devfrom
fix/351-splash-android-quality

Conversation

@ychany

@ychany ychany commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

작업 내용

안드로이드에서 스플래시 로고 모서리가 각지고 뭉개져 보이는 문제를 수정했어요.

원인

  • 이미지 파일은 정상 (APK 내 밀도별 PNG 전부 라운딩 온전 — 픽셀 분석 확인)
  • Android 12+ 시스템 스플래시가 로고를 저해상도 아이콘으로 래스터 후 확대하면서 곡선이 깨짐
  • 우리 앱은 preventAutoHideAsync 로 이 시스템 스플래시를 웹뷰 로드 완료까지 유지해서 저품질 로고가 수 초 노출됨 (iOS 는 스토리보드 방식이라 정상)

수정

  1. SplashOverlay 신설 — 스플래시와 동일한 화면(배경 + 로고 200dp)을 RN 이 고해상도로 렌더
  2. 시스템 스플래시 조기 숨김 — 첫 렌더 직후 hideAsync(), 이후 RN 오버레이가 웹뷰 첫 로드 완료(또는 실패·15초 타임아웃)까지 표시
  3. 안드로이드 시스템 스플래시 로고 제거 — 저품질로 나올 수밖에 없는 부팅 첫 ~1초는 배경색만 표시 (android.image = 투명 PNG, iOS 는 기존 유지)

결과

iOS:      [로고(스토리보드)] → [로고(RN)] → 웹   ← 화면상 변화 없음
Android:  [파란 배경 ~1초]   → [로고(RN)] → 웹   ← 각진 로고 완전 제거
  • 스플래시 총 노출 시간·종료 조건은 기존과 동일

검증

  • 안드로이드 에뮬레이터: 첫 ~1초 배경색만 → 선명한 로고 → 웹 진입 (프레임 캡처 확인)
  • 로고 곡률 픽셀 측정 — 수정 후 화면 렌더가 원본 PNG 와 일치
  • iOS 시뮬레이터: 콜드 스타트 스플래시 끊김 없는지 (expo → RN 전환 티 안 나는지)
  • 웹뷰 로드 실패 시 15초 타임아웃 해제 동작 (기존 유지)
안드로이드
안드로이드 스플래시 — 로고 모서리 각짐

연관 이슈

closes #351

Summary by CodeRabbit

  • 새로운 기능

    • Android 전용 스플래시 설정을 추가했습니다(빈 이미지, 크기, 배경 및 다크 배경).
    • 고정 배경과 로고를 중앙에 표시하는 스플래시 오버레이 컴포넌트를 도입했습니다.
  • 개선 사항

    • 네이티브 스플래시 종료 시점을 렌더 커밋 직후로 조정해 전환이 더 매끄럽게 개선됐습니다.
    • 웹 콘텐츠 준비 전에는 오버레이를 유지하고, 로드 완료/실패 또는 타임아웃에 맞춰 오버레이를 해제합니다.

@vercel

vercel Bot commented Jul 17, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
piki Ready Ready Preview, Comment Jul 17, 2026 11:59am

@github-actions github-actions Bot added the fix Something isn't working label Jul 17, 2026
@github-actions

Copy link
Copy Markdown

Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 95da9fe2-16c1-4a77-b5f9-34e7a0ab869b

📥 Commits

Reviewing files that changed from the base of the PR and between 3308bce and a553ad9.

📒 Files selected for processing (1)
  • apps/app/hooks/useSplashScreenController.tsx

📝 Walkthrough

Walkthrough

Android 시스템 스플래시의 로고를 빈 이미지로 대체하고 RN 오버레이에서 고해상도 로고를 표시하도록 변경했습니다. 시스템 스플래시는 첫 렌더 직후 숨기며, 웹뷰 로드 완료·실패·타임아웃 시 RN 오버레이를 종료합니다.

Changes

스플래시 렌더링 흐름

Layer / File(s) Summary
Android 설정 및 RN 오버레이
apps/app/app.json, apps/app/components/SplashOverlay.tsx
Android 스플래시에 빈 이미지와 배경색을 지정하고, RN 오버레이에서 배경과 splash-icon.png를 중앙에 표시합니다.
스플래시 생명주기 연결
apps/app/hooks/useSplashScreenController.tsx, apps/app/app/index.tsx
첫 렌더 직후 네이티브 스플래시를 숨기고, 웹뷰 이벤트 또는 타임아웃에 따라 RN 오버레이를 조건부로 종료합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant App
  participant SplashScreenControllerProvider
  participant SystemSplash
  participant SplashOverlay
  participant WebView
  App->>SplashScreenControllerProvider: 첫 렌더 커밋
  SplashScreenControllerProvider->>SystemSplash: hideAsync()
  App->>SplashOverlay: 오버레이 표시
  WebView-->>App: 로드 완료·실패 또는 타임아웃
  App->>SplashScreenControllerProvider: hideSplashOverlay()
  SplashScreenControllerProvider-->>SplashOverlay: 표시 중지
Loading

Suggested reviewers: soyeong0115, kanghaeun

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 안드로이드 스플래시 저해상도 문제를 RN 오버레이로 수정한다는 핵심 변경을 잘 요약합니다.
Linked Issues check ✅ Passed 변경 사항이 RN SplashOverlay 추가, 시스템 스플래시 조기 숨김, 투명 Android 스플래시 이미지 적용 등 #351 요구사항과 일치합니다.
Out of Scope Changes check ✅ Passed 요구사항과 무관한 변경은 보이지 않으며, 모두 스플래시 전환과 Android 표시 품질 개선 범위 안입니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/351-splash-android-quality

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/app/hooks/useSplashScreenController.tsx`:
- Around line 40-42: In the useEffect callback within useSplashScreenController,
handle rejected promises from SplashScreen.hideAsync by attaching a catch
handler while preserving the existing fire-and-forget behavior and empty
dependency array.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 21eeb18b-39ab-4f41-b047-343f78a8c096

📥 Commits

Reviewing files that changed from the base of the PR and between cf6718d and b6cd661.

⛔ Files ignored due to path filters (1)
  • apps/app/assets/images/splash-android-blank.png is excluded by !**/*.png
📒 Files selected for processing (4)
  • apps/app/app.json
  • apps/app/app/index.tsx
  • apps/app/components/SplashOverlay.tsx
  • apps/app/hooks/useSplashScreenController.tsx

Comment thread apps/app/hooks/useSplashScreenController.tsx
@ychany
ychany merged commit 484fedc into dev Jul 17, 2026
5 of 6 checks passed
@ychany
ychany deleted the fix/351-splash-android-quality branch July 17, 2026 12:02
iOdiO89 pushed a commit that referenced this pull request Jul 19, 2026
* fix: Android 12+ 스플래시 로고 저해상도 문제 해결 (RN 오버레이로 전환)

* fix: Android 시스템 스플래시 저품질 로고 미노출 처리 (배경색만 표시)

* fix: SplashScreen.hideAsync rejection 처리 추가
iOdiO89 added a commit that referenced this pull request Jul 19, 2026
* fix: svgo removeViewBox 비활성화로 아이콘 축소 렌더링 시 잘림 방지

* feat: 바텀탭 디자인 변경 및 탭 4개로 분리

* refactor: 바텀탭 button > link 태그로 교체

* feat: 마이페이지에 바텀탭 추가

* refactor: 바텀탭 z-index를 Z_INDEX 상수로 관리

* refactor: 마이 탭 신설에 따라 헤더 프로필 아이콘 제거

* feat: 바텀탭 포인터 다운 시 스케일업 인터랙션 추가

* feat: 바텀탭 인디케이터 드래그로 탭 전환하는 인터랙션 추가

* feat: 바텀탭 liquid glass 효과 추가

* feat: 바텀탭 포커스되지 않은 탭 클릭해도 드래그 가능하도록 변경

* feat: 바텀탭 렌즈 변신 조건 정리 및 배경 틴트 상태 분리

* refactor: 바텀탭 wrapper 컴포넌트 내부로 이동

* style: 바텀탭 blur 완화

* fix: 탭바 새 제스처 시작 시 예약된 라우팅 취소

* fix: 탭바 착지 애니메이션 완료 후 라우팅되도록 지연 정렬

* fix: 탭바 새 제스처 시작 시 예약된 라우팅 취소

* refactor: 로그인 진입 시 세션 조회 왕복 제거 및 스플래시 전환 개선 (#348)

* refactor: access token JWT에서 role 추출하는 유틸 추가

* refactor: 로그인 세션 검사(getMe) 제거하고 JWT role 기반으로 전환

* refactor: 게스트 세션 재활용 판정을 클릭 시점 refresh로 일원화

* fix: 루트 스플래시 배경 FOUC 제거

* feat: 로그인 진입 시 문구·버튼 fade-in 애니메이션 추가

* refactor: /archive 탭을 위시리스트·내 토너먼트 페이지로 분리 (#347)

* refactor: /archive 탭 쿼리 파라미터를 /archive/wish, /archive/tournament 경로로 분리

* refactor: 구버전 /archive(?tab=) 경로를 신규 경로로 리다이렉트

* refactor: 옛 /wish 페이지 잔재 정리 및 archive 콜로케이션 재배치

* fix: 위시 페이지 체류 중 후속 공유 인텐트가 무시되던 문제 수정

* fix: 보관 탭 활성 판정 경로 경계 추가 및 위시 추가 후 중복 라우팅 제거

* fix: 공유 인텐트 실패 URL 잠금 해제 및 링크 담기 실패 시 다이얼로그 유지

* refactor: JWT role을 명시적 검증으로 좁혀 타입 단언 제거

* fix: share intent 처리 후 URL 잠금 해제하여 재공유 허용

* refactor: font preload 삭제

* refactor: Pretendard 폰트 CDN Dynamic Subset Variable로 교체

* chore: TanstackQuery devtool Dynamic Import로 변경

* chore: Tanstack Query Devtools ssr false 설정

* fix: Android 12+ 스플래시 로고 저해상도 문제 해결 (RN 오버레이로 전환)

* fix: Android 시스템 스플래시 저품질 로고 미노출 처리 (배경색만 표시)

* Revert "fix: Android 시스템 스플래시 저품질 로고 미노출 처리 (배경색만 표시)"

This reverts commit adede7e.

* Revert "fix: Android 12+ 스플래시 로고 저해상도 문제 해결 (RN 오버레이로 전환)"

This reverts commit 74d09aa.

* fix: 안드로이드 카카오 로그인 무한 로딩 수정 (리다이렉트 수신 액티비티 등록) (#350)

* fix: 카카오 로그인 안드로이드 리다이렉트 수신 액티비티 등록

* chore: 서명 자격증명 및 빌드 산출물 gitignore 추가

* fix: 안드로이드 스플래시 로고 저해상도 노출 수정 (RN 오버레이 전환) (#352)

* fix: Android 12+ 스플래시 로고 저해상도 문제 해결 (RN 오버레이로 전환)

* fix: Android 시스템 스플래시 저품질 로고 미노출 처리 (배경색만 표시)

* fix: SplashScreen.hideAsync rejection 처리 추가

* refactor: BottomCta 공통 컴포넌트 개선 및 페이지별 개별 구현 통합 (#345)

* feat: 바텀 CTA 상단 그라데이션 옵션 추가 및 패딩 스펙 반영

* refactor: 페이지별 바텀 CTA를 BottomCta 공통 컴포넌트로 교체

* chore: iOS ShareBottomSheet 에셋 파일명 교체 (#353)

* chore: iOS 앱 공유 바텀 시트 에셋 추가

* feat: iOS 앱 공유 바텀시트 성공/에러 UI 추가

* chore: app sentry cli 추가

* chore: patch app version

* chore: Playwright E2E 테스트 환경 구축 (#319)

* chore: playwright 설치

* chore: Playwright 설정 및 테스트 스크립트 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat: 게스트 storageState 생성 setup 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat: page.route 기반 API 목킹 fixture 및 목 데이터 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test: 홈 및 토너먼트 준비 페이지 E2E 테스트 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: SSR 접근 권한 조회용 목 스텁 서버 추가 및 준비 페이지 테스트를 진입 플로우로 변경

* chore: playwright/.auth gitignore 패턴 수정

* chore: E2E 테스트 CI 잡 추가

* fix: UI 모드와 CLI 동시 실행 시 목 스텁 포트 충돌 해결

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix: dev 전용 react-grab 스크립트 차단으로 trace 스냅샷 빈 화면 해결

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* chore: CI Node 버전 22 LTS로 변경

* refactor: E2E 테스트를 도메인 폴더 구조로 변경

* refactor: @e2e alias 도입

* feat: E2E 이미지 목킹 추가 (가짜 CDN URL + /_next/image 인터셉트)

* feat: api 목킹 fixture에 patch, delete 메서드 추가

* docs: E2E 테스트 사용 가이드 추가

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Jung Sun A <amber0809@naver.com>

---------

Co-authored-by: joyeongchan <tigerbone@naver.com>
Co-authored-by: kanghaeun <145974230+kanghaeun@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
iOdiO89 pushed a commit that referenced this pull request Jul 19, 2026
* fix: Android 12+ 스플래시 로고 저해상도 문제 해결 (RN 오버레이로 전환)

* fix: Android 시스템 스플래시 저품질 로고 미노출 처리 (배경색만 표시)

* fix: SplashScreen.hideAsync rejection 처리 추가
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fix Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug/App] 안드로이드 스플래시 로고 저해상도(각짐) 노출 수정

1 participant