Skip to content

Release: preload home webview and bump build 15#24

Merged
SeongHoonC merged 1 commit into
prodfrom
main
Jun 3, 2026
Merged

Release: preload home webview and bump build 15#24
SeongHoonC merged 1 commit into
prodfrom
main

Conversation

@SeongHoonC
Copy link
Copy Markdown
Collaborator

@SeongHoonC SeongHoonC commented Jun 3, 2026

Summary

  • Preload the main home WebView behind the splash screen and dismiss splash after boot plus WebView load settles.
  • Remove the fixed 700ms splash minimum delay while keeping the intro animation.
  • Bump iOS build number and Android version code to 15.

Validation

  • npm run lint
  • npx tsc --noEmit

Summary by CodeRabbit

릴리스 노트

  • Bug Fixes

    • 홈 화면 웹뷰 로딩 오류 처리를 강화하여 안정성 개선
    • 스플래시 화면 표시 타이밍을 최적화하여 로딩 흐름 개선
  • Chores

    • 앱 버전을 14에서 15로 업데이트

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 3, 2026

Review Change Stack

Walkthrough

PR은 HomeWebView 프리로드 상태를 관리하는 새로운 React Context 시스템을 도입하여, Splash 화면 표시 기간을 webview 로딩 상태와 조율합니다. 애니메이션 타이밍이 단순화되고, Root Layout과 HomeWebViewScreen이 컨텍스트와 통합되며, 버전 번호가 버전 14에서 15로 일관되게 업데이트되었습니다.

Changes

HomeWebView 프리로드 및 Splash 조율 시스템

Layer / File(s) Summary
HomeWebViewPreload Context System
contexts/home-webview-preload-context.tsx, contexts/index.ts
상태 타입(idle, loading, ready, failed), 컨텍스트 인터페이스, useState 기반 상태 관리 Provider, 그리고 타입-안전 Hook이 새로 정의되고 내보내집니다. markLoadingready 상태를 보존하고, markReady, markFailed, reset 메서드와 isSettled 계산 속성을 제공합니다.
Splash Screen Animation Timing Simplification
components/custom-splash-screen.tsx
최소 표시 지속 시간 상수가 제거되고 페이드아웃 지속 시간 상수가 추가되었습니다. triggerFadeOut 함수는 delay 인자를 제거하여 애니메이션 완료 후 즉시 페이드아웃을 수행합니다.
Root Layout Splash Coordination
app/_layout.tsx
Root Layout이 HomeWebViewPreloadProvider로 래핑되고 usePathname()useHomeWebViewPreloadContext()를 호출하는 RootLayoutContent 함수로 리팩터링되었습니다. Splash 차단 로직이 업데이트되어 홈 화면에서 webview 프리로드가 완료될 때까지 splash 해제를 지연합니다.
HomeWebViewScreen Loading State Integration
ui/home/home-webview-screen.tsx
로드 실패 추적 ref, handleErrorhandleLoadEnd 콜백이 추가되어 URL 변경 시 상태를 리셋하고, 로딩/준비/실패 상태를 컨텍스트와 동기화합니다.
HomeTab Error Handler Integration
app/(tabs)/index.tsx
HomeTab의 HomeWebViewScreen에 오류 처리 핸들러(handleWebViewError)가 추가되어 컨텍스트의 markFailed()를 호출합니다. 인라인 핸들러가 명시적 함수로 대체되었습니다.
Version Bumping Across Platforms
app.json, ios/app.xcodeproj/project.pbxproj, ios/app/Info.plist
iOS 빌드 번호, Android 버전 코드, iOS Info.plist의 CFBundleVersion이 모두 14에서 15로 일관되게 업데이트되었습니다.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • Moadong/moadong-react-native#15: 메인 PR이 홈 탭 WebView 오류/실패 처리를 컨텍스트 기반으로 확장한 점에서, 검색 PR의 홈 탭 WebView 로드 실패 시 폴백 로직과 직접적으로 같은 실패 경로를 수정/연결합니다.
  • Moadong/moadong-react-native#22: 메인 PR의 components/custom-splash-screen.tsxapp/_layout.tsx 업데이트가 검색 PR의 커스텀 splash 타이밍/가시성 로직 변경과 중복되므로 코드 수준에서 관련이 있습니다.

Suggested reviewers

  • seongwon030
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 주요 변경사항을 명확하게 반영합니다. 홈 웹뷰 프리로드 및 빌드 번호 15 업데이트라는 두 가지 핵심 변경사항을 간결하게 요약합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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 main

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 and usage tips.

@SeongHoonC SeongHoonC self-assigned this Jun 3, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
app/(tabs)/index.tsx (1)

11-14: 💤 Low value

markFailed() 중복 호출.

