📦 deps(skills): sync thirdparty skills

This commit is contained in:
ci[bot]
2026-08-14 17:16:06 +08:00
parent 5d73964db8
commit 7233646398
68 changed files with 66265 additions and 4343 deletions
@@ -1,53 +1,53 @@
No,Category,Guideline,Description,Do,Don't,Code Good,Code Bad,Severity,Docs URL
1,Composable,Pure UI composables,Composable functions should only render UI,Accept state and callbacks,Calling usecase/repo,Pure UI composable,Business logic in UI,High,https://developer.android.com/jetpack/compose/mental-model
2,Composable,Small composables,Each composable has single responsibility,Split into components,Huge composable,Reusable UI,Monolithic UI,Medium,
3,Composable,Stateless by default,Prefer stateless composables,Hoist state,Local mutable state,Stateless UI,Hidden state,High,https://developer.android.com/jetpack/compose/state#state-hoisting
4,State,Single source of truth,UI state comes from one source,StateFlow from VM,Multiple states,Unified UiState,Scattered state,High,https://developer.android.com/topic/architecture/ui-layer
5,State,Model UI State,Use sealed interface/data class,UiState.Loading,Boolean flags,Explicit state,Flag hell,High,
6,State,remember only UI state,remember for UI-only state,"Scroll, animation",Business state,Correct remember,Misuse remember,High,https://developer.android.com/jetpack/compose/state
7,State,rememberSaveable,Persist state across config,rememberSaveable,remember,State survives,State lost,High,https://developer.android.com/jetpack/compose/state#restore-ui-state
8,State,derivedStateOf,Optimize recomposition,derivedStateOf,Recompute always,Optimized,Jank,Medium,https://developer.android.com/jetpack/compose/performance
9,SideEffect,LaunchedEffect keys,Use correct keys,LaunchedEffect(id),LaunchedEffect(Unit),Scoped effect,Infinite loop,High,https://developer.android.com/jetpack/compose/side-effects
10,SideEffect,rememberUpdatedState,Avoid stale lambdas,rememberUpdatedState,Capture directly,Safe callback,Stale state,Medium,https://developer.android.com/jetpack/compose/side-effects
11,SideEffect,DisposableEffect,Clean up resources,onDispose,No cleanup,No leak,Memory leak,High,
12,Architecture,Unidirectional data flow,UI → VM → State,onEvent,Two-way binding,Predictable flow,Hard debug,High,https://developer.android.com/topic/architecture
13,Architecture,No business logic in UI,Logic belongs to VM,Collect state,Call repo,Clean UI,Fat UI,High,
14,Architecture,Expose immutable state,Expose StateFlow,asStateFlow,Mutable exposed,Safe API,State mutation,High,
15,Lifecycle,Lifecycle-aware collect,Use collectAsStateWithLifecycle,Lifecycle aware,collectAsState,No leak,Leak,High,https://developer.android.com/jetpack/compose/lifecycle
16,Navigation,Event-based navigation,VM emits navigation event,"VM: Channel + receiveAsFlow(), V: Collect with Dispatchers.Main.immediate",Nav in UI,Decoupled nav,Using State / SharedFlow for navigation -> event is replayed and navigation fires again (StateFlow),High,https://developer.android.com/jetpack/compose/navigation
17,Navigation,Typed routes,Use sealed routes,sealed class Route,String routes,Type-safe,Runtime crash,Medium,
18,Performance,Stable parameters,Prefer immutable/stable params,@Immutable,Mutable params,Stable recomposition,Extra recomposition,High,https://developer.android.com/jetpack/compose/performance
19,Performance,Use key in Lazy,Provide stable keys,key=id,No key,Stable list,Item jump,High,
20,Performance,Avoid heavy work,No heavy computation in UI,Precompute in VM,Compute in UI,Smooth UI,Jank,High,
21,Performance,Remember expensive objects,remember heavy objects,remember,Recreate each recomposition,Efficient,Wasteful,Medium,
22,Theming,Design system,Centralized theme,Material3 tokens,Hardcoded values,Consistent UI,Inconsistent,High,https://developer.android.com/jetpack/compose/themes
23,Theming,Dark mode support,Theme-based colors,colorScheme,Fixed color,Adaptive UI,Broken dark,Medium,
24,Layout,Prefer Modifier over extra layouts,Use Modifier to adjust layout instead of adding wrapper composables,Use Modifier.padding(),Wrap content with extra Box,Padding via modifier,Box just for padding,High,https://developer.android.com/jetpack/compose/modifiers
25,Layout,Avoid deep layout nesting,Deep layout trees increase measure & layout cost,Keep layout flat,Box ? Column ? Box ? Row,Flat hierarchy,Deep nested tree,High,
26,Layout,Use Row/Column for linear layout,Linear layouts are simpler and more performant,Use Row / Column,Custom layout for simple cases,Row/Column usage,Over-engineered layout,High,
27,Layout,Use Box only for overlapping content,Box should be used only when children overlap,Stack elements,Use Box as Column,Proper overlay,Misused Box,Medium,
28,Layout,Prefer LazyColumn over Column scroll,Lazy layouts are virtualized and efficient,LazyColumn,Column.verticalScroll(),Lazy list,Scrollable Column,High,https://developer.android.com/jetpack/compose/lists
29,Layout,Avoid nested scroll containers,Nested scrolling causes UX & performance issues,Single scroll container,Scroll inside scroll,One scroll per screen,Nested scroll,High,
30,Layout,Avoid fillMaxSize by default,fillMaxSize may break parent constraints,Use exact size,Fill max everywhere,Constraint-aware size,Overfilled layout,Medium,
31,Layout,Avoid intrinsic size unless necessary,Intrinsic measurement is expensive,Explicit sizing,IntrinsicSize.Min,Predictable layout,Expensive measure,High,https://developer.android.com/jetpack/compose/layout/intrinsics
32,Layout,Use Arrangement and Alignment APIs,Declare layout intent explicitly,Use Arrangement / Alignment,Manual spacing hacks,Declarative spacing,Magic spacing,High,
33,Layout,Extract reusable layout patterns,Repeated layouts should be shared,Create layout composable,Copy-paste layouts,Reusable scaffold,Duplicated layout,High,
34,Theming,No hardcoded text style,Use typography,MaterialTheme.typography,Hardcode sp,Scalable,Inconsistent,Medium,
35,Testing,Stateless UI testing,Composable easy to test,Pass state,Hidden state,Testable,Hard test,High,https://developer.android.com/jetpack/compose/testing
36,Testing,Use testTag,Stable UI selectors,Modifier.testTag,Find by text,Stable tests,Flaky tests,Medium,
37,Preview,Multiple previews,Preview multiple states,@Preview,Single preview,Better dev UX,Misleading,Low,https://developer.android.com/jetpack/compose/tooling/preview
38,DI,Inject VM via Hilt,Use hiltViewModel,@HiltViewModel,Manual VM,Clean DI,Coupling,High,https://developer.android.com/training/dependency-injection/hilt-jetpack
39,DI,No DI in UI,Inject in VM,Constructor inject,Inject composable,Proper scope,Wrong scope,High,
40,Accessibility,Content description,Accessible UI,contentDescription,Ignore a11y,Inclusive,A11y fail,Medium,https://developer.android.com/jetpack/compose/accessibility
41,Accessibility,Semantics,Use semantics API,Modifier.semantics,None,Testable a11y,Invisible,Medium,
42,Animation,Compose animation APIs,Use animate*AsState,AnimatedVisibility,Manual anim,Smooth,Jank,Medium,https://developer.android.com/jetpack/compose/animation
43,Animation,Avoid animation logic in VM,Animation is UI concern,Animate in UI,Animate in VM,Correct layering,Mixed concern,Low,
44,Modularization,Feature-based UI modules,UI per feature,:feature:ui,God module,Scalable,Tight coupling,High,https://developer.android.com/topic/modularization
45,Modularization,Public UI contracts,Expose minimal UI API,Interface/Route,Expose impl,Encapsulated,Leaky module,Medium,
46,State,Snapshot state only,Use Compose state,mutableStateOf,Custom observable,Compose aware,Buggy UI,Medium,
47,State,Avoid mutable collections,Immutable list/map,PersistentList,MutableList,Stable UI,Silent bug,High,
48,Lifecycle,RememberCoroutineScope usage,Only for UI jobs,UI coroutine,Long jobs,Scoped job,Leak,Medium,https://developer.android.com/jetpack/compose/side-effects#remembercoroutinescope
49,Interop,Interop View carefully,Use AndroidView,Isolated usage,Mix everywhere,Safe interop,Messy UI,Low,https://developer.android.com/jetpack/compose/interop
50,Interop,Avoid legacy patterns,No LiveData in UI,StateFlow,LiveData,Modern stack,Legacy debt,Medium,
51,Debug,Use layout inspector,Inspect recomposition,Tools,Blind debug,Fast debug,Guessing,Low,https://developer.android.com/studio/debug/layout-inspector
52,Debug,Enable recomposition counts,Track recomposition,Debug flags,Ignore,Performance aware,Hidden jank,Low,
No,Category,Guideline,Description,Do,Don't,Code Good,Code Bad,Severity,Docs URL,Applies To,Status,Verified At
1,Composable,Pure UI composables,Composable functions should only render UI,Accept state and callbacks,Calling usecase/repo,Pure UI composable,Business logic in UI,High,https://developer.android.com/jetpack/compose/mental-model,jetpack-compose 1.11.4 (current stable),active,2026-08-13
2,Composable,Small composables,Each composable has single responsibility,Split into components,Huge composable,Reusable UI,Monolithic UI,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
3,Composable,Stateless by default,Prefer stateless composables,Hoist state,Local mutable state,Stateless UI,Hidden state,High,https://developer.android.com/jetpack/compose/state#state-hoisting,jetpack-compose 1.11.4 (current stable),active,2026-08-13
4,State,Single source of truth,UI state comes from one source,StateFlow from VM,Multiple states,Unified UiState,Scattered state,High,https://developer.android.com/topic/architecture/ui-layer,jetpack-compose 1.11.4 (current stable),active,2026-08-13
5,State,Model UI State,Use sealed interface/data class,UiState.Loading,Boolean flags,Explicit state,Flag hell,High,https://developer.android.com/topic/architecture/ui-layer#define-ui-state,jetpack-compose 1.11.4 (current stable),active,2026-08-13
6,State,remember only UI state,remember for UI-only state,"Scroll, animation",Business state,Correct remember,Misuse remember,High,https://developer.android.com/jetpack/compose/state,jetpack-compose 1.11.4 (current stable),active,2026-08-13
7,State,rememberSaveable,Persist state across config,rememberSaveable,remember,State survives,State lost,High,https://developer.android.com/jetpack/compose/state#restore-ui-state,jetpack-compose 1.11.4 (current stable),active,2026-08-13
8,State,derivedStateOf,Optimize recomposition,derivedStateOf,Recompute always,Optimized,Jank,Medium,https://developer.android.com/jetpack/compose/performance,jetpack-compose 1.11.4 (current stable),active,2026-08-13
9,SideEffect,LaunchedEffect keys,Use correct keys,LaunchedEffect(id),LaunchedEffect(Unit),Scoped effect,Infinite loop,High,https://developer.android.com/jetpack/compose/side-effects,jetpack-compose 1.11.4 (current stable),active,2026-08-13
10,SideEffect,rememberUpdatedState,Avoid stale lambdas,rememberUpdatedState,Capture directly,Safe callback,Stale state,Medium,https://developer.android.com/jetpack/compose/side-effects,jetpack-compose 1.11.4 (current stable),active,2026-08-13
11,SideEffect,DisposableEffect,Clean up resources,onDispose,No cleanup,No leak,Memory leak,High,https://developer.android.com/develop/ui/compose/side-effects#disposableeffect,jetpack-compose 1.11.4 (current stable),active,2026-08-13
12,Architecture,Unidirectional data flow,UI → VM → State,onEvent,Two-way binding,Predictable flow,Hard debug,High,https://developer.android.com/topic/architecture,jetpack-compose 1.11.4 (current stable),active,2026-08-13
13,Architecture,No business logic in UI,Logic belongs to VM,Collect state,Call repo,Clean UI,Fat UI,High,https://developer.android.com/topic/architecture/recommendations#separation-of-concerns,jetpack-compose 1.11.4 (current stable),active,2026-08-13
14,Architecture,Expose immutable state,Expose StateFlow,asStateFlow,Mutable exposed,Safe API,State mutation,High,https://developer.android.com/kotlin/flow/stateflow-and-sharedflow#stateflow,jetpack-compose 1.11.4 (current stable),active,2026-08-13
15,Lifecycle,Lifecycle-aware collect,Use collectAsStateWithLifecycle,Lifecycle aware,collectAsState,No leak,Leak,High,https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/collectAsStateWithLifecycle.composable,jetpack-compose 1.11.4 (current stable),active,2026-08-13
16,Navigation,Event-based navigation,VM emits navigation event,"VM: Channel + receiveAsFlow(), V: Collect with Dispatchers.Main.immediate",Nav in UI,Decoupled nav,Using State / SharedFlow for navigation -> event is replayed and navigation fires again (StateFlow),High,https://developer.android.com/jetpack/compose/navigation,jetpack-compose 1.11.4 (current stable),active,2026-08-13
17,Navigation,Typed routes,Use sealed routes,sealed class Route,String routes,Type-safe,Runtime crash,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
18,Performance,Stable parameters,Prefer immutable/stable params,@Immutable,Mutable params,Stable recomposition,Extra recomposition,High,https://developer.android.com/jetpack/compose/performance,jetpack-compose 1.11.4 (current stable),active,2026-08-13
19,Performance,Use key in Lazy,Provide stable keys,key=id,No key,Stable list,Item jump,High,https://developer.android.com/develop/ui/compose/lists#item-keys,jetpack-compose 1.11.4 (current stable),active,2026-08-13
20,Performance,Avoid heavy work,No heavy computation in UI,Precompute in VM,Compute in UI,Smooth UI,Jank,High,https://developer.android.com/develop/ui/compose/performance/bestpractices#use-remember,jetpack-compose 1.11.4 (current stable),active,2026-08-13
21,Performance,Remember expensive objects,remember heavy objects,remember,Recreate each recomposition,Efficient,Wasteful,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
22,Theming,Design system,Centralized theme,Material3 tokens,Hardcoded values,Consistent UI,Inconsistent,High,https://developer.android.com/jetpack/compose/themes,jetpack-compose 1.11.4 (current stable),active,2026-08-13
23,Theming,Dark mode support,Theme-based colors,colorScheme,Fixed color,Adaptive UI,Broken dark,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
24,Layout,Prefer Modifier over extra layouts,Use Modifier to adjust layout instead of adding wrapper composables,Use Modifier.padding(),Wrap content with extra Box,Padding via modifier,Box just for padding,High,https://developer.android.com/jetpack/compose/modifiers,jetpack-compose 1.11.4 (current stable),active,2026-08-13
25,Layout,Avoid deep layout nesting,Deep layout trees increase measure & layout cost,Keep layout flat,Box ? Column ? Box ? Row,Flat hierarchy,Deep nested tree,High,https://developer.android.com/develop/ui/compose/layouts/basics,jetpack-compose 1.11.4 (current stable),active,2026-08-13
26,Layout,Use Row/Column for linear layout,Linear layouts are simpler and more performant,Use Row / Column,Custom layout for simple cases,Row/Column usage,Over-engineered layout,High,https://developer.android.com/develop/ui/compose/layouts/basics#row,jetpack-compose 1.11.4 (current stable),active,2026-08-13
27,Layout,Use Box only for overlapping content,Box should be used only when children overlap,Stack elements,Use Box as Column,Proper overlay,Misused Box,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
28,Layout,Prefer LazyColumn over Column scroll,Lazy layouts are virtualized and efficient,LazyColumn,Column.verticalScroll(),Lazy list,Scrollable Column,High,https://developer.android.com/jetpack/compose/lists,jetpack-compose 1.11.4 (current stable),active,2026-08-13
29,Layout,Avoid nested scroll containers,Nested scrolling causes UX & performance issues,Single scroll container,Scroll inside scroll,One scroll per screen,Nested scroll,High,https://developer.android.com/develop/ui/compose/touch-input/pointer-input/scroll#nested-scrolling,jetpack-compose 1.11.4 (current stable),active,2026-08-13
30,Layout,Avoid fillMaxSize by default,fillMaxSize may break parent constraints,Use exact size,Fill max everywhere,Constraint-aware size,Overfilled layout,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
31,Layout,Avoid intrinsic size unless necessary,Intrinsic measurement is expensive,Explicit sizing,IntrinsicSize.Min,Predictable layout,Expensive measure,High,https://developer.android.com/jetpack/compose/layout/intrinsics,jetpack-compose 1.11.4 (current stable),active,2026-08-13
32,Layout,Use Arrangement and Alignment APIs,Declare layout intent explicitly,Use Arrangement / Alignment,Manual spacing hacks,Declarative spacing,Magic spacing,High,https://developer.android.com/develop/ui/compose/layouts/basics#align-items,jetpack-compose 1.11.4 (current stable),active,2026-08-13
33,Layout,Extract reusable layout patterns,Repeated layouts should be shared,Create layout composable,Copy-paste layouts,Reusable scaffold,Duplicated layout,High,https://developer.android.com/develop/ui/compose/components,jetpack-compose 1.11.4 (current stable),active,2026-08-13
34,Theming,No hardcoded text style,Use typography,MaterialTheme.typography,Hardcode sp,Scalable,Inconsistent,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
35,Testing,Stateless UI testing,Composable easy to test,Pass state,Hidden state,Testable,Hard test,High,https://developer.android.com/jetpack/compose/testing,jetpack-compose 1.11.4 (current stable),active,2026-08-13
36,Testing,Use testTag,Stable UI selectors,Modifier.testTag,Find by text,Stable tests,Flaky tests,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
37,Preview,Multiple previews,Preview multiple states,@Preview,Single preview,Better dev UX,Misleading,Low,https://developer.android.com/jetpack/compose/tooling/preview,jetpack-compose 1.11.4 (current stable),active,2026-08-13
38,DI,Inject VM via Hilt,Use hiltViewModel,@HiltViewModel,Manual VM,Clean DI,Coupling,High,https://developer.android.com/training/dependency-injection/hilt-jetpack,jetpack-compose 1.11.4 (current stable),active,2026-08-13
39,DI,No DI in UI,Inject in VM,Constructor inject,Inject composable,Proper scope,Wrong scope,High,https://developer.android.com/topic/architecture/recommendations#dependency-injection,jetpack-compose 1.11.4 (current stable),active,2026-08-13
40,Accessibility,Content description,Accessible UI,contentDescription,Ignore a11y,Inclusive,A11y fail,Medium,https://developer.android.com/jetpack/compose/accessibility,jetpack-compose 1.11.4 (current stable),active,2026-08-13
41,Accessibility,Semantics,Use semantics API,Modifier.semantics,None,Testable a11y,Invisible,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
42,Animation,Compose animation APIs,Use animate*AsState,AnimatedVisibility,Manual anim,Smooth,Jank,Medium,https://developer.android.com/jetpack/compose/animation,jetpack-compose 1.11.4 (current stable),active,2026-08-13
43,Animation,Avoid animation logic in VM,Animation is UI concern,Animate in UI,Animate in VM,Correct layering,Mixed concern,Low,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
44,Modularization,Feature-based UI modules,UI per feature,:feature:ui,God module,Scalable,Tight coupling,High,https://developer.android.com/topic/modularization,jetpack-compose 1.11.4 (current stable),active,2026-08-13
45,Modularization,Public UI contracts,Expose minimal UI API,Interface/Route,Expose impl,Encapsulated,Leaky module,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
46,State,Snapshot state only,Use Compose state,mutableStateOf,Custom observable,Compose aware,Buggy UI,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
47,State,Avoid mutable collections,Immutable list/map,PersistentList,MutableList,Stable UI,Silent bug,High,https://developer.android.com/develop/ui/compose/state#other-supported-types-of-state,jetpack-compose 1.11.4 (current stable),active,2026-08-13
48,Lifecycle,RememberCoroutineScope usage,Only for UI jobs,UI coroutine,Long jobs,Scoped job,Leak,Medium,https://developer.android.com/jetpack/compose/side-effects#remembercoroutinescope,jetpack-compose 1.11.4 (current stable),active,2026-08-13
49,Interop,Interop View carefully,Use AndroidView,Isolated usage,Mix everywhere,Safe interop,Messy UI,Low,https://developer.android.com/jetpack/compose/interop,jetpack-compose 1.11.4 (current stable),active,2026-08-13
50,Interop,Avoid legacy patterns,No LiveData in UI,StateFlow,LiveData,Modern stack,Legacy debt,Medium,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
51,Debug,Use layout inspector,Inspect recomposition,Tools,Blind debug,Fast debug,Guessing,Low,https://developer.android.com/studio/debug/layout-inspector,jetpack-compose 1.11.4 (current stable),active,2026-08-13
52,Debug,Enable recomposition counts,Track recomposition,Debug flags,Ignore,Performance aware,Hidden jank,Low,,jetpack-compose 1.11.4 (current stable),active,2026-08-13
1 No Category Guideline Description Do Don't Code Good Code Bad Severity Docs URL Applies To Status Verified At
2 1 Composable Pure UI composables Composable functions should only render UI Accept state and callbacks Calling usecase/repo Pure UI composable Business logic in UI High https://developer.android.com/jetpack/compose/mental-model jetpack-compose 1.11.4 (current stable) active 2026-08-13
3 2 Composable Small composables Each composable has single responsibility Split into components Huge composable Reusable UI Monolithic UI Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
4 3 Composable Stateless by default Prefer stateless composables Hoist state Local mutable state Stateless UI Hidden state High https://developer.android.com/jetpack/compose/state#state-hoisting jetpack-compose 1.11.4 (current stable) active 2026-08-13
5 4 State Single source of truth UI state comes from one source StateFlow from VM Multiple states Unified UiState Scattered state High https://developer.android.com/topic/architecture/ui-layer jetpack-compose 1.11.4 (current stable) active 2026-08-13
6 5 State Model UI State Use sealed interface/data class UiState.Loading Boolean flags Explicit state Flag hell High https://developer.android.com/topic/architecture/ui-layer#define-ui-state jetpack-compose 1.11.4 (current stable) active 2026-08-13
7 6 State remember only UI state remember for UI-only state Scroll, animation Business state Correct remember Misuse remember High https://developer.android.com/jetpack/compose/state jetpack-compose 1.11.4 (current stable) active 2026-08-13
8 7 State rememberSaveable Persist state across config rememberSaveable remember State survives State lost High https://developer.android.com/jetpack/compose/state#restore-ui-state jetpack-compose 1.11.4 (current stable) active 2026-08-13
9 8 State derivedStateOf Optimize recomposition derivedStateOf Recompute always Optimized Jank Medium https://developer.android.com/jetpack/compose/performance jetpack-compose 1.11.4 (current stable) active 2026-08-13
10 9 SideEffect LaunchedEffect keys Use correct keys LaunchedEffect(id) LaunchedEffect(Unit) Scoped effect Infinite loop High https://developer.android.com/jetpack/compose/side-effects jetpack-compose 1.11.4 (current stable) active 2026-08-13
11 10 SideEffect rememberUpdatedState Avoid stale lambdas rememberUpdatedState Capture directly Safe callback Stale state Medium https://developer.android.com/jetpack/compose/side-effects jetpack-compose 1.11.4 (current stable) active 2026-08-13
12 11 SideEffect DisposableEffect Clean up resources onDispose No cleanup No leak Memory leak High https://developer.android.com/develop/ui/compose/side-effects#disposableeffect jetpack-compose 1.11.4 (current stable) active 2026-08-13
13 12 Architecture Unidirectional data flow UI → VM → State onEvent Two-way binding Predictable flow Hard debug High https://developer.android.com/topic/architecture jetpack-compose 1.11.4 (current stable) active 2026-08-13
14 13 Architecture No business logic in UI Logic belongs to VM Collect state Call repo Clean UI Fat UI High https://developer.android.com/topic/architecture/recommendations#separation-of-concerns jetpack-compose 1.11.4 (current stable) active 2026-08-13
15 14 Architecture Expose immutable state Expose StateFlow asStateFlow Mutable exposed Safe API State mutation High https://developer.android.com/kotlin/flow/stateflow-and-sharedflow#stateflow jetpack-compose 1.11.4 (current stable) active 2026-08-13
16 15 Lifecycle Lifecycle-aware collect Use collectAsStateWithLifecycle Lifecycle aware collectAsState No leak Leak High https://developer.android.com/jetpack/compose/lifecycle https://developer.android.com/reference/kotlin/androidx/lifecycle/compose/collectAsStateWithLifecycle.composable jetpack-compose 1.11.4 (current stable) active 2026-08-13
17 16 Navigation Event-based navigation VM emits navigation event VM: Channel + receiveAsFlow(), V: Collect with Dispatchers.Main.immediate Nav in UI Decoupled nav Using State / SharedFlow for navigation -> event is replayed and navigation fires again (StateFlow) High https://developer.android.com/jetpack/compose/navigation jetpack-compose 1.11.4 (current stable) active 2026-08-13
18 17 Navigation Typed routes Use sealed routes sealed class Route String routes Type-safe Runtime crash Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
19 18 Performance Stable parameters Prefer immutable/stable params @Immutable Mutable params Stable recomposition Extra recomposition High https://developer.android.com/jetpack/compose/performance jetpack-compose 1.11.4 (current stable) active 2026-08-13
20 19 Performance Use key in Lazy Provide stable keys key=id No key Stable list Item jump High https://developer.android.com/develop/ui/compose/lists#item-keys jetpack-compose 1.11.4 (current stable) active 2026-08-13
21 20 Performance Avoid heavy work No heavy computation in UI Precompute in VM Compute in UI Smooth UI Jank High https://developer.android.com/develop/ui/compose/performance/bestpractices#use-remember jetpack-compose 1.11.4 (current stable) active 2026-08-13
22 21 Performance Remember expensive objects remember heavy objects remember Recreate each recomposition Efficient Wasteful Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
23 22 Theming Design system Centralized theme Material3 tokens Hardcoded values Consistent UI Inconsistent High https://developer.android.com/jetpack/compose/themes jetpack-compose 1.11.4 (current stable) active 2026-08-13
24 23 Theming Dark mode support Theme-based colors colorScheme Fixed color Adaptive UI Broken dark Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
25 24 Layout Prefer Modifier over extra layouts Use Modifier to adjust layout instead of adding wrapper composables Use Modifier.padding() Wrap content with extra Box Padding via modifier Box just for padding High https://developer.android.com/jetpack/compose/modifiers jetpack-compose 1.11.4 (current stable) active 2026-08-13
26 25 Layout Avoid deep layout nesting Deep layout trees increase measure & layout cost Keep layout flat Box ? Column ? Box ? Row Flat hierarchy Deep nested tree High https://developer.android.com/develop/ui/compose/layouts/basics jetpack-compose 1.11.4 (current stable) active 2026-08-13
27 26 Layout Use Row/Column for linear layout Linear layouts are simpler and more performant Use Row / Column Custom layout for simple cases Row/Column usage Over-engineered layout High https://developer.android.com/develop/ui/compose/layouts/basics#row jetpack-compose 1.11.4 (current stable) active 2026-08-13
28 27 Layout Use Box only for overlapping content Box should be used only when children overlap Stack elements Use Box as Column Proper overlay Misused Box Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
29 28 Layout Prefer LazyColumn over Column scroll Lazy layouts are virtualized and efficient LazyColumn Column.verticalScroll() Lazy list Scrollable Column High https://developer.android.com/jetpack/compose/lists jetpack-compose 1.11.4 (current stable) active 2026-08-13
30 29 Layout Avoid nested scroll containers Nested scrolling causes UX & performance issues Single scroll container Scroll inside scroll One scroll per screen Nested scroll High https://developer.android.com/develop/ui/compose/touch-input/pointer-input/scroll#nested-scrolling jetpack-compose 1.11.4 (current stable) active 2026-08-13
31 30 Layout Avoid fillMaxSize by default fillMaxSize may break parent constraints Use exact size Fill max everywhere Constraint-aware size Overfilled layout Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
32 31 Layout Avoid intrinsic size unless necessary Intrinsic measurement is expensive Explicit sizing IntrinsicSize.Min Predictable layout Expensive measure High https://developer.android.com/jetpack/compose/layout/intrinsics jetpack-compose 1.11.4 (current stable) active 2026-08-13
33 32 Layout Use Arrangement and Alignment APIs Declare layout intent explicitly Use Arrangement / Alignment Manual spacing hacks Declarative spacing Magic spacing High https://developer.android.com/develop/ui/compose/layouts/basics#align-items jetpack-compose 1.11.4 (current stable) active 2026-08-13
34 33 Layout Extract reusable layout patterns Repeated layouts should be shared Create layout composable Copy-paste layouts Reusable scaffold Duplicated layout High https://developer.android.com/develop/ui/compose/components jetpack-compose 1.11.4 (current stable) active 2026-08-13
35 34 Theming No hardcoded text style Use typography MaterialTheme.typography Hardcode sp Scalable Inconsistent Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
36 35 Testing Stateless UI testing Composable easy to test Pass state Hidden state Testable Hard test High https://developer.android.com/jetpack/compose/testing jetpack-compose 1.11.4 (current stable) active 2026-08-13
37 36 Testing Use testTag Stable UI selectors Modifier.testTag Find by text Stable tests Flaky tests Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
38 37 Preview Multiple previews Preview multiple states @Preview Single preview Better dev UX Misleading Low https://developer.android.com/jetpack/compose/tooling/preview jetpack-compose 1.11.4 (current stable) active 2026-08-13
39 38 DI Inject VM via Hilt Use hiltViewModel @HiltViewModel Manual VM Clean DI Coupling High https://developer.android.com/training/dependency-injection/hilt-jetpack jetpack-compose 1.11.4 (current stable) active 2026-08-13
40 39 DI No DI in UI Inject in VM Constructor inject Inject composable Proper scope Wrong scope High https://developer.android.com/topic/architecture/recommendations#dependency-injection jetpack-compose 1.11.4 (current stable) active 2026-08-13
41 40 Accessibility Content description Accessible UI contentDescription Ignore a11y Inclusive A11y fail Medium https://developer.android.com/jetpack/compose/accessibility jetpack-compose 1.11.4 (current stable) active 2026-08-13
42 41 Accessibility Semantics Use semantics API Modifier.semantics None Testable a11y Invisible Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
43 42 Animation Compose animation APIs Use animate*AsState AnimatedVisibility Manual anim Smooth Jank Medium https://developer.android.com/jetpack/compose/animation jetpack-compose 1.11.4 (current stable) active 2026-08-13
44 43 Animation Avoid animation logic in VM Animation is UI concern Animate in UI Animate in VM Correct layering Mixed concern Low jetpack-compose 1.11.4 (current stable) active 2026-08-13
45 44 Modularization Feature-based UI modules UI per feature :feature:ui God module Scalable Tight coupling High https://developer.android.com/topic/modularization jetpack-compose 1.11.4 (current stable) active 2026-08-13
46 45 Modularization Public UI contracts Expose minimal UI API Interface/Route Expose impl Encapsulated Leaky module Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
47 46 State Snapshot state only Use Compose state mutableStateOf Custom observable Compose aware Buggy UI Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
48 47 State Avoid mutable collections Immutable list/map PersistentList MutableList Stable UI Silent bug High https://developer.android.com/develop/ui/compose/state#other-supported-types-of-state jetpack-compose 1.11.4 (current stable) active 2026-08-13
49 48 Lifecycle RememberCoroutineScope usage Only for UI jobs UI coroutine Long jobs Scoped job Leak Medium https://developer.android.com/jetpack/compose/side-effects#remembercoroutinescope jetpack-compose 1.11.4 (current stable) active 2026-08-13
50 49 Interop Interop View carefully Use AndroidView Isolated usage Mix everywhere Safe interop Messy UI Low https://developer.android.com/jetpack/compose/interop jetpack-compose 1.11.4 (current stable) active 2026-08-13
51 50 Interop Avoid legacy patterns No LiveData in UI StateFlow LiveData Modern stack Legacy debt Medium jetpack-compose 1.11.4 (current stable) active 2026-08-13
52 51 Debug Use layout inspector Inspect recomposition Tools Blind debug Fast debug Guessing Low https://developer.android.com/studio/debug/layout-inspector jetpack-compose 1.11.4 (current stable) active 2026-08-13
53 52 Debug Enable recomposition counts Track recomposition Debug flags Ignore Performance aware Hidden jank Low jetpack-compose 1.11.4 (current stable) active 2026-08-13