Documentation Index
Fetch the complete documentation index at: https://mintlify.com/felipe-software/react-native-jelly-tabs/llms.txt
Use this file to discover all available pages before exploring further.
JellyTabBar integrates directly with @react-navigation/bottom-tabs via the standard tabBar prop. Drop it in as a one-line replacement for the default tab bar; your existing screen options for icons, labels, badges, and colors all continue to work.
Basic Setup
Install React Navigation and its dependencies if you haven’t already, then passJellyTabBar to the tabBar prop of your bottom tab navigator:
state, descriptors, navigation, and insets through the callback. Do not pass these props manually — they are provided automatically.
Floating Mode
Pass thefloating prop to overlay the bar on top of the screen instead of pushing it below:
floating active, the bar is absolutely positioned (bottom: 0, left: 0, right: 0, zIndex: 1) and the screen content fills the full height behind it.
Scrollable screens need extra padding. When
floating is enabled, the bar
overlays the bottom of the screen. Ensure scrollable content has enough
paddingBottom so the last item is reachable above the bar. A value equal to
the bar height (64 by default) plus insets.bottom + 12 works well in most
cases.Supported Navigation Options
JellyTabBar reads these standard React Navigation options from each screen’s options object.
Icons
tabBarIcon receives { color, focused, size }. The component calls it twice internally — once with focused: true (rendered through the animated pill mask) and once with focused: false (rendered in the track background).
Labels
| Option | Effect |
|---|---|
title | Default tab label when tabBarLabel is absent. |
tabBarLabel | String label override. |
tabBarLabelStyle | StyleProp<TextStyle> applied to the label. |
tabBarShowLabel | Set false to hide labels for all tabs. |
Function-valued
tabBarLabel and custom tab buttons (tabBarButton) are not
currently rendered by the Jelly layout. Use a string value for tabBarLabel
instead.Badges
tabBarBadge accepts a number or string. Apply custom styles with tabBarBadgeStyle (StyleProp<TextStyle>).
Colors
These options are resolved from the focused screen’s descriptor and apply to the entire bar:| Option | Maps to |
|---|---|
tabBarActiveTintColor | Active icon and label color (colors.activeContent) |
tabBarInactiveTintColor | Inactive icon and label color (colors.inactiveContent) |
tabBarActiveBackgroundColor | Selected pill color (colors.selectedSurface) |
tabBarInactiveBackgroundColor | Track background color (colors.surface) |
colors prop directly to JellyTabBar for static overrides that take priority over navigation options:
Style Overrides
| Prop / Option | Type | Description |
|---|---|---|
tabBarStyle | StyleProp<ViewStyle> (screen option) | Extra styles applied to the bar’s outer container. |
containerStyle | StyleProp<ViewStyle> (prop) | Wrapper override applied after tabBarStyle. |
maxWidth | DimensionValue | Maximum track width (default 400). The bar centers itself in wider containers. |
Accessibility & Testing
| Option | Effect |
|---|---|
tabBarAccessibilityLabel | Sets accessibilityLabel on the tab’s accessible view. Falls back to the tab label. |
tabBarButtonTestID | Sets testID on the tab’s accessible view for use in automated tests. |
Full Working Example
A two-tab React Navigation setup with floating mode and icons:GestureHandlerRootView is required by React Native Gesture Handler v2+ and
must wrap your entire application. SafeAreaProvider ensures the tab bar
respects device safe-area insets on notched and dynamic-island devices.