Group
Arrange controls in horizontal or vertical groups
Group arranges related controls horizontally or vertically, squares off the border radius where items meet, and passes disabled state to its children.
Features
Automatic border radius where items meet
Vertical or horizontal alignment
Independent sizing for each child
Disabled state shared with children
Installation
Group is already installed in tamagui, or you can install it independently:
yarn
npm
bun
pnpm
Usage
Use Group with Group.Item wrapping each child. The orientation property determines the layout direction.
Group zeros out the border radius on connecting sides of children: the first child keeps its start radius, the last keeps its end radius, and middle items have no radius on connecting sides. For YGroup, this affects top/bottom radius. For XGroup, left/right radius.
Sizing
Children control their own sizing. Apply size props directly to the child components. For responsive sizing, use media queries on the children:
Separators
Add separators manually between items:
Disabled
The disabled property will pass to children.
Custom components & nested items
Automatic index detection only works when Group.Item is a direct child of Group. If you wrap Group.Item inside a custom component, the automatic first/last detection won’t work.
You have a few options:
Option 1: use forcePlacement
forcePlacement
If you know the position ahead of time, use the forcePlacement prop:
Option 2: use useGroupItem hook
useGroupItem
For full control, use the useGroupItem hook directly in your custom component:
Option 3: pass placement from parent
Calculate positions in the parent and pass them down:
API reference
Group
Group, XGroup and YGroup extend YStack, getting Tamagui standard props, plus:
Props
orientation
"horizontal" | "vertical"
Forces applying the border radius styles to left/right vs top/bottom. Defaults to horizontal for XGroup and vertical for YGroup.
disabled
boolean
Passes disabled state down to children.
unstyled
boolean
Removes all default Tamagui styles.
Group.Item
Wrap each of XGroup or YGroup’s children in one of these. It lets Tamagui apply the needed styles to them. It accepts the following props:
Props
children (required)
ReactNode
The child element to wrap.
forcePlacement
"first" | "center" | "last"
Forces the item to be a starting, center, or ending item and applies the respective styles.