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 (/develop/ui/compose): See all the resources available to Compose
developers.
Tutorial (/develop/ui/compose/tutorial): Get started with Compose, by using it to build a
simple UI.
Quick Guides (/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 (/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 (/develop/ui/compose/state): Learn about setting and using state in your
Compose app.
Lifecycle of composables (/develop/ui/compose/lifecycle): Learn about the lifecycle of a
composable, and how Compose decides if it needs to be redrawn.
Modifiers (/develop/ui/compose/modifiers): Learn how to use modifiers to augment or
decorate your composables.
Side-effects in Compose (/develop/ui/compose/side-effects): Learn the best ways to
manage side-effects.
Jetpack Compose Phases (/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 (/develop/ui/compose/layering): Learn about the architectural
layers that make up Jetpack Compose, and the core principles that informed its
design.
Performance (/develop/ui/compose/performance): Learn how to avoid the common
programming pitfalls that can hurt your app's performance.
Semantics in Compose (/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 (/develop/ui/compose/compositionlocal):
Learn how to use CompositionLocal to pass data through the Composition.
Development environment
Android Studio with Compose (/develop/ui/compose/setup): Set up your development
environment to use Compose.
Tooling for Compose (/develop/ui/compose/tooling): Learn about Android Studio's new
features to support Compose.
Kotlin for Compose (/develop/ui/compose/kotlin): Learn how certain Kotlin-specific
idioms work with Compose.
Compare Compose and View metrics (/develop/ui/compose/migrate/compare-metrics):
Learn how migrating to Compose can affect your app's APK size and runtime
performance.
Bill of Materials (/develop/ui/compose/bom): Manage all your Compose dependencies
by specifying only the BOM's version.
Design
Layouts (/develop/ui/compose/layouts): Learn about Compose's native layout
components, and how to design your own.
Layout basics (/develop/ui/compose/layouts/basics): Learn about the building
blocks for a straightforward app UI.
Material Components and layouts (/develop/ui/compose/components): Learn about
Material components and layouts in Compose.
Custom layouts (/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 screen sizes
(/develop/ui/compose/layouts/adaptive/support-different-screen-sizes): Learn how to
use Compose to build layouts that adapt to different screen sizes,
orientations, and form factors.
Alignment lines (/develop/ui/compose/layouts/alignment-lines): Learn how to create
custom alignment lines to precisely align and position your UI elements.
Intrinsic measurements (/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 (/develop/ui/compose/layouts/constraintlayout): Learn how to use
ConstraintLayout in your Compose UI.
Design Systems (/develop/ui/compose/designsystems): Learn how to implement a design
system and give your app a consistent look and feel.
Material Design 3 (/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
(/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 (/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 (/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 (/develop/ui/compose/designsystems/anatomy): Learn about
the lower-level constructs and APIs used by MaterialTheme and custom
design systems.
Lists and grids (/develop/ui/compose/lists): Learn about some of Compose's options for
managing and displaying lists and grids of data.
Text (/develop/ui/compose/text): Learn about Compose's main options for displaying
and editing text.
Graphics (/develop/ui/compose/graphics): Learn about Compose's features for building
and working with custom graphics.
Animation (/develop/ui/compose/animation/introduction): Learn about Compose's
different options for animating your UI elements.
Gestures (/develop/ui/compose/touch-input/pointer-input): Learn how to build a Compose
UI that detects and interacts with user gestures.
Handling user interactions
(/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 (/develop/ui/compose/migrate): Learn how to migrate
your existing View-based app to Compose.
Migration strategy (/develop/ui/compose/migrate/strategy): Learn the strategy to
safely and incrementally introduce Compose into your codebase.
Interoperability APIs (/develop/ui/compose/migrate/interoperability-apis): Learn
about Compose's APIs to help you combine Compose with View-based UI.
Other considerations (/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 (/develop/ui/compose/libraries): Learn how to use view-
based libraries in your Compose content.
Compose architecture (/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 (/develop/ui/compose/navigation): Learn how to use NavController to
integrate the Navigation component with your Compose UI.
Navigation for responsive UIs
(/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 (/develop/ui/compose/resources): Learn how to work with your app's
resources in your Compose code.
Accessibility (/develop/ui/compose/accessibility): Learn how to make your Compose UI
suitable for users with different accessibility requirements.
Testing (/develop/ui/compose/testing): Learn about testing your Compose code.
Testing cheat sheet (/develop/ui/compose/testing-cheatsheet): A quick reference of
useful Compose testing APIs.
Additional resources
Get setup (/develop/ui/compose/setup)
Curated learning pathway (/courses/pathways/compose)
Compose API guidelines
(https://android.googlesource.com/platform/frameworks/support/+/androidx-
main/compose/docs/compose-api-guidelines.md)
API reference (/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)
Content and code samples on this page are subject to the licenses described in the Content License
(/license). Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-06-13 UTC.