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 composable widgets, 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.OrbiterEdge.Horizontal,androidx.compose.ui.unit.Dp,androidx.compose.ui.Alignment.Horizontal,androidx.xr.compose.spatial.OrbiterSettings,androidx.xr.compose.subspace.layout.SpatialShape,androidx.xr.compose.spatial.SpatialElevationLevel,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.OrbiterEdge.Horizontal,androidx.compose.ui.unit.Dp,androidx.compose.ui.Alignment.Horizontal,androidx.xr.compose.spatial.OrbiterSettings,androidx.xr.compose.subspace.layout.SpatialShape,androidx.xr.compose.spatial.SpatialElevationLevel,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.