Skip to content

refactor(designsystem): :core:designsystem 의 coil-network-okhttp 네트워크 의존 제거 #25

Closed

Description

@OnlyReadOneBook

📜 Overview (Required)

: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).

문제점

  1. 레이어 책임 위반 — UI 디자인 시스템이 네트워크 전송 구현(OkHttp)을 알 이유가 없다.
  2. OkHttp 중복/버전 분산 — 네트워킹은 이미 :core:network 가 OkHttp 를 소유. 이미지 페처가 별도 모듈에서 OkHttp 를 또 끌어오면 버전 정렬 지점이 둘로 갈린다.
  3. 의존 전파 — 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) 정상 로드.
  • 연관: designsystem 의존 규칙(UI 레이어는 data/network 비의존) 정리.

Metadata

Metadata

Labels

refactor코드 리팩토링 / 구조 개선

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions