New Compose Multiplatform components arrived on Composables UICheck it out →


Material Design navigation rail item.

A [NavigationRailItem] represents a destination within a [NavigationRail].

Navigation rails provide access to primary destinations in apps when using tablet and desktop screens.

The text label is always shown (if it exists) when selected. Showing text labels if not selected is controlled by [alwaysShowLabel].

Last updated:


dependencies {


fun NavigationRailItem(
    selected: Boolean,
    onClick: () -> Unit,
    icon: @Composable () -> Unit,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    label: @Composable (() -> Unit)? = null,
    alwaysShowLabel: Boolean = true,
    colors: NavigationRailItemColors = NavigationRailItemDefaults.colors(),
    interactionSource: MutableInteractionSource? = null,


selectedwhether this item is selected
onClickcalled when this item is clicked
iconicon for this item, typically an [Icon]
modifierthe [Modifier] to be applied to this item
enabledcontrols the enabled state of this item. When false, this component will not respond to user input, and it will appear visually disabled and disabled to accessibility services.
labeloptional text label for this item
alwaysShowLabelwhether to always show the label for this item. If false, the label will only be shown when this item is selected.
colors[NavigationRailItemColors] that will be used to resolve the colors used for this item in different states. See [NavigationRailItemDefaults.colors].
interactionSourcean optional hoisted [MutableInteractionSource] for observing and emitting [Interaction]s for this item. You can use this to change the item's appearance or preview the item in different states. Note that if null is provided, interactions will still happen internally.