Compose Multi-Module ThemeBuilder + Architecture

Compose ThemeBuilder + Multi-module Architecture

1. ThemeBuilder의 Multi-Module 확장 전략

대규모 앱에서는 ThemeBuilder를 계층적으로 설계해야 한다.

구조 예시

core/
  theme/
    Color.kt
    Typography.kt
    Spacing.kt
    Elevation.kt
    ThemeBuilder.kt

feature-home/
  ui/
  HomeThemeOverlay.kt

feature-settings/
  ui/
  SettingsThemeOverlay.kt

ThemeBuilder 기본 계층

1) core-theme
2) feature-overlay themes
3) runtime override via CompositionLocalProvider


2. Feature Module Overlay Example

@Composable
fun HomeTheme(content: @Composable () -> Unit) {
    CompositionLocalProvider(
        LocalSpacing provides Spacing(medium = 20.dp)
    ) {
        content()
    }
}

Home 화면 전용 spacing을 적용.


3. Large-scale Compose Architecture Guide

app/
  ui/
    navigation/
    theme/
core/
  domain/
  data/
  design-system/
features/
  featureA/
  featureB/

3-2. Compose 상태 관리 원칙

  • UI state는 ViewModel에서 Flow/StateFlow로 관리
  • CompositionLocal은 환경 값 전달 전용
  • Navigation과 CompositionLocal은 BackStackEntry 스코프 기반으로 관리
  • ThemeBuilder는 최상단(AppTheme)에서 통합 제공

4. Snapshot System Locking & Observer Dispatch

Snapshot Locking 원리

snapshot.enterMutableState()
  assign write observers
  modify state
snapshot.record
snapshot.leaveMutableState()

Observer Dispatch 흐름

state write →
  snapshot notifies observer →
    Recomposer schedules frame →
      recomposition → applyChanges

Snapshot은 thread-safe하며 lock-free 구현인 경우도 있음 (atomic operations 기반).