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.
JellyTabBarHeadless is the router-agnostic core of the jelly tab bar. It accepts a plain array of TabsItem objects and exposes press and change callbacks, giving you full control over tab state independently of any navigation library.
Import
Overview
JellyTabBarHeadless is the router-agnostic core of the jelly tab bar. It accepts a plain array of TabsItem objects and exposes press/change callbacks, giving you full control over tab state independently of any navigation library. Use it when you need the jelly animation outside of React Navigation or Expo Router, or when you want to manage navigation state yourself.
JellyTabs is a deprecated alias for JellyTabBarHeadless and will be removed in a future major version. Migrate to the JellyTabBarHeadless name.Sizing
JellyTabBarHeadless fills 100% of its parent’s width (up to maxWidth) and sets its own height internally. Wrap it in a container sized to:
trackHeight is 64 and the default displayScale is 1, giving a natural height of 64 dp.
Props
Items
The list of tabs to render. Each item provides keys, labels, icons, badges, and accessibility metadata. The order determines the tab positions left-to-right.
TabsIcon is a React component receiving { color, colors, size, opacity }.Selection state
Controlled selected-tab index. When provided, the component is fully controlled and the pill animates to the matching item on every change.
- Pass
nullor a negative number to render no selected pill (e.g. while a modal screen is active). - Omit entirely to run in uncontrolled mode, where the component manages its own internal selection starting at index
0.
Interaction callbacks
Called after every completed tap or drag, including a press on the already-selected tab.
- Return
falseto reject the selection change and spring the pill back to the current tab. - Return
trueorundefinedto accept the change (the default).
Called after a gesture accepts a tab change. Rejected presses and taps on the already-selected tab do not trigger this callback. Use this to synchronise external navigation state.
Called when a tab is long-pressed. Also triggered by the
longpress accessibility action on the tab element. Only registers a long-press gesture when this prop is provided.Colors & opacity
Solid color overrides for the four visual layers. Partial objects are merged over the built-in defaults.
Per-layer opacity overrides, each clamped to
[0, 1]. Opacity is applied to rendered content rather than the mask shape, keeping the pill clip fully opaque.Layout & animation config
Deep-partial override of layout, jelly animation, and distortion parameters. Only the keys you provide are changed; everything else falls back to the defaults.
Maximum width of the tab bar track. The bar stays horizontally centered when the parent is wider. Accepts any React Native
DimensionValue.Multiplier applied to every layout dimension. The container you wrap the component in should also be scaled:
trackHeight × displayScale. Useful for recordings or adapting to density-independent layouts.Backdrops
A React node rendered below the track’s solid color layer. Use this to inject a blur view or custom background without tying the component to any specific blur library.
A React node rendered below the selected-pill color layer. Use this to apply a blur or custom treatment exclusively inside the active pill.
Touch feedback
Enables or disables the radial glow rendered under the user’s finger during interaction. Set to
false to remove the effect completely.Overrides the color of the radial touch feedback. Defaults to
colors.selectedSurface when not set.Overrides the base opacity of the touch feedback glow. Defaults to
config.distortion.touchFeedback.opacity (0.15).Overrides the radius scale multiplier of the touch feedback glow. Defaults to
config.distortion.touchFeedback.scale (2).Misc
Enables deterministic rendering mode. Disables non-deterministic animation behavior so you can capture clean screen recordings or automated visual snapshots.