Skip to main content
These components render the WidgetInstance payloads from useUserWidgets. The same payload renders identically on every surface.

WidgetGrid

WidgetInstance[]
required
The widgets to draw. Renders nothing when empty.
1 | 'auto'
default:"1"
1 stacks one widget per row, which suits single-column profile pages. 'auto' uses a responsive multi-column grid that honors each widget’s size.
(href, widget) => void
Handle navigation yourself instead of following the link, for example to route inside a shell.

WidgetCard

One widget. The owner can turn off its title row (showHeader) and its frame (showCard), which is how a widget blends into a bio or an about block. Props: widget, onOpen?.

WidgetActions

The action slot: buttons that sit beside Follow.
WidgetInstance[]
required
groupWidgetsBySlot(…).action.
ButtonVariant / ButtonSize
default:"'outline' / 'md'"
Button style. Outline keeps actions from competing with Follow.
string
Your own button class. The buttons then render as unstyled Pressables wearing it, and variant is ignored.
(href, widget) => void
Intercept navigation.

WidgetNode

Renders a single node of the custom layout’s tree, with accent resolving the widget’s accent color. You only need it when composing widget content yourself; WidgetCard uses it internally.