Overview

Updated: Sep 24, 2026
Choose the semantic component that matches the interface’s purpose. Semantic components own the expected layout, focus behavior, accessibility, material, and motion; use Foundation primitives only when no semantic component fits.
This page helps you choose between components. For props and examples, follow the links to the individual component pages or browse the Foundation overview and Meta Ray-Ban Display component catalog.

Choose a component

Routes and navigation

You needUse
The application shell, once at the root
A route with a standard header
A route with swipeable sibling sections
Animated transitions between routes
A generic multi-page container within a route
Position within a pager or carousel

Content and collections

You needUse
A vertical list of rows
Another scrolling region
Horizontal browsing between destinations
An activatable media or artwork block
A stacked set of cards
Icon actions revealed by swiping a row

Actions and choices

You needUse
One clear action
Overflowing horizontal actions
A small set of actions that fits
A compact messaging reply
Free-form text entry
A toggle, radio choice, or slider in a row
ListItem with its built-in control
A standalone adjustable value
Media playback position
A square control or launcher tile
Manifest-themed Web App identity

Feedback and overlays

You needUse
Structured decision or informational content in a route
Transient outcome feedback
A hint attached to a focused element
Built-in tooltip props or Tooltip
An anchored action menu
An anchored text-first menu
Legibility over media

Progress and status

You needUse
Linear determinate progress
Circular determinate progress
Unknown-duration progress
A loading skeleton
A system-style value overlay
A short input affordance

Identity, labels, and text

You needUse
A person or entity image
A minimal status label
A richer label with metadata or an icon
Body or heading text
Text that crossfades when it changes
Long text that must clamp and expand

Common decisions

Page or SubNavigationPager?

Use Page for a normal route with one content area. Use SubNavigationPager when the route contains sibling sections that users move between. They are alternative route roots; do not combine them.

VerticalList or ScrollView?

Use VerticalList for a column of rows, usually ListItem components. Use ScrollView for other scrolling content. Keep one same-axis scroll owner per route so focus and directional navigation remain predictable.

ButtonRail or ButtonGroup?

Use ButtonRail when actions can overflow, need horizontal scrolling, or form a bottom action surface. Use ButtonGroup when a small set fits and should remain together, such as actions in a Modal.

Toast, tooltip, menu, or modal?

  • Use Toast for transient outcome feedback that requires no action.
  • Use Tooltip to explain a focused control.
  • Use ContextMenu or VerticalMenu for actions anchored to an element.
  • Use Modal for structured content within a route. It is an inline panel, not a blocking overlay; prefer a dedicated route for a blocking decision.

Semantic component or Foundation primitive?

Prefer the semantic component. If none fits, use Container for an interactable material surface, StaticContainer for a non-interactive one, or InteractableBase for interaction behavior without material. Do not recreate an existing component from generic elements or override its internal anatomy.

Cross-component rules

  • Render exactly one App at the application root. It owns global focus, toast, and portal infrastructure.
  • Let Page own the route header and its relationship to content. Do not place a standalone Header in route content.
  • Use one scrolling owner per axis and route. Avoid nesting VerticalList inside ScrollView.
  • Use component-provided icon slots and pass an IconSource; the host component owns icon size, placement, and tint. See Icons.
  • Render anchored surfaces through the portal infrastructure supplied by App so they remain aligned with their owners.
  • Keep component internals intact. Customize through documented props, semantic tokens, and supported composition points.