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

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

    • VText
    • VInput
  • Interactive

    • VButton
    • VSwitch
    • VSlider
    • VSegmentedControl
  • Media

    • VImage
    • VWebView
  • Lists

    • VList
  • Feedback

    • VActivityIndicator
    • VProgressBar
    • VAlertDialog
    • VActionSheet
    • VModal
  • System

    • VStatusBar
    • VPicker

VScrollView

A scrollable container component. Maps to UIScrollView on iOS and ScrollView on Android.

Usage

<template>
  <VScrollView :style="{ flex: 1 }" @scroll="onScroll">
    <VView v-for="item in items" :key="item.id" :style="styles.row">
      <VText>{{ item.title }}</VText>
    </VView>
  </VScrollView>
</template>

Horizontal Scrolling

<VScrollView :horizontal="true" :style="{ height: 200 }">
  <VView v-for="card in cards" :key="card.id" :style="styles.card">
    <VText>{{ card.title }}</VText>
  </VView>
</VScrollView>

Pull to Refresh

Use the refreshing prop and @refresh event for pull-to-refresh:

<template>
  <VScrollView
    :style="{ flex: 1 }"
    :refreshing="isRefreshing"
    @refresh="onRefresh"
  >
    <VText v-for="item in items" :key="item.id">{{ item.title }}</VText>
  </VScrollView>
</template>

<script setup>
import { ref } from 'vue-native'

const isRefreshing = ref(false)
const items = ref([/* ... */])

async function onRefresh() {
  isRefreshing.value = true
  items.value = await fetchItems()
  isRefreshing.value = false
}
</script>

Props

PropTypeDefaultDescription
horizontalBooleanfalseScroll horizontally instead of vertically
showsVerticalScrollIndicatorBooleantrueShow vertical scroll indicator
showsHorizontalScrollIndicatorBooleanfalseShow horizontal scroll indicator
scrollEnabledBooleantrueEnable/disable scrolling
bouncesBooleantrueEnable bounce at scroll boundaries
pagingEnabledBooleanfalseSnap to pages when scrolling
refreshingBooleanfalseWhether the pull-to-refresh indicator is active
contentContainerStyleObject—Style for the inner content container
styleObject—Style for the scroll view

Events

EventPayloadDescription
scroll{ x: number, y: number }Fired on scroll with current offset
refresh—Fired when the user pulls to refresh
Edit this page
Last Updated: 2/23/26, 2:28 AM
Contributors: Abdul Hamid, Claude Sonnet 4.6, Claude Opus 4.6
Prev
VView
Next
VSafeArea