Vue NativeVue Native
Guide
Components
Composables
Navigation
  • iOS
  • Android
  • macOS
GitHub
Guide
Components
Composables
Navigation
  • iOS
  • Android
  • macOS
GitHub
  • Layout

    • VView
    • VScrollView
    • VSafeArea
    • VKeyboardAvoiding
  • Text & Input

    • VText
    • VInput
  • Interactive

    • VButton
    • VPressable
    • VSwitch
    • VSlider
    • VSegmentedControl
    • VCheckbox
    • VRadio
    • VDropdown
    • VRefreshControl
  • Media

    • VImage
    • VWebView
    • VVideo
  • Lists

    • VList
    • VFlatList
    • VSectionList
  • Feedback

    • VActivityIndicator
    • VProgressBar
    • VAlertDialog
    • VActionSheet
    • VModal
    • VErrorBoundary
  • Transition & State

    • VTransition & VTransitionGroup
    • KeepAlive
    • VSuspense
  • Navigation

    • VNavigationBar
    • VTabBar
  • System

    • VStatusBar
    • VPicker
  • macOS

    • VToolbar
    • VSplitView
    • VOutlineView

VRadio

A radio button group for single-selection from a list of options. Maps to a custom UIStackView with radio circles on iOS and RadioGroup + RadioButton on Android.

Supports v-model for two-way binding of the selected value.

Usage

<VRadio
  v-model="selectedSize"
  :options="[
    { label: 'Small', value: 'sm' },
    { label: 'Medium', value: 'md' },
    { label: 'Large', value: 'lg' },
  ]"
  tintColor="#007AFF"
/>

Props

PropTypeDefaultDescription
modelValueString--The currently selected value. Bind with v-model
optionsRadioOption[](required)Array of { label: string; value: string } objects
disabledBooleanfalseDisables all radio buttons when true
tintColorString--Color of the selected radio circle
styleObject--Layout + appearance styles for the outer container
accessibilityLabelString--Accessibility label for the radio group

RadioOption

interface RadioOption {
  label: string
  value: string
}

Events

EventPayloadDescription
update:modelValuestringEmitted when the selection changes. Used internally by v-model
changestringEmitted when the user selects a different option

Example

<script setup>
import { ref } from '@thelacanians/vue-native-runtime'

const priority = ref('medium')

const priorityOptions = [
  { label: 'Low', value: 'low' },
  { label: 'Medium', value: 'medium' },
  { label: 'High', value: 'high' },
  { label: 'Critical', value: 'critical' },
]

function onPriorityChange(value) {
  console.log('Priority set to:', value)
}
</script>

<template>
  <VView :style="{ padding: 24, gap: 20 }">
    <VText :style="{ fontSize: 20, fontWeight: '700' }">Task Priority</VText>

    <VRadio
      v-model="priority"
      :options="priorityOptions"
      tintColor="#FF3B30"
      @change="onPriorityChange"
    />

    <VView
      :style="{
        backgroundColor: '#f0f0f0',
        padding: 12,
        borderRadius: 8,
        marginTop: 8,
      }"
    >
      <VText :style="{ color: '#666' }">
        Selected: {{ priority }}
      </VText>
    </VView>
  </VView>
</template>
Edit this page
Last Updated: 2/28/26, 11:24 PM
Contributors: Abdul Hamid, Claude Opus 4.6
Prev
VCheckbox
Next
VDropdown