HomeWebViewScreen.handleError가 이미 markFailed()를 호출한 뒤 onError()(=handleWebViewError)를 부르므로, 여기서 다시 markFailed()를 호출하면 동일 상태 전이가 두 번 발생합니다. 상태가 멱등이라 동작상 문제는 없지만 실패 처리 책임이 두 곳에 분산되어 혼란을 줄 수 있습니다. setWebViewFailed(부모 고유 책임)만 남기는 것을 고려해 보세요.

♻️ 제안
-  const handleWebViewError = useCallback(() => {
-    markFailed();
-    setWebViewFailed(true);
-  }, [markFailed]);
+  const handleWebViewError = useCallback(() => {
+    setWebViewFailed(true);
+  }, []);
🤖 Prompt for 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.

In `@app/`(tabs)/index.tsx around lines 11 - 14, The handleWebViewError callback
currently calls markFailed() and setWebViewFailed(true) but
HomeWebViewScreen.handleError already calls markFailed() before invoking
onError, so remove the duplicate markFailed() from handleWebViewError and leave
only the parent-owned state update setWebViewFailed(true); update the
useCallback for handleWebViewError to call setWebViewFailed(true) and keep
markFailed responsibilities solely in HomeWebViewScreen.handleError/onError.
app/_layout.tsx (1)

212-218: 💤 Low value

의존성 배열에 중복 항목이 있습니다.

shouldBlockSplashforceUpdateRequired, bootstrapStatus, pathname, homeWebViewPreloadStatus로부터 계산되는 값입니다. 따라서 의존성 배열에 이미 해당 값들이 포함되어 있으므로 shouldBlockSplash를 추가하는 것은 중복입니다.

기능적으로는 문제가 없지만, 의존성 배열을 간결하게 유지하는 것이 좋습니다.

♻️ 제안하는 수정
  }, [
    forceUpdateRequired,
    bootstrapStatus,
    pathname,
    homeWebViewPreloadStatus,
-   shouldBlockSplash,
  ]);
🤖 Prompt for 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.

In `@app/_layout.tsx` around lines 212 - 218, 의존성 배열에서 중복 항목인 shouldBlockSplash를
제거하세요: useEffect의 의존성 배열(현재 forceUpdateRequired, bootstrapStatus, pathname,
homeWebViewPreloadStatus, shouldBlockSplash)을 검토하고 shouldBlockSplash를 삭제해 배열을
간결하게 유지하되 기존에 포함된 forceUpdateRequired, bootstrapStatus, pathname,
homeWebViewPreloadStatus가 변경될 때 동일한 계산이 일어나도록 유지하세요 (참조 심볼: shouldBlockSplash,
forceUpdateRequired, bootstrapStatus, pathname, homeWebViewPreloadStatus, 해당
useEffect 블록).
🤖 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.

Nitpick comments:
In `@app/_layout.tsx`:
- Around line 212-218: 의존성 배열에서 중복 항목인 shouldBlockSplash를 제거하세요: useEffect의 의존성
배열(현재 forceUpdateRequired, bootstrapStatus, pathname, homeWebViewPreloadStatus,
shouldBlockSplash)을 검토하고 shouldBlockSplash를 삭제해 배열을 간결하게 유지하되 기존에 포함된
forceUpdateRequired, bootstrapStatus, pathname, homeWebViewPreloadStatus가 변경될 때
동일한 계산이 일어나도록 유지하세요 (참조 심볼: shouldBlockSplash, forceUpdateRequired,
bootstrapStatus, pathname, homeWebViewPreloadStatus, 해당 useEffect 블록).

In `@app/`(tabs)/index.tsx:
- Around line 11-14: The handleWebViewError callback currently calls
markFailed() and setWebViewFailed(true) but HomeWebViewScreen.handleError
already calls markFailed() before invoking onError, so remove the duplicate
markFailed() from handleWebViewError and leave only the parent-owned state
update setWebViewFailed(true); update the useCallback for handleWebViewError to
call setWebViewFailed(true) and keep markFailed responsibilities solely in
HomeWebViewScreen.handleError/onError.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ad186f6f-5e83-4993-bb6a-21c00d43437d

📥 Commits

Reviewing files that changed from the base of the PR and between 5670404 and d484783.

📒 Files selected for processing (9)
  • app.json
  • app/(tabs)/index.tsx
  • app/_layout.tsx
  • components/custom-splash-screen.tsx
  • contexts/home-webview-preload-context.tsx
  • contexts/index.ts
  • ios/app.xcodeproj/project.pbxproj
  • ios/app/Info.plist
  • ui/home/home-webview-screen.tsx

@SeongHoonC SeongHoonC merged commit 2f4516f into prod Jun 3, 2026
3 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.

1 participant