본문 바로가기
Updates.

Jetpack Compose 1.8.0-beta02 업데이트 상세 분석

by h4r3 2025. 2. 14.
반응형
반응형

1. Jetpack Compose 1.8.0-beta02 개요

출시일: 2025년 2월 12일
라이브러리 그룹: androidx.compose.ui:ui-*
최신 버전: 1.8.0-beta02
이전 버전: 1.8.0-beta01

해당 버전은 Compose UI 성능을 개선하고, 기존의 버그를 수정하는 데 초점을 맞추고 있습니다. 특히, 복잡한 UI를 더욱 원활하게 렌더링할 수 있도록 최적화되었습니다.


 

2. 주요 변경 사항

✅ 성능 최적화

  • UI 렌더링 성능 향상: Compose UI의 렌더링 과정이 더욱 최적화되어 애니메이션과 스크롤이 부드러워졌습니다.
  • Recomposition 개선: 불필요한 recomposition을 줄여 성능을 향상시켰습니다.
  • Compose Preview 속도 개선: Android Studio에서 Compose Preview를 실행할 때 로딩 속도가 향상되었습니다.

🛠️ 버그 수정

  • State 관련 메모리 누수 해결: 특정 조건에서 remember를 사용할 때 발생하던 메모리 누수 버그가 수정되었습니다. 예를 들어:
    • Composition이 사라진 후에도 remember된 값이 유지되는 문제
    • 화면 회전(Configuration 변경) 후에도 GC가 remember 값을 정리하지 못하는 문제
    • LazyColumn 내에서 remember를 사용할 때, 스크롤이 진행됨에도 불필요하게 메모리가 유지되는 문제
  • LazyColumn 아이템 중복 생성 문제 해결: 리스트가 업데이트될 때 특정 상황에서 불필요한 아이템이 중복 생성되는 이슈가 해결되었습니다. (예: 리스트의 순서가 바뀌거나 데이터가 변경될 때 중복 생성되는 문제)
  • 터치 이벤트 인식 개선: 일부 기기에서 터치 이벤트가 지연되는 문제가 해결되었습니다.

✨ 새로운 기능 추가

  • 새로운 Modifier 추가: Modifier.focusProperties()가 업데이트되어 포커스 관리 기능이 더욱 강화되었습니다. 특히, 특정 UI 요소 간의 포커스 이동을 명확하게 제어할 수 있도록 최적화되었습니다.
  • TextField 입력 반응 개선 및 keyboardOptions 최적화: TextField의 입력 속도와 정확성이 향상되었으며, keyboardOptions의 일부 동작이 개선되었습니다.
  • TouchTargetSize 조절 기능 추가: 버튼 및 터치 가능한 UI 요소들의 터치 영역을 조절할 수 있는 기능이 추가되었습니다.

 


 

3. Jetpack Compose 1.8.0-beta01과의 차이점

변경 사항 1.8.0-beta01 1.8.0-beta02
UI 렌더링 속도 기존 성능 유지 렌더링 최적화로 성능 향상
Recomposition 일부 비효율적인 recomposition 발생 불필요한 recomposition 감소
LazyColumn 아이템 생성 업데이트 시 중복 생성 가능 중복 생성 문제 해결
메모리 누수 일부 상황에서 발생 가능 메모리 관리 최적화
TextField 입력 반응 입력 지연 문제 있음 반응 속도 향상 및 keyboardOptions 개선

 


 

4. Jetpack Compose 1.8.0-beta02 사용 방법

Jetpack Compose를 최신 버전으로 업데이트하려면 build.gradle.kts 파일에서 다음과 같이 1.8.0-beta02 버전을 지정하면 됩니다.

dependencies {
    implementation("androidx.compose.ui:ui:1.8.0-beta02")
    implementation("androidx.compose.ui:ui-tooling-preview:1.8.0-beta02")
    implementation("androidx.compose.material3:material3:1.8.0-beta02")
}

또는 composeBom을 사용하는 경우 다음과 같이 설정할 수 있습니다.

dependencies {
    implementation(platform("androidx.compose:compose-bom:2025.02.12"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-tooling-preview")
    implementation("androidx.compose.material3:material3")
}

 


 

5. 변경된 코드 예제

1️⃣ LazyColumn 아이템 중복 생성 해결

기존 코드 (중복 생성 가능성 있음):

LazyColumn {
    items(itemsList) { item ->
        Text(text = item.name)
    }
}

업데이트 후 코드 (키 값 설정으로 중복 방지):

LazyColumn {
    items(itemsList, key = { it.id }) { item ->
        Text(text = item.name)
    }
}

2️⃣ Modifier.focusProperties() 개선

기존 코드:

Modifier.focusTarget()

업데이트 후 코드 (포커스 이동 제어 기능 추가):

Modifier.focusProperties {
    canFocus = true
    next = otherFocusableComponent
}

이제 focusProperties()를 활용하여 특정 UI 요소 간의 포커스 이동을 세밀하게 조정할 수 있습니다.

3️⃣ TextField 입력 반응 최적화 및 keyboardOptions 개선

기존 코드:

TextField(value = text, onValueChange = { text = it })

업데이트 후 코드 (입력 반응 속도 향상 및 keyboardOptions 추가):

TextField(
    value = text,
    onValueChange = { text = it },
    keyboardOptions = KeyboardOptions.Default.copy(
        autoCorrect = true,
        imeAction = ImeAction.Done
    )
)

이제 keyboardOptions를 활용하여 ImeAction을 명확하게 설정하고, 자동 수정 기능을 추가할 수 있습니다.

 

 


 

6. 마이그레이션 가이드

1.8.0-beta01에서 1.8.0-beta02로 업그레이드할 때, 아래 사항을 고려하세요.

  • State 관리 최적화: remember를 사용한 상태 관리를 재검토하여 불필요한 recomposition이 발생하지 않도록 수정하세요.
  • LazyColumn 아이템 중복 체크: key 값을 명확하게 설정하여 리스트 업데이트 시 중복 생성이 되지 않도록 확인하세요.
  • TextField 이벤트 반응 확인: 입력 필드의 동작이 변경될 수 있으므로, 기존 로직이 정상적으로 동작하는지 테스트하세요.

 


7. 결론

Jetpack Compose 1.8.0-beta02는 성능 최적화와 버그 수정에 중점을 둔 업데이트입니다. UI 렌더링이 더욱 원활해졌으며, LazyColumn과 TextField 관련 문제가 해결되었습니다. 최신 버전을 사용하여 더욱 개선된 Compose 환경을 경험해 보세요.

🔗 공식 문서: Jetpack Compose Release Notes

 

반응형