<div class='sourceset sourceset-common'>Common</div>

> **Deprecated** Deprecated in favor of NavDisplay that supports sharedTransitionScope and takes a List<SceneStrategy>

<h2 id="navdisplay-backstack-modifier-contentalignment-onback-entrydecorators-scenestrategy-sizetransform-transitionspec-poptransitionspec-predictivepoptransitionspec-entryprovider">NavDisplay</h2>

```kotlin
@Composable
public fun <T : Any> NavDisplay(
    backStack: List<T>,
    modifier: Modifier = Modifier,
    contentAlignment: Alignment = Alignment.TopStart,
    onBack: () -> Unit = {
        if (backStack is MutableList<T>) {
            backStack.removeLastOrNull()
        }
    },
    entryDecorators: List<NavEntryDecorator<T>> =
        listOf(rememberSaveableStateHolderNavEntryDecorator()),
    sceneStrategy: SceneStrategy<T> = SinglePaneSceneStrategy(),
    sizeTransform: SizeTransform? = null,
    transitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultTransitionSpec(),
    popTransitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultPopTransitionSpec(),
    predictivePopTransitionSpec:
        AnimatedContentTransitionScope<Scene<T>>.(
            @NavigationEvent.SwipeEdge Int
        ) -> ContentTransform =
        defaultPredictivePopTransitionSpec(),
    entryProvider: (key: T) -> NavEntry<T>,
)
```

A nav display that renders and animates between different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s, each of which can render one
or more `NavEntry`s.

The [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are calculated with the given [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy), which may be an assembled delegated
chain of [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy)s. If no [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) is calculated, the fallback will be to a
[SinglePaneSceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/classes/SinglePaneSceneStrategy).

It is allowable for different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s to render the same `NavEntry`s, perhaps on some conditions
as determined by the [sceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) based on window size, form factor, other arbitrary logic.

If this happens, and these [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are rendered at the same time due to animation or predictive
back, then the content for the `NavEntry` will only be rendered in the most recent [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) that
is the target for being the current scene as determined by [sceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy). This enforces a
unique invocation of each `NavEntry`, even if it is displayable by two different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s.

By default, AnimatedContent transitions are prioritized in this order:
```
transitioning [NavEntry.metadata] > current [Scene.metadata] > NavDisplay defaults
```

However, a [Scene.metadata](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) does have the ability to override `NavEntry.metadata`. Nevertheless,
the final fallback will always be the NavDisplay's default transitions.

#### Parameters

| | |
| --- | --- |
| backStack | the collection of keys that represents the state that needs to be handled |
| modifier | the modifier to be applied to the layout. |
| contentAlignment | The [Alignment](/jetpack-compose/androidx.compose.ui/ui/interfaces/Alignment) of the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent) |
| onBack | a callback for handling system back press. By default, this pops a single item off of the given back stack if it is a `MutableList`, otherwise you should provide this parameter. |
| entryDecorators | list of `NavEntryDecorator` to add information to the entry content |
| sceneStrategy | the [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) to determine which scene to render a list of entries. |
| sizeTransform | the [SizeTransform](/jetpack-compose/androidx.compose.animation/animation/interfaces/SizeTransform) for the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent). |
| transitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when navigating to `NavEntry`s. |
| popTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping `NavEntry`s. |
| predictivePopTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping with predictive back `NavEntry`s. |
| entryProvider | lambda used to construct each possible `NavEntry` |

<hr class="docs-overload-divider">

<h2 id="navdisplay-backstack-modifier-contentalignment-onback-entrydecorators-scenestrategies-scenedecoratorstrategies-sharedtransitionscope-sizetransform-transitionspec-poptransitionspec-predictivepoptransitionspec-entryprovider">NavDisplay</h2>

<div class='sourceset sourceset-common'>Common</div>

