Android Jetpack
Jetpack is a suite of libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices so that developers can focus on the code they care about.
Jetpack Compose
Develop UI with Compose
A modern toolkit for building native UI that enables you to simplify and accelerate UI development on Android.
Why use Android Jetpack?
Follow best practices
Built around modern design practices, Android Jetpack Libraries enable fewer crashes and less memory leaks with backwards-compatibility baked in.
Eliminate boilerplate code
Android Jetpack manages tedious activities like background tasks, navigation, and lifecycle management, so you can focus on what makes your app great.
Reduce fragmentation
Reduce complexity with libraries that work consistently across Android versions and devices.
Jetpack libraries Explore all libraries
* Popular and often-used libraries are listed first
activity * | Access composable APIs built on top of Activity. |
appcompat * | Allows access to new APIs on older API versions of the platform (many using Material Design). |
appsearch * | Build custom in-app search capabilities for your users. |
camera * | Build mobile camera apps. |
compose * | Define your UI programmatically with composable functions that describe its shape and data dependencies. |
databinding * | Bind UI components in your layouts to data sources in your app using a declarative format. |
fragment * | Segment your app into multiple, independent screens that are hosted within an Activity. |
hilt * | Extend the functionality of Dagger Hilt to enable dependency injection of certain classes from the androidx libraries. |
lifecycle * | Build lifecycle-aware components that can adjust behavior based on the current lifecycle state of an activity or fragment. |
Material Design Components * | Modular and customizable Material Design UI components for Android. |
navigation * | Build and structure your in-app UI, handle deep links, and navigate between screens. |
paging * | Load data in pages, and present it in a RecyclerView. |
room * | Create, store, and manage persistent data backed by a SQLite database. |
test * | Testing in Android. |
work * | Schedule and execute deferrable, constraint-based background tasks. |
ads | Get an advertising ID with or without Play Services. |
annotation | Expose metadata that helps tools and other developers understand your app's code. |
arch.core | Helper for other arch dependencies, including JUnit test rules that can be used with LiveData. |
asynclayoutinflater | Inflate layouts asynchronously to avoid jank in the UI. |
autofill | Improve autofill accuracy via extending hints. |
benchmark | Accurately measure your code's performance within Android Studio. |
biometric | Authenticate with biometrics or device credentials, and perform cryptographic operations. |
bluetooth | Use the Android platform's Bluetooth features with backward-compatible APIs. |
browser | Display webpages in the user's default browser. |
camera.viewfinder | Standalone Composable and View based Viewfinder for Camera" |
car-app | Build templated apps for Android Auto and Android Automotive OS. |
cardview | Implement the Material Design card pattern with round corners and drop shadows. |
collection | Reduce the memory impact of existing and new collections that are small. |
compose.animation | Build animations in their Jetpack Compose applications to enrich the user experience. |
compose.compiler | Transform @Composable functions and enable optimizations with a Kotlin compiler plugin. |
compose.foundation | Write Jetpack Compose applications with ready to use building blocks and extend foundation to build your own design system pieces. |
compose.material | Build Jetpack Compose UIs with ready to use Material Design Components. This is the higher level entry point of Compose, designed to provide components that match those described at www.material.io. |
compose.material3 | Build Jetpack Compose UIs with Material Design 3 Components, the next evolution of Material Design. Material 3 includes updated theming and components and Material You personalization features like dynamic color, and is designed to be cohesive with the new Android 12 visual style and system UI. |
compose.material3.adaptive | Use the Material 3 adaptive library to create adaptive UIs that will adapt themselves automatically according to the current window configurations like window size classes or device postures. The library provides both default scaffold implementations and necessary building block composables to create your own custom experiences. |
compose.runtime | Fundamental building blocks of Compose's programming model and state management, and core runtime for the Compose Compiler Plugin to target. |
compose.ui | Fundamental components of compose UI needed to interact with the device, including layout, drawing, and input. |
concurrent | Move tasks off the main thread with coroutines and take advantage of ListenableFuture. |
constraintlayout | Position and size widgets in a flexible way with relative positioning. |
contentpager | Load and page across ContentProvider data in a background thread. |
coordinatorlayout | Position top-level application widgets, such as AppBarLayout and FloatingActionButton. |
core | Target the latest platform features and APIs while also supporting older devices. |
core.uwb | Implement UWB (ultra-wideband) on supported devices. |
credentials | This library provides unified access to a user's credentials. This can include passwords, passkeys and federated credentials. This library should be used to provide seamless and secure sign-in experiences. |
credentials.registry | To solve for these, we are adding a new registry mechanism that allows an app to provide digital credentials in a privacy-preserving way. At a high level, the provider app will be pre-registering all their candidate digital credentials with the Credential Manager; When Credential Manager receives an app request for a specific digital credential, it will run the credential matching and user selector UI in a sandbox. |
cursoradapter | Expose Cursor data to a ListView widget. |
customview | Implement custom views. |
datastore | Store data asynchronously, consistently, and transactionally, overcoming some of the drawbacks of SharedPreferences |
documentfile | View a file document. |
draganddrop | Accept drag-and-drop data from another app or within an app, and show a consistent drop target affordance. |
drawerlayout | Implement a Material Design drawer widget. |
dynamicanimation | Create smooth animations with a physics-based animation API. |
emoji | Display emoji in current and older devices. |
emoji2 | Display emoji in current and older devices. |
enterprise | Create enterprise-ready applications. |
exifinterface | Read and write image file EXIF tags. |
games | Use the Android Game SDK natively in your app to perform complex games tasks, like Frame Pacing. |
glance | Build layouts for remote surfaces using a Jetpack Compose-style API. |
graphics | Leverage graphics facilities across multiple Android platform releases |
gridlayout | Implement a grid layout. |
health | Create performant health applications in a platform agnostic way. |
health.connect | Allows developers to read or write user's health and fitness records. |
heifwriter | Encode an image or image collection in HEIF format using the available codecs on the Android device. |
ink | Inspire best-in-class pen apps. Lower the developer barrier to entry for high performance, beautiful inking experiences. |
input | Reduce the latency of input interactions by predicting future MotionEvents |
interpolator | Use animation interpolators on older platforms. |
javascriptengine | Enable your Android app to evaluate JavaScript. |
jetifier | A standalone tool that migrates a library's dependencies on the deprecated support library to equivalent AndroidX dependencies. |
leanback | Use Compose for TV instead of this artifact. |
legacy | This artifact and its classes are deprecated. Starting with Android 8, background check restrictions make this class no longer useful. |
lint | Lint checks to verify usage of Gradle APIs |
loader | Load data for your UI that survives configuration changes. |
localbroadcastmanager | This artifact and its classes are deprecated. Use LiveData or reactive streams instead. |
media | Share media contents and controls with other apps. Superseded by media2. |
media2 | Share media contents and controls with other apps. |
media3 * | Support libraries for media use cases. |
mediarouter | Enable media display and playback on remote receiver devices using a common user interface. |
multidex | Deploy applications with multiple dex files on pre-Android 5 devices. |
metrics | Track and report various runtime metrics for your application |
palette | Extract representative color palettes from images. |
A library to add pdf viewing capabilities inside apps. | |
percentlayout | This artifact and its classes are deprecated. Use ConstraintLayout and associated layouts instead. |
preference | Build interactive settings screens without needing to interact with device storage or manage the UI. |
Print photos, docs, and other graphics and images from your app. | |
privacysandbox.activity | TODO |
privacysandbox.ads | This library enables integration with Privacy Preserving APIs, which are part of Privacy Sandbox on Android. |
privacysandbox.plugins | Android Privacy Sandbox Sdk Library Gradle Plugin |
privacysandbox.sdkruntime | This library provides components for SdkRuntime aware consumers |
privacysandbox.tools | A library to utilize the Privacy Sandbox functionality in Android |
privacysandbox.ui | TODO |
profileinstaller | Enables libraries to prepopulate ahead of time compilation traces to be read by ART. |
recommendation | Promote content to the Android TV Launcher home screen. |
recyclerview | Display large sets of data in your UI while minimizing memory usage. |
remotecallback | Create a wrapper that makes it easier for developers to provide a PendingIntent. |
resourceinspection | Surface the attributes of custom views in Android Studio’s Live Layout Inspector. |
savedstate | Write pluggable components that save the UI state when a process dies, and restore it when the process restarts. |
security | Safely manage keys and encrypt files and sharedpreferences. |
sharetarget | Provide backwards compatibility for using shortcuts as direct share targets. |
slice | Display templated UI elements outside your app. |
slidingpanelayout | Implement a sliding pane UI pattern. |
startup | Implement a straightforward, performant way to initialize components at app startup. |
sqlite | Work with local SQLite databases. If possible, use Room instead. |
swiperefreshlayout | Implement the swipe-to-refresh UI pattern. |
test.uiautomator | Framework for cross app functional UI testing |
textclassifier | Identifies conversations, links, selections, and other similar constructs in text. |
tracing | Write trace events to the system trace buffer. |
transition | Animate motion in the UI with starting and ending layouts. |
tv | Provides developers with Compose and Material design functionalities in order to write applications for TV |
tvprovider | Provide Android TV channels. |
vectordrawable | Render vector graphics. |
versionedparcelable | Provides a stable and compact binary serialization format that can be passed across processes or persisted safely. |
viewpager | Display Views or Fragments in a swipeable format. If possible, use viewpager2 instead. |
viewpager2 | Display Views or Fragments in a swipeable format. |
wear | Create applications for Wear OS by Google smartwatches. |
wear.compose | Write Jetpack Compose applications for Wearable devices by providing functionality to support wearable specific devices, sizes, shapes and navigation gestures. |
wear.protolayout | This library allows defining a set of UI layouts and non-UI expressions to be rendered/evaluated on remote surfaces. |
wear.tiles | Create applications for Wear OS by Google smartwatches. |
wear.watchface | Create applications for Wear OS by Google smartwatches. |
webkit | Work with modern WebView APIs on Android 5 and above. |
window | Helps support different device form factors such as foldable devices. |
window.extensions.core | The Core APIs for Window Manager Library Extensions |
What's new
- Compose August 2023
- Jetpack Compose 1.5.0 moves to stable and brings major performance improvements including a refactoring of high-level modifiers such as `Clickable` that can improve composition time by 80%. August‘23 Compose also brings up to 70% improvement in memory allocation (especially in the graphics stack), which will reduce the memory footprint of compose on devices
- Wear Compose and Tiles 1.2
- Both Wear Compose and Wear Tiles have moved to stable to further enhance the experience of wearOS developers. Both are complementary to each other where Wear Compose can be used to build complex app screens on wear devices, and wear tiles can be used to create the app tiles. The new Wear Compose release contains new functionalities such as Expandable Items and Swipe to reveal. Wear Tiles release also now supports widget animation, and platform data binding (such as health data source).
- Window 1.1
- 1.1 stabilizes activity embedding APIs, allowing apps like WhatsApp, eBay and Temu to ship large screen layouts. The API is enriched with features, as it enables developers to modify split screen behavior, check (and change) split state at runtime, implement horizontal splits, and start a modal in full window.
- Release notes
- For more information, visit our release notes.
Learn to use Jetpack
Fundamentals training
Learn the essential Jetpack libraries in the Android Basics with Compose course and reduce boilerplate in your app
Hands-on tutorial
Get hands-on with three Jetpack libraries that simplify your data layer: LiveData, ViewModel and Room
Sunflower sample app
Explore how the most popular Jetpack libraries are used together in a production-level app