---
title: "refreshable(action:)"
framework: swiftui
role: symbol
role_heading: Instance Method
path: "swiftui/view/refreshable(action:)"
---

# refreshable(action:)

Adds an asynchronous handler that can update the data the view displays when a person initiates a request, such as by pulling to refresh.

## Declaration

```swift
nonisolated func refreshable(action: @escaping @Sendable () async -> Void) -> some View

```

## Parameters

- `action`: An asynchronous handler that SwiftUI executes when a person requests a refresh. Use this handler to initiate an update of model data displayed in the modified view. Use await in front of any asynchronous calls inside the handler.

## Return Value

Return Value A view with a new refresh action in its environment.

## Discussion

Discussion Apply this modifier to a view to set the refresh value in the view’s environment to a RefreshAction instance that uses the specified action as its handler. Views that detect the presence of the instance can change their appearance to provide a way for a person to execute the handler. For example, when you apply this modifier on iOS and iPadOS to a List, the list enables a standard pull-to-refresh gesture that refreshes the list contents. When a person drags the top of the scrollable area downward, the view reveals a progress indicator and executes the specified handler. The indicator remains visible for the duration of the refresh, which runs asynchronously: List(mailbox.conversations) { conversation in     ConversationCell(conversation) } .refreshable {     await mailbox.fetch() } You can add refresh capability to your own views as well. For information on how to do that, see RefreshAction.

## See Also

### Refreshing a list’s content

- [refresh](swiftui/environmentvalues/refresh.md)
- [RefreshAction](swiftui/refreshaction.md)
