refactor: 최종 View 리팩토링 #313
Conversation
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (133)
📝 Walkthrough핵심 아키텍처 변경1. 성능 측정 인프라 도입 (
|
| Layer / File(s) | Summary |
|---|---|
PerfTestingSupport 모듈·유틸 및 프로젝트 연결 Projects/Shared/PerfTestingSupport/*, Tuist/..., Scripts/*, fastlane/Fastfile, .gitignore |
Shared PerfTestingSupport(마커/카운터/UITest 런처/대기) 추가, PerfProfile 설정·의존성·패키지/스크립트 갱신, Crashlytics 경로/키 정리. |
| Feature 예제 앱 계측과 UITest 추가 `Projects/Feature/*/(Example |
ExampleUITests)/*` |
기능별 구현 변경(ProofPhoto/Home/Stats/GoalDetail) Projects/Feature/*/Sources/* |
ProofPhoto 미리보기용 previewImage 상태 도입 및 표시 분리, Home/Stats 셀프런 스크롤 하네스/마커, GoalDetail 오버레이 조건가드·마커 추가, Coordinator/View 리팩터링. |
빌드/의존성/문서 업데이트 Tuist/*, docs/perf-infra/*, Projects/App/Project.swift |
예제 UITest 타깃 생성 헬퍼/서명 자동화, Firebase/GoogleSignIn 의존성 조정, 버전/InfoPlist 도우미 추가, 성능 리포트/인벤토리/플랜 문서화. |
Sequence Diagram(s)
sequenceDiagram
participant ComponentA
participant ComponentB
ComponentA->>ComponentB: observable interaction
Estimated code review effort
🎯 5 (Critical) | ⏱️ ~120 minutes
Possibly related PRs
- Keepiluv/Keepiluv-iOS#304 — Tuist 의존성에서 FirebaseCore/GoogleSignInSwift 제거로 본 PR의 의존성 정리와 일치.
- Keepiluv/Keepiluv-iOS#199 — ProofPhotoReducer/View 경로 변경과 동일 영역을 수정.
- Keepiluv/Keepiluv-iOS#149 — GoalDetail ReactionBarView 관련 변경이 본 PR의 계측 추가와 동일 파일 교집합.
Suggested labels
🔨 refactor
Suggested reviewers
- jihun32
✨ 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
refactor/#312/TWI-92
|
@coderabbitai summary |
✅ Actions performedSummary regeneration triggered. |
🔗 관련 이슈
📙 작업 내역
Rendering Optimization Final Report
Summary
이번 PR은 perf-infra 기반 UI rendering optimization series의 최종 결과를 정리합니다.
시리즈는 Pass 3 → Pass 4 → Pass 5까지 진행했고, Pass 5를 마지막 pass로 종료합니다. 추가 Pass 6는 계획하지 않습니다.
perf-infra 이전에는 rendering 병목을 안정적으로 비교할 수 있는 공통 측정 체계가 없었습니다. 이번 작업을 통해 Feature Example 앱 기반 seed, marker, PerfProfile, xctrace 수집 흐름을 마련했고, Time Profiler + Animation Hitches 기준으로 production 변경을 gate했습니다.
전체 전역 개선률은 계산하지 않습니다. Pass 3는 Profile, Pass 4/5는 PerfProfile을 사용했고 일부 workload도 달라졌기 때문입니다. 대신 같은 workload before/after가 있는 항목만 성과로 인용합니다.
Baseline / Methodology
baseline-render-pass-1 = 56b5b63Production Improvements Kept
Main Outcome
ProofPhoto large typing latency 개선
Home self-run scroll 개선
Stats self-run scroll 개선
Home / Stats에서 동일 계열의 outsideBorder duplicated-subtree render issue를 각각 독립 gate 후 수정
위험한 Stats hypothesis는 ship하지 않고 revert
Reverted / Rejected Hypotheses
Regression Safety
bundle exec fastlane ios ci_pr통과 후 리뷰 반영 commit을 생성했습니다.Final Conclusion
Rendering optimization series는 완료되었습니다.
Pass 3에서 측정 기반 후보를 정리했고, Pass 4에서 ProofPhoto와 Home의 실질 병목을 제거했으며, Pass 5에서 Stats의 남은 주요 render duplication issue를 닫았습니다.
Pass 5가 최종 pass이며 Pass 6는 계획하지 않습니다.
남은 candidate와 residual note는 future reference only이고, 이번 PR의 active scope가 아닙니다.