Expert checklist and prompts for auditing and fixing Android accessibility issues, especially in Jetpack Compose.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Audit and improve Jetpack Compose runtime performance from code review and architecture. Use when asked to diagnose slow rendering, janky scrolling, excessive recompositions, or performance issues in Compose UI.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Audit Jetpack Compose view performance end-to-end, from instrumentation and baselining to root-cause analysis and concrete remediation steps.
Collect:
Focus on:
LazyColumn/LazyRow (key churn, missing keys).remember, unstable classes, lambdas).SubcomposeLayout misuse).Provide:
Explain how to collect data:
Ask for:
Important: Ensure profiling is done on a release build with R8 enabled. Debug builds have significant overhead.
Prioritize likely Compose culprits:
key churn, index-based keys).remember causing recreations on every recomposition.Modifier.size() constraints.Summarize findings with evidence from traces/Layout Inspector.
Apply targeted fixes:
@Stable or @Immutable annotations on data classes.LazyColumn/LazyRow items.derivedStateOf, lambda-based modifiers, or Modifier.drawBehind.remember { } or remember(key) { }.key() to control identity.// BAD: New lambda instance every recomposition
Button(onClick = { viewModel.doSomething(item) }) { ... }
// GOOD: Use remember or method reference
val onClick = remember(item) { { viewModel.doSomething(item) } }
Button(onClick = onClick) { ... }
// BAD: Sorting on every recomposition
@Composable
fun ItemList(items: List<Item>) {
val sorted = items.sortedBy { it.name } // Runs every recomposition
LazyColumn { items(sorted) { ... } }
}
// GOOD: Use remember with key
@Composable
fun ItemList(items: List<Item>) {
val sorted = remember(items) { items.sortedBy { it.name } }
LazyColumn { items(sorted) { ... } }
}
// BAD: Index-based identity (causes recomposition on list changes)
LazyColumn {
items(items) { item -> ItemRow(item) }
}
// GOOD: Stable key-based identity
LazyColumn {
items(items, key = { it.id }) { item -> ItemRow(item) }
}
// BAD: Unstable (contains List, which is not stable)
data class UiState(
val items: List<Item>,
val isLoading: Boolean
)
// GOOD: Mark as Immutable if truly immutable
@Immutable
data class UiState(
val items: ImmutableList<Item>, // kotlinx.collections.immutable
val isLoading: Boolean
)
// BAD: State read during composition (recomposes whole tree)
@Composable
fun AnimatedBox(scrollState: ScrollState) {
val offset = scrollState.value // Recomposes on every scroll
Box(modifier = Modifier.offset(y = offset.dp)) { ... }
}
// GOOD: Defer state read to layout/draw phase
@Composable
fun AnimatedBox(scrollState: ScrollState) {
Box(modifier = Modifier.offset {
IntOffset(0, scrollState.value) // Read in layout phase
}) { ... }
}
// BAD: Creates new Modifier chain every recomposition
Box(modifier = Modifier.padding(16.dp).background(Color.Red))
// GOOD for dynamic modifiers: Remember the modifier
val modifier = remember { Modifier.padding(16.dp).background(Color.Red) }
Box(modifier = modifier)
| Type | Stable by Default? | Fix |
|---|---|---|
Primitives (Int, String, Boolean) | Yes | N/A |
data class with stable fields | Yes* | Ensure all fields are stable |
List, Map, Set | No | Use ImmutableList from kotlinx |
Classes with var properties | No | Use @Stable if externally stable |
| Lambdas | No | Use remember { } |
Ask the user to:
Summarize the delta (recomposition count, frame drops, jank) if provided.
Provide:
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Expert checklist and prompts for auditing and fixing Android accessibility issues, especially in Jetpack Compose.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Expert guidance on setting up and maintaining a modern Android application architecture using Clean Architecture and Hilt. Use this when asked about project structure, module setup, or dependency injection.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Authoritative rules and patterns for production-quality Kotlin Coroutines onto Android. Covers structured concurrency, lifecycle integration, and reactive streams.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Guidance on implementing the Data Layer using Repository pattern, Room (Local), and Retrofit (Remote) with offline-first synchronization.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Production-ready scripts for Android app testing, building, and automation. Provides semantic UI navigation, build automation, log monitoring, and emulator lifecycle management. Optimized for AI agents with minimal token output.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Expert guidance on setting up scalable Gradle build logic using Convention Plugins and Version Catalogs.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.