본문 바로가기
Updates.

🚀 Jetpack Compose BOM 2025.03.00 업데이트 정리 및 변경 사항 분석

by h4r3 2025. 3. 25.
반응형

안녀하세요

Jetpack Compose BOM 2025.03.00 버전이 업데이트되었습니다~!

 

이번 버전에서는 다양한 최적화와 기능 추가가 이루어졌으며, 몇 가지 API 변경 사항도 포함되어 있습니다.

아래에서 각 라이브러리별 업데이트된 버전과 변경 사항, 예제 코드까지 상세히 설명해 드리겠습니다. 👨‍🏫📚


1️⃣ Jetpack Compose BOM이란?

Compose BOM(Bill of Materials)은 Jetpack Compose 관련 라이브러리의 버전을 일괄적으로 관리할 수 있도록 도와줍니다.
이를 사용하면 개별 라이브러리의 버전을 직접 지정하지 않고, BOM을 통해 일관된 버전을 유지할 수 있습니다.

dependencies {
    implementation(platform("androidx.compose:compose-bom:2025.03.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.material:material")
    implementation("androidx.compose.runtime:runtime")
}

2️⃣ 주요 변경 사항 및 개선점

이번 2025.03.00 버전에서는 성능 개선, 새로운 기능 추가, 버그 수정, 그리고 API 변경이 이루어졌습니다.

1. 성능 최적화

  • Recomposition(재구성) 성능 개선
    • Compose가 변경된 UI 요소만 다시 그리는 과정이 최적화됨.
    • 특정 상황에서 불필요한 Recomposition이 감소하여 UI가 더 부드러워짐.
  • 메모리 사용량 감소
    • UI 상태(state)를 관리하는 방식이 개선되어 메모리 할당이 최적화됨.
    • 리스트 렌더링 성능이 향상됨 (특히 LazyColumn, LazyRow).

2. 새롭게 추가된 기능

  • Modifier.animateContentSize 개선
    • 기존 Modifier.animateContentSize()에 애니메이션 곡선(Curve) 지정 기능 추가
    • 더 부드러운 애니메이션 효과 적용 가능
    Box(
        modifier = Modifier
            .size(100.dp)
            .animateContentSize(animationSpec = tween(500, easing = LinearEasing))
    )
    
  • Material3 지원 확대
    • 최신 Material3 디자인 가이드라인을 반영하여 추가적인 컴포넌트 지원
    • MaterialTheme 내부적으로 새로운 색상 팔레트 및 Typography 적용 가능

3. 버그 수정 및 안정성 향상

  • LazyColumn의 오버스크롤(over-scroll) 버그 수정
  • PointerInput 이벤트 충돌 해결 (Modifier.pointerInput 관련 버그 수정)
  • remember 및 LaunchedEffect가 특정 상황에서 예상치 못하게 초기화되는 문제 해결

3️⃣ 라이브러리별 변경 사항 및 예제 코드

각 라이브러리의 업데이트된 버전과 주요 변경 내용을 살펴보겠습니다.

라이브러리 이전 버전 최신 버전 (2025.03.00) 변경 사항

compose-ui 1.7.6 1.8.0 Recomposition 최적화, PointerInput 버그 수정
compose-runtime 1.7.6 1.8.0 상태 관리 개선, 메모리 할당 최적화
compose-foundation 1.7.6 1.8.0 animateContentSize 개선, LazyColumn 성능 향상
compose-material3 1.2.0 1.3.0 새로운 Material3 컴포넌트 추가
compose-navigation 2.7.0 2.8.0 Navigation 애니메이션 최적화

🔹 LazyColumn의 성능 개선

LazyColumn(
    modifier = Modifier.fillMaxSize()
) {
    items(100) { index ->
        Text(
            text = "아이템 $index",
            modifier = Modifier
                .padding(16.dp)
                .animateItemPlacement() // 새로운 애니메이션 추가
        )
    }
}

🔹 remember의 최적화된 사용 방식

@Composable
fun ExampleScreen() {
    var counter by rememberSaveable { mutableStateOf(0) }
    
    Button(onClick = { counter++ }) {
        Text("클릭 횟수: $counter")
    }
}

 


4️⃣ Compose BOM 업데이트 후 고려할 사항

💡 기존 코드가 정상적으로 동작하는지 반드시 확인해야 합니다!
업데이트 후 특정 기능이 변경되었거나, @Deprecated(사용 중단 예정)된 API가 있을 수 있습니다.

  1. Modifier 변경사항 확인
    • Modifier.padding 등 일부 함수의 파라미터 방식이 변경되었을 수 있음.
    // 기존 방식
    Modifier.padding(16.dp)
    
    // 최신 방식
    Modifier.padding(all = 16.dp)
    
  2. Deprecated(사용 중단) API 점검
    • rememberSaveable을 사용하지 않고 remember만 사용하면 데이터가 유지되지 않을 수 있음.
  3. 새로운 기능 적극 활용
    • animateContentSize()의 애니메이션 설정 가능하므로 UI 개선 가능.

5️⃣ 결론 및 마무리

Compose BOM 2025.03.00 핵심 요약

✔️ Recomposition 성능 최적화 및 메모리 최적화
✔️ 새로운 애니메이션 및 Modifier 기능 추가
✔️ Material3 컴포넌트 지원 확대
✔️ 버그 수정 및 안정성 개선
✔️ Deprecated API 확인 후 마이그레이션 필요

📌 추천하는 다음 단계

  1. composeBom을 2025.03.00으로 업데이트 후 테스트 진행
  2. 변경된 API 확인 및 코드 수정
  3. 새로운 기능(animateContentSize, rememberSaveable) 활용하여 UI 개선
  4. LazyColumn 성능 최적화 기능을 적용하여 리스트 스크롤 성능 향상

 

이제 2025.03.00 업데이트를 적용하고, 더 효율적인 Compose UI를 만들어보세요! 🚀

반응형