PullToRefresh

Wraps a scrollable region and triggers a refresh when pulled down past a threshold at the top

Category: feedback · WCAG 2.2-AA · feedback, pull-to-refresh, mobile, gesture, scroll, refresh

States

Props

PropTypeDefaultDescription
onRefresh() => Promise<unknown> | unknownCalled when the pull passes the threshold; the spinner shows until it settles
childrenReact.ReactNodeContent rendered inside the component.
thresholdnumber64Pull distance (px) required to trigger a refresh.
disabledbooleanfalseWhen true, disables the control and removes it from the tab order.
labels{ pull?: string; release?: string; refreshing?: string }Overrides for the component’s user-visible strings (i18n).
classNamestringAdditional CSS class names merged onto the root element.

Design tokens

When to use

When not to use

How to build an accessible PullToRefresh in React →

Examples

Basic

The spinner shows until the returned promise settles.

<PullToRefresh onRefresh={() => refetch()}>
  <FeedList items={items} />
</PullToRefresh>

Custom threshold

Requires a longer pull before a refresh is triggered.

<PullToRefresh onRefresh={loadLatest} threshold={96}>
  <MessageList />
</PullToRefresh>

Related components

← Back to docs