The Jetpack XR SDK lets you build immersive XR experiences using modern tools like[Kotlin](https://developer.android.com/develop/ui/compose/kotlin)and[Compose](https://developer.android.com/compose), as well as previous generation tools such as Java and[Views](https://developer.android.com/develop/ui/views/layout/declaring-layout). You can[spatialize your UI](https://developer.android.com/develop/xr/jetpack-xr-sdk/develop-ui),[load and render 3D models](https://developer.android.com/develop/xr/jetpack-xr-sdk/add-3d-models)and semantically understand the real world.

If you already have a mobile or large screen app on Android, Jetpack XR SDK extends your app into a new dimension by spatializing existing layouts and enhancing your experiences with 3D models and immersive environments. See our[quality guidelines](https://developer.android.com/docs/quality-guidelines/android-xr)for our recommendations on spatializing your existing Android app.  
Alas, your browser doesn't support HTML5 video. That's OK! You can still[download the video](https://developer.android.com/static/images/develop/xr/jetpack-xr-sdk/index/jetpack-xr-sdk.mp4)and watch it with a video player.

The Jetpack XR SDK consists of the following libraries. Together, they provide a comprehensive toolkit for building rich and diverse[spatialized experiences](https://developer.android.com/design/ui/xr/guides/foundations)and are designed to work seamlessly with each other.

- **Jetpack Compose for XR**: Declaratively build spatial UI layouts that take advantage of Android XR's spatial capabilities.
- **Material Design for XR**: Build with Material components and layouts that adapt for XR.
- **Jetpack SceneCore**: Build and manipulate the Android XR scene graph with 3D content.
- **ARCore for Jetpack XR**: Bring digital content into the real world with perception capabilities.

## Jetpack Compose for XR

With Jetpack Compose for XR, you can use familiar[Compose concepts](https://developer.android.com/develop/ui/compose/layouts/basics)such as[rows](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/package-summary#Row(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.ui.Alignment.Vertical,kotlin.Function1))and[columns](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/package-summary#Column(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,kotlin.Function1)(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.ui.Alignment.Horizontal,kotlin.Function1))to create spatial UI layouts in XR, whether you're porting an existing 2D app to XR or creating a new XR app from scratch.

This library provides[subspace composeables](https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SubspaceComposable), such as[spatial panels](https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/package-summary#SpatialPanel(android.content.Intent,androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SpatialShape))and[orbiters](https://developer.android.com/reference/kotlin/androidx/xr/compose/spatial/package-summary#Orbiter(androidx.xr.compose.spatial.ContentEdge.Horizontal,androidx.compose.ui.unit.Dp,androidx.xr.compose.spatial.OrbiterOffsetType,androidx.compose.ui.Alignment.Horizontal,androidx.xr.compose.subspace.layout.SpatialShape,androidx.compose.ui.unit.Dp,kotlin.Boolean,kotlin.Function0)), which let you place your existing 2D Compose or Views-based UI in a spatial layout.

See[Develop UI with Jetpack Compose for XR](https://developer.android.com/develop/xr/jetpack-xr-sdk/develop-ui)for detailed guidance.

![Develop UI XR components orbiter generic example](https://developer.android.com/static/images/develop/xr/jetpack-xr-sdk/index/develop-ui-xr-component-orbiter-generic.jpg)

Compose for XR introduces the[`Volume`](https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/package-summary#Volume(androidx.xr.compose.subspace.layout.SubspaceModifier,kotlin.Function1))subspace composable, which lets you place[SceneCore](https://developer.android.com/develop/xr/jetpack-xr-sdk#jetpack-scenecore)entities, such as 3D models, relative to your UI.

Learn how to[spatialize your existing Android app](https://developer.android.com/develop/xr/jetpack-xr-sdk/add-xr-to-existing)or view the API reference for more detailed information.

## Material Design for XR

Material Design provides components and layouts that adapt for XR. For example, if you're building with[adaptive layouts](https://developer.android.com/develop/ui/compose/layouts/adaptive)and you update to the latest alpha of the dependency using a[`EnableXrComponentOverrides`](https://developer.android.com/reference/kotlin/androidx/xr/compose/material3/package-summary#EnableXrComponentOverrides(androidx.xr.compose.material3.XrComponentOverrideEnabler,kotlin.Function0))wrapper,[each pane](https://developer.android.com/develop/ui/compose/layouts/adaptive/canonical-layouts)is placed inside a[`SpatialPanel`](https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/package-summary#SpatialPanel(android.content.Intent,androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SpatialShape))and a[navigation rail](https://developer.android.com/reference/kotlin/androidx/compose/material3/package-summary#NavigationRail(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Function1,androidx.compose.foundation.layout.WindowInsets,kotlin.Function1))is placed in an[`Orbiter`](https://developer.android.com/reference/kotlin/androidx/xr/compose/spatial/package-summary#Orbiter(androidx.xr.compose.spatial.ContentEdge.Horizontal,androidx.compose.ui.unit.Dp,androidx.xr.compose.spatial.OrbiterOffsetType,androidx.compose.ui.Alignment.Horizontal,androidx.xr.compose.subspace.layout.SpatialShape,androidx.compose.ui.unit.Dp,kotlin.Boolean,kotlin.Function0)).[Learn more about implementing Material Design for XR](https://developer.android.com/develop/xr/jetpack-xr-sdk/material-design).

## Jetpack SceneCore

The Jetpack SceneCore library lets you place and arrange 3D content, defined by[entities](https://developer.android.com/develop/xr/jetpack-xr-sdk/work-with-entities), relative to each other and your environment. With SceneCore, you can:

- Set[spatial environments](https://developer.android.com/design/ui/xr/guides/environments)
- Create instances of a[`PanelEntity`](https://developer.android.com/reference/kotlin/androidx/xr/scenecore/PanelEntity)
- [Place and animate 3D models](https://developer.android.com/develop/xr/jetpack-xr-sdk/add-3d-models)
- [Specify spatial audio sources](https://developer.android.com/develop/xr/jetpack-xr-sdk/add-spatial-audio)
- [Add Components to entities that make them movable, resizable, and can be anchored to the real world](https://developer.android.com/develop/xr/jetpack-xr-sdk/work-with-entities)

The Jetpack SceneCore library also provides support for spatializing applications built using Views. See our[guide to working with views](https://developer.android.com/develop/xr/jetpack-xr-sdk/develop-ui-views)for more details.

View the[API reference](https://developer.android.com/reference/kotlin/androidx/xr/scenecore/package-summary)for more detailed information.

## ARCore for Jetpack XR

Inspired by the existing[ARCore library](https://developers.google.com/ar), the ARCore for Jetpack XR library provides capabilities for blending digital content with the real world. This library includes motion tracking, persistent anchors, hit testing, and plane identification with semantic labeling (for example, floor, walls, and tabletops). This library leverages the underlying perception stack powered by[OpenXR](https://developer.android.com/develop/xr/openxr), which ensures compatibility with a wide range of devices and helping to future-proof apps.

View[Work with ARCore for Jetpack XR](https://developer.android.com/develop/xr/jetpack-xr-sdk/work-with-arcore)for more detailed information.
| **Preview:** Unlike its predecessor, ARCore for Jetpack XR currently only supports Android XR.

## Note on Developer Preview

Please note that this release is part of a Developer Preview and these APIs are still under development. See the release notes for known issues:

- [Jetpack Compose for XR Release Notes](https://developer.android.com/jetpack/androidx/releases/xr-compose)
- [ARCore for Jetpack XR Release Notes](https://developer.android.com/jetpack/androidx/releases/xr-arcore)
- [Jetpack SceneCore Release Notes](https://developer.android.com/jetpack/androidx/releases/xr-scenecore)
- [Jetpack for SceneCore Runtime Release Notes](https://developer.android.com/jetpack/androidx/releases/xr-runtime)

If you run into an issue that is not on that list,[please report a bug or submit feedback](https://developer.android.com/develop/xr/support).

*** ** * ** ***

OpenXR™ and the OpenXR logo are trademarks owned by The Khronos Group Inc. and are registered as a trademark in China, the European Union, Japan and the United Kingdom.