Get started with Jetpack Compose

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

  • Overview: See all the resources available to Compose developers.
  • Tutorial: Get started with Compose, by using it to build a simple UI.


  • Thinking in Compose: 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: Learn about setting and using state in your Compose app.
  • Lifecycle of composables: Learn about the lifecycle of a composable, and how Compose decides if it needs to be redrawn.
  • Side-effects in Compose: Learn the best ways to manage side-effects.
  • Jetpack 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: Learn about the architectural layers that make up Jetpack Compose, and the core principles that informed its design.
  • Semantics in Compose: 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: Learn how to use CompositionLocal to pass data through the Composition.

Development environment


  • Layouts: Learn about Compose's native layout components, and how to design your own.
    • Layout basics: Learn about the building blocks for a straightforward app UI.
    • Material Components and layouts: Learn about Material components and layouts in Compose.
    • Custom layouts: Learn how to take control of your app's layout, and how to design a custom layout of your own.
    • Build adaptive layouts: Learn how to use Compose to build layouts that adapt to different screen sizes, orientations, and form factors.
    • Alignment lines: Learn how to create custom alignment lines to precisely align and position your UI elements.
    • 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: Learn how to use ConstraintLayout in your Compose UI.
  • Theming: Learn how to theme your Compose-based UI.
    • Material Theming: Learn how to customize Compose's implementation of Material Design to fit your product's brand.
    • Custom design systems: Learn how to implement a custom design system in Compose, and how to adapt existing Material composables to handle this.
    • Anatomy of a theme: Learn about the lower-level constructs and APIs used by MaterialTheme and custom design systems.
  • Lists: Learn about some of Compose's options for managing and displaying lists of data.
  • Text: Learn about Compose's main options for displaying and editing text.
  • Graphics: Learn about Compose's features for building and working with custom graphics.
  • Animation: Learn about Compose's different options for animating your UI elements.
  • Gestures: Learn how to build a Compose UI that detects and interacts with user gestures.

Adopting Compose

Additional resources