```kotlin
@Composable
public fun <T : Any> NavDisplay(
    backStack: List<T>,
    modifier: Modifier = Modifier,
    contentAlignment: Alignment = Alignment.TopStart,
    onBack: () -> Unit = {
        if (backStack is MutableList<T>) {
            backStack.removeLastOrNull()
        }
    },
    entryDecorators: List<NavEntryDecorator<T>> =
        listOf(rememberSaveableStateHolderNavEntryDecorator()),
    sceneStrategies: List<SceneStrategy<T>> = listOf(SinglePaneSceneStrategy()),
    sceneDecoratorStrategies: List<SceneDecoratorStrategy<T>> = emptyList(),
    sharedTransitionScope: SharedTransitionScope? = null,
    sizeTransform: SizeTransform? = null,
    transitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultTransitionSpec(),
    popTransitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultPopTransitionSpec(),
    predictivePopTransitionSpec:
        AnimatedContentTransitionScope<Scene<T>>.(
            @NavigationEvent.SwipeEdge Int
        ) -> ContentTransform =
        defaultPredictivePopTransitionSpec(),
    entryProvider: (key: T) -> NavEntry<T>,
)
```

A nav display that renders and animates between different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s, each of which can render one
or more `NavEntry`s.

The [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are calculated with the given list of [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) in the order of the list. If
no [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) is calculated, the fallback will be to a [SinglePaneSceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/classes/SinglePaneSceneStrategy).

It is allowable for different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s to render the same `NavEntry`s, perhaps on some conditions
as determined by the `sceneStrategies` based on window size, form factor, other arbitrary logic.

If this happens, and these [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are rendered at the same time due to animation or predictive
back, then the content for the `NavEntry` will only be rendered in the most recent [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) that
is the target for being the current scene as determined by `sceneStrategies`. This enforces a
unique invocation of each `NavEntry`, even if it is displayable by two different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s.

By default, AnimatedContent transitions are prioritized in this order:
```
transitioning [NavEntry.metadata] > current [Scene.metadata] > NavDisplay defaults
```

However, a [Scene.metadata](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) does have the ability to override `NavEntry.metadata`. Nevertheless,
the final fallback will always be the NavDisplay's default transitions.

#### Parameters

| | |
| --- | --- |
| backStack | the collection of keys that represents the state that needs to be handled |
| modifier | the modifier to be applied to the layout. |
| contentAlignment | The [Alignment](/jetpack-compose/androidx.compose.ui/ui/interfaces/Alignment) of the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent) |
| onBack | a callback for handling system back press. By default, this pops a single item off of the given back stack if it is a `MutableList`, otherwise you should provide this parameter. |
| entryDecorators | list of `NavEntryDecorator` to add information to the entry content |
| sceneStrategies | the list of [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) to determine which scene to render a list of entries. |
| sceneDecoratorStrategies | list of [SceneDecoratorStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneDecoratorStrategy) to add content to the scene. |
| sharedTransitionScope | the [SharedTransitionScope](/jetpack-compose/androidx.compose.animation/animation/composable-functions/SharedTransitionScope) to allow transitions between scenes. |
| sizeTransform | the [SizeTransform](/jetpack-compose/androidx.compose.animation/animation/interfaces/SizeTransform) for the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent). |
| transitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when navigating to `NavEntry`s. |
| popTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping `NavEntry`s. |
| predictivePopTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping with predictive back `NavEntry`s. |
| entryProvider | lambda used to construct each possible `NavEntry` |

<div class='sourceset sourceset-common'>Common</div>

> **Deprecated** Deprecated in favor of NavDisplay that supports sharedTransitionScope and takes a List<SceneStrategy>

<hr class="docs-overload-divider">

<h2 id="navdisplay-entries-modifier-contentalignment-scenestrategy-sizetransform-transitionspec-poptransitionspec-predictivepoptransitionspec-onback">NavDisplay</h2>

```kotlin
@Composable
public fun <T : Any> NavDisplay(
    entries: List<NavEntry<T>>,
    modifier: Modifier = Modifier,
    contentAlignment: Alignment = Alignment.TopStart,
    sceneStrategy: SceneStrategy<T> = SinglePaneSceneStrategy(),
    sizeTransform: SizeTransform? = null,
    transitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultTransitionSpec(),
    popTransitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultPopTransitionSpec(),
    predictivePopTransitionSpec:
        AnimatedContentTransitionScope<Scene<T>>.(
            @NavigationEvent.SwipeEdge Int
        ) -> ContentTransform =
        defaultPredictivePopTransitionSpec(),
    onBack: () -> Unit,
)
```

