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
'Updates.' 카테고리의 다른 글
Navigation Compose 2.8.8 -> 2.8.9 변경 사항 및 적용 방법 (2) | 2025.03.25 |
---|---|
🚀 Jetpack Compose BOM 2025.03.00 업데이트 정리 및 변경 사항 분석 (0) | 2025.03.25 |
Jetpack Compose UI 1.7.8 업데이트 상세 분석 (0) | 2025.02.15 |
Jetpack Compose 1.8.0-alpha08 업데이트 상세 분석 (1) | 2025.01.22 |