You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
refactor(designsystem): :core:designsystem 의 coil-network-okhttp 네트워크 의존 제거 #25
:core:designsystem 모듈이 implementation(libs.coil.network.okhttp) 에 직접 의존하고 있다. designsystem 은 색·타이포·공용 컴포넌트만 책임지는 순수 UI 레이어여야 하는데, OkHttp 기반 네트워크 이미지 페처를 직접 들고 있어 레이어 책임이 어긋난다.
현재 상태
선언 위치: core/designsystem/build.gradle.kts
implementation(libs.coil.compose)
implementation(libs.coil.network.okhttp) // ← 문제: UI 모듈이 네트워크 스택 의존
designsystem 코드에서 coil3.network.* / ImageLoader / OkHttpNetworkFetcher 를 직접 import 하는 곳은 0건. coil.network.okhttp 는 AsyncImage 가 http(s) URL 을 로드할 때 필요한 런타임 페처일 뿐, designsystem 이 직접 쓰는 API 가 아니다.
AsyncImage 실제 사용처: CombinationCard(designsystem) + :feature:combination(ImageUploadSection, DetailScreen) + :feature:profile(EditProfileScreen, MyScreen).
문제점
레이어 책임 위반 — UI 디자인 시스템이 네트워크 전송 구현(OkHttp)을 알 이유가 없다.
OkHttp 중복/버전 분산 — 네트워킹은 이미 :core:network 가 OkHttp 를 소유. 이미지 페처가 별도 모듈에서 OkHttp 를 또 끌어오면 버전 정렬 지점이 둘로 갈린다.
의존 전파 — designsystem 을 의존하는 모든 feature 가 불필요하게 네트워크 페처를 transitive 로 받는다.
📍 Note (Optional)
해결 방향(택1, 별도 논의):
(A) coil.network.okhttp 를 :app 으로 올려 런타임에만 클래스패스에 두고, designsystem 은 coil.compose(UI API)만 의존. 페처는 Coil 이 런타임에 자동 탐지.
(B) 커스텀 ImageLoader 를 :app/:core:network 에서 Hilt 로 제공하고 :core:network 의 OkHttpClient 를 공유(싱글 OkHttp).
검증 기준: ./gradlew :app:assembleDebug 통과 + 네트워크 이미지(AsyncImage) 정상 로드.
Activity