The Jetpack map
Seventy-two artifacts, sixteen families, and one rule: each one earns its place by removing a specific piece of boilerplate you would otherwise write badly.
is not a product with a feature list. It is a catalogue of libraries that share a namespace and a philosophy: solve one problem, ship it independently, and let the platform stay unchanged.
TL;DR#
- Jetpack is the set of libraries that provide recommended architecture, UI and behaviour.
- This site's dataset records 72 artifacts across 16 families and 55 Maven groups.
- The families map onto the architecture: Foundation, Architecture, UI, Compose, Navigation, Background, Media, Security, Testing, Performance, and the form-factor families (Wear, TV, Cars, Health).
- UI is the largest family by artifact count (14), but Compose is the fastest-growing one — and several other artifacts exist only to integrate with it.1
- Version numbers are independent per artifact; a BOM pins a compatible set.2
Mental model#
Think of a hardware store, not a factory.
A factory makes one thing. A hardware store has aisles: plumbing, electrical, fasteners. You go to the aisle for the job you are doing. The store does not tell you how to build a house; it makes sure the parts fit together and that you can buy one screw without buying the whole aisle.
Where the analogy breaks#
A hardware store's parts are interchangeable. Jetpack artifacts are not: androidx.compose.material3
requires a compatible Compose runtime, and androidx.navigation:navigation-compose requires a
compatible navigation core. The BOM exists precisely because the parts are not freely
interchangeable, and the store's job is to tell you which combination is known to work.
The big picture#
Text description of this diagram
A sunburst of the 72 Jetpack artifacts in this site's dataset. The inner ring is the family — Compose, Navigation, Architecture, Foundation, UI, Background, Media, Security, Testing, Performance, Connectivity, Wear, TV, Cars, Health and Network — sized by the number of artifacts in each. The outer ring shows the Maven group inside each family, so androidx.compose.ui, androidx.compose.foundation and androidx.compose.material3 appear as separate arcs within Compose. Clicking an arc lists the artifacts it contains and describes what the family is for.
Two things are visible in that shape. UI is the largest family ring at fourteen artifacts, with Compose close behind at eleven — and Compose is the newer of the two. And the outer ring is fragmented: even inside one family, artifacts come from several Maven groups, which is a direct consequence of independent versioning.
Deep dive#
The families, and what each is for#
| Family | What it solves | Representative artifact |
|---|---|---|
| Foundation | the base every app needs | androidx.core:core-ktx |
| Architecture | state, lifetime, data | androidx.lifecycle, androidx.room:room-runtime |
| UI | the View-era widgets | androidx.recyclerview:recyclerview |
| Compose | the declarative toolkit | androidx.compose.ui:ui |
| Navigation | screens and back stacks | androidx.navigation:navigation-compose |
| Background | work that must run | androidx.work:work-runtime |
| Media | camera, playback, images | androidx.media3:media3-exoplayer |
| Security | credentials, crypto, biometrics | androidx.biometric:biometric |
| Testing | asserting behaviour | androidx.test.espresso:espresso-core |
| Performance | measuring and improving | androidx.benchmark:benchmark-macro-junit4 |
| Connectivity | bluetooth, network | androidx.bluetooth:bluetooth |
| Wear / TV / Cars / Health | form factors | androidx.wear.compose:compose-material |
The full catalogue#
Every artifact in the dataset, with its family, purpose and first stable release. Filter by family to see how the catalogue is distributed.
| Artifact | Family | What it is for | Stable | Status |
|---|---|---|---|---|
| androidx.compose.ui:ui | Compose | The core Compose UI toolkit: layout, drawing and the composition runtime. | 2021-07 | stable |
| androidx.compose.foundation:foundation | Compose | Foundational Compose building blocks: rows, columns, scrolling and gestures. | 2021-07 | stable |
| androidx.compose.material3:material3 | Compose | Material 3 components, theming and dynamic colour for Compose. | 2021-10 | stable |
| androidx.compose.runtime:runtime | Compose | The composition runtime: state, snapshots and recomposition. | 2021-07 | stable |
| androidx.activity:activity-compose | Compose | setContent and Compose integration for activities. | 2021-07 | stable |
| androidx.compose.material:material-icons-extended | Compose | The extended Material icon set for Compose. | 2021-07 | stable |
| androidx.compose.foundation:foundation-layout | Compose | Layout primitives for Compose. | 2021-07 | stable |
| androidx.compose.ui:ui-tooling-preview | Compose | Preview annotations and tooling support for composables. | 2021-07 | stable |
| androidx.compose.runtime:runtime-livedata | Compose | Observe LiveData from Compose. | 2021-07 | stable |
| androidx.compose.runtime:runtime-rxjava3 | Compose | Bridge RxJava 3 types into Compose state. | 2022-01 | stable |
| androidx.compose.ui:ui-text-google-fonts | Compose | Downloadable Google Fonts for Compose text. | 2021-07 | stable |
| androidx.navigation:navigation-compose | Navigation | Compose integration for the navigation graph. | 2022-02 | stable |
| androidx.navigation:navigation-fragment | Navigation | Fragment destinations for the navigation graph. | 2018-09 | stable |
| androidx.lifecycle:lifecycle-viewmodel-compose | Architecture | Resolve ViewModels inside a composition. | 2021-07 | stable |
| androidx.lifecycle:lifecycle-runtime-compose | Architecture | Lifecycle-aware state collection, including collectAsStateWithLifecycle. | 2022-06 | stable |
| androidx.lifecycle | Architecture | Lifecycle, ViewModel and LiveData foundations. | 2018-09 | stable |
| androidx.viewmodel | Architecture | The ViewModel state holder. | 2018-09 | stable |
| androidx.room:room-runtime | Architecture | The SQLite abstraction with compile-checked queries. | 2018-09 | stable |
| androidx.room:room-ktx | Architecture | Coroutine and Flow support for Room. | 2019-04 | stable |
| androidx.datastore:datastore | Architecture | Typed asynchronous key-value and typed storage. | 2020-12 | stable |
| androidx.paging:paging-runtime | Architecture | Incremental loading of large data sets. | 2019-07 | stable |
| androidx.hilt:hilt-navigation-compose | Architecture | hiltViewModel() for Compose destinations. | 2021-07 | stable |
| com.google.dagger:hilt-android | Architecture | Dagger-based dependency injection for Android components. | 2020-06 | stable |
| androidx.work:work-runtime | Background | Deferrable, guaranteed background work with constraints. | 2018-11 | stable |
| androidx.work:work-multiprocess | Background | Run WorkManager workers in a separate process. | 2022-02 | stable |
| androidx.work:work-testing | Testing | Test harness for WorkManager. | 2019-04 | stable |
| androidx.core:core-ktx | Foundation | Kotlin extensions over the core platform APIs. | 2019-04 | stable |
| androidx.core:core | Foundation | Core compatibility helpers and the base of many libraries. | 2018-09 | stable |
| androidx.core:core-remoteviews | UI | Compose-style RemoteViews for widgets and notifications. | 2022-10 | stable |
| androidx.core:core-splashscreen | UI | Splash screen support across API levels. | 2021-11 | stable |
| androidx.core:core-animation | UI | Animation helpers beyond the platform's. | 2023-02 | stable |
| androidx.appcompat:appcompat | Foundation | AppCompat activities, themes and backported widgets. | 2018-09 | stable |
| androidx.recyclerview:recyclerview | UI | The recycler view and its adapter contract. | 2018-09 | stable |
| androidx.constraintlayout:constraintlayout | UI | A flat, constraint-based layout. | 2018-09 | stable |
| androidx.fragment:fragment | UI | The AndroidX Fragment and its navigation plumbing. | 2018-09 | stable |
| androidx.preference:preference-ktx | UI | Settings screens built from preferences. | 2018-09 | stable |
| androidx.emoji2:emoji2 | UI | Emoji compatibility and rendering. | 2021-06 | stable |
| androidx.transition:transition | UI | Scene transitions and shared-element animation. | 2018-09 | stable |
| androidx.graphics:graphics-shapes | UI | Expressive shape primitives and morphing. | 2023-02 | stable |
| androidx.databinding:databinding-runtime | UI | Bind layout expressions to observable data. | 2018-09 | stable |
| androidx.legacy:legacy-support-v4 | Foundation | The pre-AndroidX support-v4 compatibility shim. | 2018-09 | deprecated |
| androidx.slice:slice-core | UI | Slice templates for search and assistant surfaces. | 2018-11 | deprecated |
| androidx.collection:collection | Foundation | Primitive and immutable collection types. | 2019-07 | stable |
| androidx.annotation:annotation | Foundation | Nullability and resource annotations. | 2018-09 | stable |
| androidx.browser:browser | Foundation | Custom Tabs for in-app browsing. | 2018-09 | stable |
| androidx.autofill:autofill | Foundation | Autofill hints and helpers. | 2021-02 | stable |
| androidx.appsearch:appsearch | Foundation | On-device search over app data. | 2021-10 | stable |
| androidx.camera:camera-core | Media | The CameraX abstraction over camera2. | 2019-05 | stable |
| androidx.camera:camera-camera2 | Media | The camera2 backend for CameraX. | 2019-05 | stable |
| androidx.media3:media3-exoplayer | Media | Media playback built on ExoPlayer. | 2022-09 | stable |
| androidx.exifinterface:exifinterface | Media | Read and write EXIF metadata on images. | 2018-09 | stable |
| androidx.palette:palette | Media | Extract a colour palette from an image. | 2018-09 | stable |
| androidx.biometric:biometric | Security | A consistent biometric prompt across devices. | 2019-04 | stable |
| androidx.security:security-crypto | Security | Encrypted file and preference storage. | 2019-10 | stable |
| androidx.credentials:credentials | Security | Credential Manager, passkeys and sign-in. | 2023-11 | stable |
| androidx.test.ext:junit | Testing | JUnit 4 extensions for Android. | 2018-09 | stable |
| androidx.test.espresso:espresso-core | Testing | UI interaction and synchronisation for View tests. | 2018-09 | stable |
| androidx.compose.ui:ui-test-junit4 | Testing | Semantics-based UI tests for Compose. | 2021-07 | stable |
| androidx.benchmark:benchmark-macro-junit4 | Testing | Device benchmarks for startup and frame timing. | 2021-06 | stable |
| androidx.profileinstaller:profileinstaller | Performance | Install baseline profiles ahead of first run. | 2021-06 | stable |
| androidx.baselineprofile:baselineprofile | Performance | Generate baseline profiles from a test run. | 2022-11 | stable |
| androidx.tracing:tracing | Performance | Emit custom slices into system traces. | 2020-06 | stable |
| androidx.bluetooth:bluetooth | Connectivity | Kotlin-friendly Bluetooth LE APIs. | 2023-10 | stable |
| com.squareup.okhttp3:okhttp | Network | The HTTP client most Android networking sits on. | 2013-05 | stable |
| androidx.glance:glance-appwidget | UI | Compose-style API for app widgets. | 2022-06 | stable |
| androidx.wear.compose:compose-material | Wear | Compose components for Wear OS. | 2022-02 | stable |
| androidx.wear.protolayout:protolayout | Wear | Declarative layouts for watch faces and tiles. | 2022-10 | stable |
| androidx.tv:tv-material | TV | Material components for Android TV. | 2023-01 | stable |
| androidx.car.app:app | Cars | Car App Library for driving-optimised surfaces. | 2021-02 | stable |
| androidx.automotive:automotive | Cars | Android Automotive OS app support. | 2021-02 | stable |
| androidx.health.connect:connect-client | Health | Read and write health and fitness data. | 2023-05 | stable |
| com.google.android.material:material | UI | The Material Components library for View-based UIs. | 2015-05 | stable |
What the catalogue reveals#
Three patterns are visible in the table.
Compose is the growth area. Eleven of the seventy-two artifacts are Compose-specific, and several
others (activity-compose, navigation-compose, lifecycle-runtime-compose) exist solely to
integrate a non-Compose library with Compose. That integration layer is the clearest signal of where
new development goes.
Deprecations are rare and explicit. Only two entries in the dataset are marked deprecated:
legacy-support-v4 (the pre-AndroidX shim) and slice-core (a surface that never found adoption).
AndroidX is careful about deprecation because the libraries are used by apps that cannot migrate
quickly.
Some "Jetpack" artifacts are not Google's. com.squareup.okhttp3:okhttp and
com.google.dagger:hilt-android are in the dataset because they are part of the recommended stack,
even though they are not androidx.*. The boundary of "Jetpack" is fuzzy in practice; what matters is
which libraries the platform's guidance assumes.
The BOM#
Because versions are independent, a compatible set needs to be declared somewhere:
dependencies {
val composeBom = platform("androidx.compose:compose-bom:$composeBom")
implementation(composeBom)
androidTestImplementation(composeBom)
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.foundation:foundation")
implementation("androidx.compose.material3:material3")
implementation("androidx.compose.ui:ui-tooling-preview")
debugImplementation("androidx.compose.ui:ui-tooling")
}The BOM is a pom with dependency management. It contributes no code and no classes; it only pins
versions. That is why implementation(platform(...)) looks odd and is correct.
Choosing what to add#
A pragmatic rule set:
- Start with what the architecture needs:
lifecycle,viewmodel,core-ktx,appcompat(or Compose),activity. - Add data libraries when the data layer exists:
room,datastore,paging. - Add Compose when you are ready to commit to its toolchain and compiler plugin version.
- Add
workwhen you have work that must survive the process. - Add
hiltwhen manual wiring becomes painful — usually around ten ViewModels. - Do not add a library for one screen. A single-screen need is usually a function.
How it evolved#
| API | Version | What changed |
|---|---|---|
| 1 | 1.0 |
|
| 4 | 1.6 Donut |
|
| 5 | 2.0 Eclair |
|
| 8 | 2.2 Froyo |
|
| 9 | 2.3 Gingerbread |
|
| 11 | 3.0 Honeycomb |
|
| 13 | 3.2 Honeycomb |
|
| 14 | 4.0 Ice Cream Sandwich |
|
| 16 | 4.1 Jelly Bean |
|
| 17 | 4.2 Jelly Bean |
|
| 18 | 4.3 Jelly Bean |
|
| 19 | 4.4 KitKat |
|
| 20 | 4.4W KitKat (Wear) |
|
| 21 | 5.0 Lollipop |
|
| 22 | 5.1 Lollipop |
|
| 23 | 6.0 Marshmallow |
|
| 24 | 7.0 Nougat |
|
| 26 | 8.0 Oreo |
|
| 27 | 8.1 Oreo |
|
| 28 | 9 Pie |
|
| 29 | 10 |
|
| 30 | 11 |
|
| 31 | 12 |
|
| 32 | 12L |
|
| 33 | 13 Tiramisu |
|
| 34 | 14 Upside Down Cake |
|
| 35 | 15 Vanilla Ice Cream |
|
| 36 | 16 Baklava |
|
| 37 | 17 Cinnamon Bun |
|
The catalogue's growth tracks the eras: a handful of foundation libraries in 2018, architecture and navigation in 2018–2019, Compose from 2021, and form-factor and AI-adjacent libraries from 2023.
Under the hood#
- Application.javawhere a library initialiser usually hooks in
- Intent.javathe platform surface most libraries wrap
- View.javathe base class appcompat and material extend
Curiosity corner#
- The biggest family is not the newest. UI has fourteen artifacts to Compose's eleven, because fifteen years of View-era widgets accumulate.
core-ktxis mostly extension functions. It adds almost no new classes — it makes existing platform APIs pleasant to call from Kotlin.- A BOM pins versions but does not enforce compatibility. Two artifacts from the same BOM can still conflict if a transitive dependency demands a newer version.
Try it#
./gradlew :app:dependencies --configuration debugRuntimeClasspath | grep androidx | sort -u | head -40
./gradlew :app:dependencyInsight --dependency androidx.compose.ui:ui --configuration debugRuntimeClasspath
Check yourself#
Check yourself
What changed structurally when the Support Library became AndroidX?
Sources#
Sources
Every version number, API level, class name and date on this page is traced to one of these. Pages are re-verified against them; last_verified above says when.
- docsExplore the Jetpack libraries by typedeveloper.android.comaccessed 2026-10-27↩
- docsAndroidX রিলিজ | Jetpackdeveloper.android.comaccessed 2026-10-27↩
- docsJetpackdeveloper.android.comaccessed 2026-10-27↩
- docsThinking in Composedeveloper.android.comaccessed 2026-10-27↩
- docsBehavior changes: Apps targeting Android 17developer.android.comaccessed 2026-10-27↩