
Jetpack Compose
- 28 installs
- 60 repo stars
- Updated June 14, 2026
- ahmed3elshaer/everything-claude-code-mobile
jetpack-compose is a Claude Code skill providing Jetpack Compose patterns for declarative Android UI, state management, theming, and animations.
About
jetpack-compose is a Claude Code skill with Jetpack Compose patterns for declarative Android UI. A developer uses it to structure state hoisting, composition (slot API, modifiers), theming, side effects, lists, and animations. It shows correct stateless-composable structure and performance-sensitive patterns like keyed LazyColumn items.
- State hoisting, remember variants, and derivedStateOf patterns
- Slot API, modifier conventions, and Material 3 theming
- Side effects (LaunchedEffect, DisposableEffect) and LazyColumn key usage
Jetpack Compose by the numbers
- 28 all-time installs (skills.sh)
- Ranked #684 of 1,039 Mobile Development skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
jetpack-compose capabilities & compatibility
- Capabilities
- jetpack compose · state management · compose theming · compose animations
- Use cases
- frontend · ui design
What jetpack-compose says it does
Jetpack Compose patterns for declarative UI, state management, theming, animations, and performance optimization.
Modern declarative UI patterns for Android.
npx skills add https://github.com/ahmed3elshaer/everything-claude-code-mobile --skill jetpack-composeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 28 |
|---|---|
| repo stars | ★ 60 |
| Last updated | June 14, 2026 |
| Repository | ahmed3elshaer/everything-claude-code-mobile ↗ |
What it does
Build declarative Android UI in Jetpack Compose with correct state, composition, and side-effect patterns.
Who is it for?
Android developers building UI with Jetpack Compose
Skip if: iOS SwiftUI or Android XML View UIs
When should I use this skill?
You are building Android UI with Jetpack Compose
By the numbers
- Covers state, composition, theming, side effects, lists, and animations
- Contrasts 4 remember variants
Files
Jetpack Compose Patterns
Modern declarative UI patterns for Android.
State Management
State Hoisting
// ✅ CORRECT: Stateless composable
@Composable
fun Counter(
count: Int,
onIncrement: () -> Unit,
modifier: Modifier = Modifier
) {
Row(modifier = modifier) {
Text("Count: $count")
Button(onClick = onIncrement) {
Text("+")
}
}
}
// Parent owns state
@Composable
fun CounterScreen() {
var count by rememberSaveable { mutableStateOf(0) }
Counter(
count = count,
onIncrement = { count++ }
)
}Remember Variants
// remember - Survives recomposition
val alpha by remember { mutableStateOf(1f) }
// rememberSaveable - Survives config change
var count by rememberSaveable { mutableStateOf(0) }
// remember with key - Resets on key change
val animation = remember(itemId) { Animatable(0f) }
// derivedStateOf - Computed, updates only when result changes
val isValid by remember {
derivedStateOf { email.isNotBlank() && password.length >= 8 }
}Composition Patterns
Slot API
@Composable
fun AppBar(
title: @Composable () -> Unit,
navigationIcon: @Composable () -> Unit = {},
actions: @Composable RowScope.() -> Unit = {}
) {
TopAppBar(
title = { title() },
navigationIcon = { navigationIcon() },
actions = actions
)
}
// Usage
AppBar(
title = { Text("Home") },
navigationIcon = { IconButton(onClick = {}) { Icon(Icons.Default.Menu, null) } },
actions = {
IconButton(onClick = {}) { Icon(Icons.Default.Search, null) }
}
)Modifier Pattern
@Composable
fun CustomButton(
onClick: () -> Unit,
modifier: Modifier = Modifier, // First optional parameter
enabled: Boolean = true,
content: @Composable RowScope.() -> Unit
) {
Button(
onClick = onClick,
modifier = modifier, // Apply modifier first
enabled = enabled,
content = content
)
}Side Effects
LaunchedEffect
@Composable
fun HomeScreen(viewModel: HomeViewModel) {
// Runs once
LaunchedEffect(Unit) {
viewModel.loadData()
}
// Runs when key changes
LaunchedEffect(userId) {
viewModel.loadUser(userId)
}
}DisposableEffect
@Composable
fun LifecycleObserver(onResume: () -> Unit) {
val lifecycleOwner = LocalLifecycleOwner.current
DisposableEffect(lifecycleOwner) {
val observer = LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_RESUME) onResume()
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
}
}
}Theming
Material 3
@Composable
fun AppTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colorScheme = if (darkTheme) DarkColorScheme else LightColorScheme
MaterialTheme(
colorScheme = colorScheme,
typography = AppTypography,
content = content
)
}
// Usage
val backgroundColor = MaterialTheme.colorScheme.surface
val textStyle = MaterialTheme.typography.bodyLargeLists
LazyColumn
LazyColumn {
items(
items = users,
key = { it.id } // Critical for performance
) { user ->
UserItem(user = user)
}
}Animations
Animate Values
val alpha by animateFloatAsState(
targetValue = if (visible) 1f else 0f,
animationSpec = tween(durationMillis = 300)
)
val size by animateDpAsState(
targetValue = if (expanded) 200.dp else 100.dp
)AnimatedContent
AnimatedContent(
targetState = state,
transitionSpec = {
fadeIn() togetherWith fadeOut()
}
) { targetState ->
when (targetState) {
is Loading -> LoadingContent()
is Success -> SuccessContent(targetState.data)
is Error -> ErrorContent()
}
}---
Remember: Compose is declarative. Describe the UI, don't command it.
Related skills
FAQ
Does it cover side effects?
Yes. It shows LaunchedEffect for keyed work and DisposableEffect for lifecycle observers.
What state patterns are included?
State hoisting, remember, rememberSaveable, remember with key, and derivedStateOf.