개발일기

Jetpack Compose UI 성능 최적화 팁

뱅우 2025. 8. 10. 12:11
반응형
Jetpack Compose UI 성능 최적화 팁

Jetpack Compose UI 성능 최적화 팁

Jetpack Compose는 선언형 UI 개발을 가능하게 해주지만, 무분별한 재구성(Recomposition)이나 잘못된 상태 관리로 인해 성능 저하가 발생할 수 있습니다. 이번 글에서는 Compose UI 성능을 향상시키는 실전 팁을 소개합니다.

1. 불필요한 Recomposition 줄이기

Compose에서 성능 문제의 주 원인은 과도한 Recomposition입니다. 다음과 같은 방법으로 이를 줄일 수 있습니다.

  • remember를 활용하여 상태를 재사용
  • derivedStateOf로 의존성이 없는 값 계산
  • State를 최소한의 범위에서만 사용

2. LazyColumn/LazyRow 최적화

리스트 UI는 효율적인 아이템 로딩이 중요합니다.

  • 리스트 아이템에 key 지정
  • 가능하다면 rememberLazyListState() 사용
  • 이미지 로딩은 Coil, Glide 등 캐싱 가능한 라이브러리 사용

3. Modifier 사용 시 주의

Modifier 체이닝이 너무 길면 성능에 영향을 줄 수 있습니다.

  • 공통 스타일은 Modifier 확장 함수로 분리
  • 자주 변하지 않는 Modifier는 remember로 캐싱

4. SnapshotFlow로 효율적인 데이터 처리

State 변화에 따른 Flow 처리 시 snapshotFlow를 사용하면 불필요한 UI 갱신을 줄일 수 있습니다.


val scrollState = rememberLazyListState()

LaunchedEffect(scrollState) {
    snapshotFlow { scrollState.firstVisibleItemIndex }
        .collect { index ->
            // 스크롤 위치 기반 로직
        }
}
    

5. Compose Preview 적극 활용

실행 없이 UI를 미리 확인할 수 있는 Preview 기능을 사용하면, 빌드 시간을 줄이고 개발 효율성을 높일 수 있습니다.


마무리: Compose는 성능이 우수하지만, 상태 관리와 Recomposition 제어가 핵심입니다. 위의 팁을 적용하면 앱의 반응성과 배터리 효율을 모두 높일 수 있습니다.

반응형