Jetpack Compose is the modern toolkit for building native Android UI. Here's
where you'll find the latest information about using Compose.

- [Overview](https://developer.android.com/develop/ui/compose): See all the resources available to Compose developers.
- [Tutorial](https://developer.android.com/develop/ui/compose/tutorial): Get started with Compose, by using it to build a simple UI.
- [Quick Guides](https://developer.android.com/quick-guides): **New!** Try out our fast and focused guides, designed to get you to your goal as quickly as possible.

## Foundation

- [Thinking in Compose](https://developer.android.com/develop/ui/compose/mental-model): Learn how Compose's declarative approach is different from the view-based approach you may have used in the past, and how to build a mental model of working with Compose.
- [Managing state](https://developer.android.com/develop/ui/compose/state): Learn about setting and using state in your Compose app.
- [Lifecycle of composables](https://developer.android.com/develop/ui/compose/lifecycle): Learn about the lifecycle of a composable, and how Compose decides if it needs to be redrawn.
- [Modifiers](https://developer.android.com/develop/ui/compose/modifiers): Learn how to use modifiers to augment or decorate your composables.
- [Side-effects in Compose](https://developer.android.com/develop/ui/compose/side-effects): Learn the best ways to manage side-effects.
- [Jetpack Compose Phases](https://developer.android.com/develop/ui/compose/phases): Learn about the steps Compose goes through to render your UI, and how to use that information to write efficient code
- [Architectural layering](https://developer.android.com/develop/ui/compose/layering): Learn about the architectural layers that make up Jetpack Compose, and the core principles that informed its design.
- [Performance](https://developer.android.com/develop/ui/compose/performance): Learn how to avoid the common programming pitfalls that can hurt your app's performance.
- [Semantics in Compose](https://developer.android.com/develop/ui/compose/semantics): Learn about the Semantics tree, which organizes your UI in a way that can be used by accessibility services and the testing framework.
- [Locally scoped data with CompositionLocal](https://developer.android.com/develop/ui/compose/compositionlocal): Learn how to use `CompositionLocal` to pass data through the Composition.

## Development environment

- [Android Studio with Compose](https://developer.android.com/develop/ui/compose/setup): Set up your development environment to use Compose.
- [Tooling for Compose](https://developer.android.com/develop/ui/compose/tooling): Learn about Android Studio's new features to support Compose.
- [Kotlin for Compose](https://developer.android.com/develop/ui/compose/kotlin): Learn how certain Kotlin-specific idioms work with Compose.
- [Compare Compose and View metrics](https://developer.android.com/develop/ui/compose/migrate/compare-metrics): Learn how migrating to Compose can affect your app's APK size and runtime performance.
- [Bill of Materials](https://developer.android.com/develop/ui/compose/bom): Manage all your Compose dependencies by specifying only the BOM's version.

## Design

- [Layouts](https://developer.android.com/develop/ui/compose/layouts): Learn about Compose's native layout components, and how to design your own.
  - [Layout basics](https://developer.android.com/develop/ui/compose/layouts/basics): Learn about the building blocks for a straightforward app UI.
  - [Material Components and layouts](https://developer.android.com/develop/ui/compose/components): Learn about Material components and layouts in Compose.
  - [Custom layouts](https://developer.android.com/develop/ui/compose/layouts/custom): Learn how to take control of your app's layout, and how to design a custom layout of your own.
  - [Support different display sizes](https://developer.android.com/develop/ui/compose/layouts/adaptive/support-different-display-sizes): Learn how to use Compose to build layouts that adapt to different display sizes, orientations, and form factors.
  - [Alignment lines](https://developer.android.com/develop/ui/compose/layouts/alignment-lines): Learn how to create custom alignment lines to precisely align and position your UI elements.
  - [Intrinsic measurements](https://developer.android.com/develop/ui/compose/layouts/intrinsic-measurements): Since Compose only allows you to measure UI elements once per pass, this page explains how to query for information about child elements before measuring them.
  - [ConstraintLayout](https://developer.android.com/develop/ui/compose/layouts/constraintlayout): Learn how to use `ConstraintLayout` in your Compose UI.
- [Design Systems](https://developer.android.com/develop/ui/compose/designsystems): Learn how to implement a design system and give your app a consistent look and feel.
  - [Material Design 3](https://developer.android.com/develop/ui/compose/designsystems/material3): Learn how to implement Material You with Compose's implementation of [Material Design 3](https://m3.material.io/).
  - [Migrating from Material 2 to Material 3](https://developer.android.com/develop/ui/compose/designsystems/material2-material3): Learn how to migrate your app from Material Design 2 to Material Design 3 in Compose.
  - [Material Design 2](https://developer.android.com/develop/ui/compose/designsystems/material): Learn how to customize Compose's implementation of [Material Design 2](https://material.io/) to fit your product's brand.
  - [Custom design systems](https://developer.android.com/develop/ui/compose/designsystems/custom): Learn how to implement a custom design system in Compose, and how to adapt existing Material Design composables to handle this.
  - [Anatomy of a theme](https://developer.android.com/develop/ui/compose/designsystems/anatomy): Learn about the lower-level constructs and APIs used by `MaterialTheme` and custom design systems.
- [Lists and grids](https://developer.android.com/develop/ui/compose/lists): Learn about some of Compose's options for managing and displaying lists and grids of data.
- [Text](https://developer.android.com/develop/ui/compose/text): Learn about Compose's main options for displaying and editing text.
- [Graphics](https://developer.android.com/develop/ui/compose/graphics): Learn about Compose's features for building and working with custom graphics.
- [Animation](https://developer.android.com/develop/ui/compose/animation/introduction): Learn about Compose's different options for animating your UI elements.
- [Gestures](https://developer.android.com/develop/ui/compose/touch-input/pointer-input): Learn how to build a Compose UI that detects and interacts with user gestures.
- [Handling user interactions](https://developer.android.com/develop/ui/compose/touch-input/user-interactions/handling-interactions): Learn how Compose abstracts low-level input into higher-level interactions, so you can customize how your components respond to user actions.

## Adopting Compose

- [Migrate existing View-based apps](https://developer.android.com/develop/ui/compose/migrate): Learn how to migrate your existing View-based app to Compose.
  - [Migration strategy](https://developer.android.com/develop/ui/compose/migrate/strategy): Learn the strategy to safely and incrementally introduce Compose into your codebase.
  - [Interoperability APIs](https://developer.android.com/develop/ui/compose/migrate/interoperability-apis): Learn about Compose's APIs to help you combine Compose with View-based UI.
  - [Other considerations](https://developer.android.com/develop/ui/compose/migrate/other-considerations): Learn about other considerations like theming, architecture, and testing while migrating your View-based app to Compose.
- [Compose and other libraries](https://developer.android.com/develop/ui/compose/libraries): Learn how to use view-based libraries in your Compose content.
- [Compose architecture](https://developer.android.com/develop/ui/compose/architecture): Learn how to implement the unidirectional flow pattern in Compose, how to implement events and state holders, and how to work with `ViewModel` in Compose.
- [Navigation](https://developer.android.com/develop/ui/compose/navigation): Learn how to use `NavController` to integrate the Navigation component with your Compose UI.
  - [Navigation for responsive UIs](https://developer.android.com/guide/topics/large-screens/navigation-for-responsive-uis): Learn how to design your app's navigation so it adapts to different screen sizes, orientations, and form factors.
- [Resources](https://developer.android.com/develop/ui/compose/resources): Learn how to work with your app's resources in your Compose code.
- [Accessibility](https://developer.android.com/develop/ui/compose/accessibility): Learn how to make your Compose UI suitable for users with different accessibility requirements.
- [Testing](https://developer.android.com/develop/ui/compose/testing): Learn about testing your Compose code.
  - [Testing cheat sheet](https://developer.android.com/develop/ui/compose/testing-cheatsheet): A quick reference of useful Compose testing APIs.

## Additional resources

- [Get setup](https://developer.android.com/develop/ui/compose/setup)
- [Curated learning pathway](https://developer.android.com/courses/pathways/compose)
- [Compose API guidelines](https://android.googlesource.com/platform/frameworks/support/+/androidx-main/compose/docs/compose-api-guidelines.md)
- [API reference](https://developer.android.com/reference/kotlin/androidx/compose)
- [Codelabs](https://goo.gle/compose-codelabs)
- [Sample apps](https://github.com/android/compose-samples)
- [Videos](https://www.youtube.com/user/androiddevelopers/search?query=%23jetpackcompose)

## Recommended for you

- Note: link text is displayed when JavaScript is off
- [Locally scoped data with CompositionLocal](https://developer.android.com/develop/ui/compose/compositionlocal)
- [Other considerations](https://developer.android.com/develop/ui/compose/migrate/other-considerations)
- [Anatomy of a theme in Compose](https://developer.android.com/develop/ui/compose/designsystems/anatomy)