Setting the file. One moment.
Subchapter 22.3
references/native-tabs.mdMarkdown3 KBView on GitHub
In SDK 55, Label, Icon, Badge, and VectorIcon are now accessed as static properties on NativeTabs.Trigger rather than separate imports.
// SDK 53/54
import {
NativeTabs,
Icon,
Label,
Badge,
VectorIcon,
} from "expo-router/unstable-native-tabs";
// SDK 55+
import { NativeTabs } from "expo-router/unstable-native-tabs";| SDK 53/54 | SDK 55+ |
|---|---|
<Icon /> | <NativeTabs.Trigger.Icon /> |
<Label /> | <NativeTabs.Trigger.Label /> |
<Badge /> | <NativeTabs.Trigger.Badge /> |
<VectorIcon /> | <NativeTabs.Trigger.VectorIcon /> |
| (n/a) | <NativeTabs.BottomAccessory /> |
New component for Apple Music-style mini players on iOS +26 that float above the tab bar:
<NativeTabs>
<NativeTabs.BottomAccessory>
{/* Content above tabs */}
</NativeTabs.BottomAccessory>
<NativeTabs.Trigger name="(index)">
<NativeTabs.Trigger.Label>Home</NativeTabs.Trigger.Label>
</NativeTabs.Trigger>
</NativeTabs>On Android and web, this component will render as a no-op. Position a view absolutely above the tab bar instead.
New md prop for Material icon glyphs on Android (alongside existing drawable):
<NativeTabs.Trigger.Icon sf="house" md="home" />import {
NativeTabs,
Icon,
Label,
Badge,
} from "expo-router/unstable-native-tabs";
export default function TabLayout() {
return (
<NativeTabs minimizeBehavior="onScrollDown">
<NativeTabs.Trigger name="(index)">
<Label>Home</Label>
<Icon sf="house.fill" />
<Badge>3</Badge>
</NativeTabs.Trigger>
<NativeTabs.Trigger name="(settings)">
<Label>Settings</Label>
<Icon sf="gear" />
</NativeTabs.Trigger>
<NativeTabs.Trigger name="(search)" role="search">
<Label>Search</Label>
</NativeTabs.Trigger>
</NativeTabs>
);
}import { NativeTabs } from "expo-router/unstable-native-tabs";
export default function TabLayout() {
return (
<NativeTabs minimizeBehavior="onScrollDown">
<NativeTabs.Trigger name="(index)">
<NativeTabs.Trigger.Label>Home</NativeTabs.Trigger.Label>
<NativeTabs.Trigger.Icon sf="house.fill" md="home" />
<NativeTabs.Trigger.Badge>3</NativeTabs.Trigger.Badge>
</NativeTabs.Trigger>
<NativeTabs.Trigger name="(settings)">
<NativeTabs.Trigger.Label>Settings</NativeTabs.Trigger.Label>
<NativeTabs.Trigger.Icon sf="gear" md="settings" />
</NativeTabs.Trigger>
<NativeTabs.Trigger name="(search)" role="search">
<NativeTabs.Trigger.Label>Search</NativeTabs.Trigger.Label>
</NativeTabs.Trigger>
</NativeTabs>
);
}Icon, Label, Badge, VectorIcon from importsNativeTabs import from expo-router/unstable-native-tabs<Icon /> with <NativeTabs.Trigger.Icon /><Label /> with <NativeTabs.Trigger.Label /><Badge /> with <NativeTabs.Trigger.Badge /><VectorIcon /> with <NativeTabs.Trigger.VectorIcon />