refactor: 1차 대규모 View 리팩토링#309
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughShared PerfTestingSupport 모듈 추가와 Tuist 설정 확장, 각 Feature 예제/UITest 계측 및 시드 도입, GoalDetail/Home/ProofPhoto/Stats 코드·뷰 업데이트, twix-gate 확장, 수집/스모크 스크립트, 아키텍처·레퍼런스 문서와 스킬 스펙 정비가 포함됩니다. ChangesPerf 인프라·예제 계측·문서/스킬·게이트 통합 업데이트
Sequence Diagram(s)sequenceDiagram
participant Dev
participant Repo
participant UITests
participant Device
participant xctrace
Dev->>Repo: tuist generate / build (Profile)
UITests->>Device: launchForPerf(-UITEST, seed, scenario)
Device-->>UITests: feature.<slug>.ready
UITests->>xctrace: record attach (Time Profiler/Hitches)
xctrace-->>Dev: trace bundles
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Suggested labels
Suggested reviewers
✨ Finishing Touches🧪 Generate unit tests (beta)
|
|
@coderabbitai summary |
✅ Actions performedSummary regeneration triggered. |
jihun32
left a comment
There was a problem hiding this comment.
전 pr에서 말한 Mocking용 Testing 모듈이 없어서 여기저기 mocking용 client 구현된 거 같아서 Testing 모듈로 분리하면서 같이 리팩토링할게~~
코멘트 몇개 확인 ㄱㄱ
고생해써~
There was a problem hiding this comment.
아직 뒷커밋들 안봐서 판단하긴 애매한데 SharedPerfTestingSupport 내부 파일 계속 쓰는거면 public한 것들에 문서화 주석 누락 됐던데 한글로 달아주라
| /// some buttons on iOS 26.2 simulator. **The harness must NOT be mixed | ||
| /// into authoritative rendering scenarios** — rendering scenarios launch | ||
| /// via `-UITEST_RENDERING_SCENARIO` which keeps this harness disabled. | ||
| private struct HomePerfActionHarness: View { |
There was a problem hiding this comment.
이게 있는 이유가 뭐지?
기존 View에서 UITest 했을 때 나온 성능 이슈를 개선하려고 테스트 해보기 위해 있는건가
There was a problem hiding this comment.
다음 PR에서 작업 됐을 거 같긴한데 안돼있다면 내부 View struct로 나눈 것들 파일로 분리하자
🔗 관련 이슈
📙 작업 내역
Pass 3 정리 - UI Rendering 측정 및 최적화
한 줄 요약
Pass 3에서는 real-device xctrace 기반 UI Rendering 측정 체계를 구축하고, Home / GoalDetail / ProofPhoto / Stats 4개 feature의 주요 rendering scenario를 공식 baseline으로 수집했다.
최종 성과는 다음과 같다.
1. 핵심 성과 숫자
comment-text.abcdemarker 도달2. 가장 강하게 말할 수 있는 성과
2.1 GoalDetail idle TimelineView hotspot 100% 제거
Before에서는 GoalDetail initial render에서
TimelineView<>.UpdateFilter.updateValue()가 top user-code frame으로 반복 등장했다.Commit 7 이후에는 해당 frame이 Time Profiler 3개 rep에서 모두 사라졌다.
2.2 HomeView parent read-set 88.2% 축소
Commit 3은 직접적인 rendering wall-time 개선은 noise 범위 안이었지만, SwiftUI observation 구조 개선은 명확하다.
렌더링 시간 88% 개선아님HomeView parent read-set 88.2% 축소2.3 공식 baseline 48 / 48 clean traces 확보
측정 자동화/신뢰도 구축 성과로 가장 강하게 말할 수 있는 부분이다.
2.4 ProofPhoto typing correctness 100% 검증
ProofPhoto comment typing은 marker를 추가해 실제 입력 성공 여부를 검증했다.
comment-text.abcdemarker 도달2.5 Home card optimization 후보 6 / 6개 skip/defer
Commit 6은 무작정 구현하지 않고, GoalCardView / HomeGoalItem 계열이 실제 병목인지 조사했다.
3. 최종 성과 표
4. 성과 요약
Pass 3 성과:
⸻
5. 최종 결론
이번 Pass의 가장 강한 정량 성과는 다음 3개다.
최종 표현: