A mutable back stack of NavKey elements that integrates with Compose state.

This class wraps a SnapshotStateList so that updates to the stack automatically trigger recomposition in any observing Composables. It also implements StateObject, which allows it to participate in Compose's snapshot system directly.

Typically, you won’t construct a NavBackStack manually. Instead, prefer using rememberNavBackStack, which provides a stack that is automatically saved and restored across process death and configuration changes.

Example

val backStack = NavBackStack(Home("start"))
backStack += Details("item42") // pushes onto stack
backStack.removeLast() // pops stack
import androidx.compose.runtime.saveable.rememberSerializable
import androidx.navigation3.runtime.NavBackStack
import androidx.navigation3.runtime.samples.NavBackStackSamples.MultiBackStack

val multiBackStack =
    rememberSerializable(serializer = serializer()) {
        MultiBackStack(
            homeTabStack = NavBackStack(),
            chatTabStack = NavBackStack(),
            spacesTabStack = NavBackStack(),
        )
    }
See also
rememberNavBackStack

for lifecycle-aware persistence.

Summary

Public constructors

Cmn

Creates a new back stack backed by the provided SnapshotStateList.

Cmn
<T : NavKey> NavBackStack(vararg elements: T)
Cmn

Inherited functions

From kotlin.collections.List
open operator Boolean
contains(element: T)
Cmn
open Boolean
containsAll(elements: Collection<T>)
Cmn
open operator T
get(index: Int)
Cmn
open Int
indexOf(element: T)
Cmn
open Boolean
Cmn
open operator MutableIterator<T>
Cmn
open Int
lastIndexOf(element: T)
Cmn
From kotlin.collections.MutableList
open Boolean
add(element: T)
Cmn
open Unit
add(index: Int, element: T)
Cmn
open Boolean
addAll(elements: Collection<T>)
Cmn
open Boolean
addAll(index: Int, elements: Collection<T>)
Cmn
open Unit
Cmn
open MutableListIterator<T>
Cmn
open MutableListIterator<T>
listIterator(index: Int)
Cmn
open Boolean
remove(element: T)
Cmn
open Boolean
removeAll(elements: Collection<T>)
Cmn
open T
removeAt(index: Int)
Cmn
open Boolean
retainAll(elements: Collection<T>)
Cmn
open operator T
set(index: Int, element: T)
Cmn
open MutableList<T>
subList(fromIndex: Int, toIndex: Int)
Cmn
From androidx.compose.runtime.snapshots.StateObject
open StateRecord?
mergeRecords(
    previous: StateRecord,
    current: StateRecord,
    applied: StateRecord
)

Produce a merged state based on the conflicting state changes.

Cmn
open Unit

Add a new state record to the beginning of a list.

Cmn

Inherited properties

From kotlin.collections.List
open Int
Cmn
From androidx.compose.runtime.snapshots.StateObject
open StateRecord

The first state record in a linked list of state records.

Cmn

Public constructors

<T : NavKey> NavBackStack()
<T : NavKey> NavBackStack(base: SnapshotStateList<T>)

Creates a new back stack backed by the provided SnapshotStateList.

<T : NavKey> NavBackStack(vararg elements: T)