A nav display that renders and animates between different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s, each of which can render one
or more `NavEntry`s.

The [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are calculated with the given [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy), which may be an assembled delegated
chain of [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy)s. If no [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) is calculated, the fallback will be to a
[SinglePaneSceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/classes/SinglePaneSceneStrategy).

It is allowable for different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s to render the same `NavEntry`s, perhaps on some conditions
as determined by the [sceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) based on window size, form factor, other arbitrary logic.

If this happens, and these [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are rendered at the same time due to animation or predictive
back, then the content for the `NavEntry` will only be rendered in the most recent [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) that
is the target for being the current scene as determined by [sceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy). This enforces a
unique invocation of each `NavEntry`, even if it is displayable by two different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s.

By default, AnimatedContent transitions are prioritized in this order:
```
transitioning [NavEntry.metadata] > current [Scene.metadata] > NavDisplay defaults
```

However, a [Scene.metadata](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) does have the ability to override `NavEntry.metadata`. Nevertheless,
the final fallback will always be the NavDisplay's default transitions.

**WHEN TO USE** This overload can be used when you need to switch between different backStacks
and each with their own separate decorator states, or when you want to concatenate backStacks and
their states to form a larger backstack.

**HOW TO USE** The [entries](#entries) can first be created via `rememberDecoratedNavEntries` in order to
associate a backStack with a particular set of states.

#### Parameters

| | |
| --- | --- |
| entries | the list of `NavEntry` built from a backStack. The entries can be created from a backStack decorated with `NavEntryDecorator` via `rememberDecoratedNavEntries`. |
| modifier | the modifier to be applied to the layout. |
| contentAlignment | The [Alignment](/jetpack-compose/androidx.compose.ui/ui/interfaces/Alignment) of the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent) |
| sceneStrategy | the [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) to determine which scene to render a list of entries. |
| sizeTransform | the [SizeTransform](/jetpack-compose/androidx.compose.animation/animation/interfaces/SizeTransform) for the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent). |
| transitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when navigating to `NavEntry`s. |
| popTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping `NavEntry`s. |
| predictivePopTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping with predictive back `NavEntry`s. |
| onBack | a callback for handling system back press. |

<hr class="docs-overload-divider">

<h2 id="navdisplay-entries-modifier-contentalignment-scenestrategies-scenedecoratorstrategies-sharedtransitionscope-sizetransform-transitionspec-poptransitionspec-predictivepoptransitionspec-onback">NavDisplay</h2>

<div class='sourceset sourceset-common'>Common</div>

```kotlin
@Composable
public fun <T : Any> NavDisplay(
    entries: List<NavEntry<T>>,
    modifier: Modifier = Modifier,
    contentAlignment: Alignment = Alignment.TopStart,
    sceneStrategies: List<SceneStrategy<T>> = listOf(SinglePaneSceneStrategy()),
    sceneDecoratorStrategies: List<SceneDecoratorStrategy<T>> = emptyList(),
    sharedTransitionScope: SharedTransitionScope? = null,
    sizeTransform: SizeTransform? = null,
    transitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultTransitionSpec(),
    popTransitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultPopTransitionSpec(),
    predictivePopTransitionSpec:
        AnimatedContentTransitionScope<Scene<T>>.(
            @NavigationEvent.SwipeEdge Int
        ) -> ContentTransform =
        defaultPredictivePopTransitionSpec(),
    onBack: () -> Unit,
)
```

A nav display that renders and animates between different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s, each of which can render one
or more `NavEntry`s.

The [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are calculated with the given list of [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) in the order of the list. If
no [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) is calculated, the fallback will be to a [SinglePaneSceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/classes/SinglePaneSceneStrategy).

It is allowable for different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s to render the same `NavEntry`s, perhaps on some conditions
as determined by the `sceneStrategies` based on window size, form factor, other arbitrary logic.

If this happens, and these [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s are rendered at the same time due to animation or predictive
back, then the content for the `NavEntry` will only be rendered in the most recent [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) that
is the target for being the current scene as determined by `sceneStrategies`. This enforces a
unique invocation of each `NavEntry`, even if it is displayable by two different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s.

By default, AnimatedContent transitions are prioritized in this order:
```
transitioning [NavEntry.metadata] > current [Scene.metadata] > NavDisplay defaults
```

However, a [Scene.metadata](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) does have the ability to override `NavEntry.metadata`. Nevertheless,
the final fallback will always be the NavDisplay's default transitions.

**WHEN TO USE** This overload can be used when you need to switch between different backStacks
and each with their own separate decorator states, or when you want to concatenate backStacks and
their states to form a larger backstack.

**HOW TO USE** The [entries](#entries) can first be created via `rememberDecoratedNavEntries` in order to
associate a backStack with a particular set of states.

#### Parameters

| | |
| --- | --- |
| entries | the list of `NavEntry` built from a backStack. The entries can be created from a backStack decorated with `NavEntryDecorator` via `rememberDecoratedNavEntries`. |
| modifier | the modifier to be applied to the layout. |
| contentAlignment | The [Alignment](/jetpack-compose/androidx.compose.ui/ui/interfaces/Alignment) of the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent) |
| sceneStrategies | the list of [SceneStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneStrategy) to determine which scene to render a list of entries. |
| sceneDecoratorStrategies | list of [SceneDecoratorStrategy](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/SceneDecoratorStrategy) to add content to the scene. |
| sharedTransitionScope | the [SharedTransitionScope](/jetpack-compose/androidx.compose.animation/animation/composable-functions/SharedTransitionScope) to allow transitions between scenes. |
| sizeTransform | the [SizeTransform](/jetpack-compose/androidx.compose.animation/animation/interfaces/SizeTransform) for the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent). |
| transitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when navigating to `NavEntry`s. |
| popTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping `NavEntry`s. |
| predictivePopTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping with predictive back `NavEntry`s. |
| onBack | a callback for handling system back press. |

<hr class="docs-overload-divider">

<h2 id="navdisplay-scenestate-navigationeventstate-modifier-contentalignment-sizetransform-transitionspec-poptransitionspec-predictivepoptransitionspec">NavDisplay</h2>

<div class='sourceset sourceset-common'>Common</div>

```kotlin
@Composable
public fun <T : Any> NavDisplay(
    sceneState: SceneState<T>,
    navigationEventState: NavigationEventState<SceneInfo<T>>,
    modifier: Modifier = Modifier,
    contentAlignment: Alignment = Alignment.TopStart,
    sizeTransform: SizeTransform? = null,
    transitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultTransitionSpec(),
    popTransitionSpec: AnimatedContentTransitionScope<Scene<T>>.() -> ContentTransform =
        defaultPopTransitionSpec(),
    predictivePopTransitionSpec:
        AnimatedContentTransitionScope<Scene<T>>.(
            @NavigationEvent.SwipeEdge Int
        ) -> ContentTransform =
        defaultPredictivePopTransitionSpec(),
)
```

A nav display that renders and animates between different [Scene](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene)s, each of which can render one
or more `NavEntry`s.

By default, AnimatedContent transitions are prioritized in this order:
```
transitioning [NavEntry.metadata] > current [Scene.metadata] > NavDisplay defaults
```

However, a [Scene.metadata](/jetpack-compose/androidx.navigation3/navigation3-ui/interfaces/Scene) does have the ability to override `NavEntry.metadata`. Nevertheless,
the final fallback will always be the NavDisplay's default transitions.

#### Parameters

| | |
| --- | --- |
| sceneState | the state that determines what current scene of the NavDisplay. |
| modifier | the modifier to be applied to the layout. |
| contentAlignment | The [Alignment](/jetpack-compose/androidx.compose.ui/ui/interfaces/Alignment) of the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent) |
| navigationEventState | the `NavigationEventState` responsible for handling back navigation |
| sizeTransform | the [SizeTransform](/jetpack-compose/androidx.compose.animation/animation/interfaces/SizeTransform) for the [AnimatedContent](/jetpack-compose/androidx.compose.animation/animation/composable-functions/AnimatedContent). |
| transitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when navigating to `NavEntry`s. |
| popTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping `NavEntry`s. |
| predictivePopTransitionSpec | Default [ContentTransform](/jetpack-compose/androidx.compose.animation/animation/classes/ContentTransform) when popping with predictive back `NavEntry`s. |