Skip to Content
DocumentationComponents

Components

wrst components are imported from wrst and render to native widgets on each platform. Each component below shows what it maps to on Wear OS (Jetpack Compose) and Apple Watch (SwiftUI).

Layout & containers

View

Wear OSBoxApple WatchZStack

A container that stacks its children on top of each other (overlay). The base building block for layouts and backgrounds.

VerticalView

Wear OSColumnApple WatchVStack

Stacks its children top-to-bottom.

HorizontalView

Wear OSRowApple WatchHStack

Stacks its children left-to-right.

ScrollView (Vertical)

Wear OSScalingLazyColumnApple WatchScrollView

A vertically scrollable container for content taller than the screen.

ScalingScrollView (Vertical)

Wear OSScalingLazyColumnApple WatchList

A scrollable container with the watch-style scaling effect, where items shrink toward the edges of the screen.

Content

Text

Wear OSTextApple WatchText

Displays text. Style it with color, textAlign, and the usual layout props.

Image

Wear OSImageApple WatchAsyncImage

Displays an image. ImageResizeMode controls how it fits its frame.

Icon

Wear OSIconApple WatchImage (SF Symbol)

Renders a built-in icon by name (see the IconName type for the available set).

Progress

Wear OSCircularProgressIndicatorApple WatchProgressView

Shows progress - determinate (with a value) or indeterminate (spinner).

List

Wear OSrendered childrenApple WatchForEach

Maps an array of data to nodes via a renderItem(item, index) function. It’s a data-to-UI helper, not a scroll container - wrap it in a ScrollView if the content can overflow.

Input

Button

Wear OSBox (clickable)Apple WatchButton

A pressable container. Takes an onPress handler and renders its children as the label.

Touchable

Wear OSBox (clickable)Apple WatchZStack (tap)

Makes arbitrary content pressable, with onPress / onLongPress and an activeOpacity while held.

TextInput

Wear OSRemoteInputApple WatchTextField

Text entry. On Wear OS it opens the system remote-input screen; on Apple Watch it uses the native text field.

Toggle

Wear OSToggleChipApple WatchToggle

An on/off switch with a label.

Slider

Wear OSInlineSliderApple WatchSlider

Pick a numeric value from a continuous (or stepped) range.

Stepper

Wear OSStepperApple WatchStepper

Increment / decrement a numeric value with + and − controls.

Picker

Wear OSPickerApple WatchPicker

Choose one option from a scrollable list of choices.

RadioGroup

Wear OSRadioButtonApple WatchButton

Single choice from a set of options, shown as a labeled radio list.

Crown

Wear OSBox (rotary)Apple WatchdigitalCrownRotation

Reacts to the watch’s rotating crown / bezel to drive a numeric value.

Styling

Pass a style object. Common props:

  • width / height - a number, or "fill" to fill the parent
  • backgroundColor, color - colors (hex like #fff or rgba(...))
  • horizontalAlignment / verticalAlignment - e.g. "center"
  • textAlign - text alignment
  • padding and spacing props
<View style={{ width: "fill", height: "fill", verticalAlignment: "center", backgroundColor: "rgba(0,0,0,0.5)", }} > <Text style={{ color: "#fff", textAlign: "center", width: "fill" }}> Centered </Text> </View>

Both native renderers are kept design-identical, so the same style produces the same look on Wear OS and Apple Watch. The set of supported style props is still growing - see Status & roadmap.

Last updated on