Skip to main content

Native Tabs

Native tabs provide platform-native bottom tab navigation using iOS UITabBar and Android Material BottomNavigation components via react-native-screens.
Native tabs are currently in preview. The API may change. Use expo-router/unstable-native-tabs.

Installation

Ensure you have the required dependencies:

Basic Native Tabs

Import from the unstable package:
app/(tabs)/_layout.tsx
From the source (NativeTabs.tsx:9-36):
From CLAUDE.md:241-253:

Configure Tabs

With Labels and Icons

app/(tabs)/_layout.tsx

Icon Types

SF Symbols (iOS)

Material Icons (Android)

Android Drawables

Image Source

Badges

Add notification badges:
With dynamic count:

iOS-Specific Features

Blur Effects

Scroll Edge Appearance

Android-Specific Features

Material Design 3

Dynamic Colors

Indicator Style

Bottom Accessory (iOS 26+)

Add accessory content below tabs:

Hide Tabs

Hide tabs on specific screens:
app/details.tsx

Nested Navigation

Combine with Stack:
app/(tabs)/home/_layout.tsx

Platform-Specific Tabs

Show different tabs per platform:

Tab Configuration

Initial Tab

Tab Order

Tabs appear in the order they’re defined:

Common Patterns

Conditional Tab Badge

Dynamic Icon

Theme-Based Appearance

Migration from Tabs

Before (Regular Tabs)

After (Native Tabs)

Best Practices

Use Native Icons

Provide Platform-Specific Icons

Keep Tab Count Reasonable

Limitations

  • Currently in preview - API may change
  • Requires react-native-screens 4.0+
  • Some features require iOS 26+ or Android 12+
  • Bottom accessory only works on iOS 26+
  • Sidebar adaptable only on iPadOS 18+

Next Steps

Tab Navigation

Compare with regular tabs

Stack Navigation

Combine with stacks

Layouts

Understand layouts

Navigation

Navigate between tabs