---
title: ScrollViewReader
framework: swiftui
role: symbol
role_heading: Structure
path: swiftui/scrollviewreader
---

# ScrollViewReader

A view that provides programmatic scrolling, by working with a proxy to scroll to known child views.

## Declaration

```swift
@frozen nonisolated struct ScrollViewReader<Content> where Content : View
```

## Overview

Overview The scroll view reader’s content content builder receives a ScrollViewProxy instance; you use the proxy’s scrollTo(_:anchor:) to perform scrolling. The following example creates a ScrollView containing 100 views that together display a color gradient. It also contains two buttons, one each at the top and bottom. The top button tells the ScrollViewProxy to scroll to the bottom button, and vice versa. @Namespace var topID @Namespace var bottomID

var body: some View {     ScrollViewReader { proxy in         ScrollView {             Button("Scroll to Bottom") {                 withAnimation {                     proxy.scrollTo(bottomID)                 }             }             .id(topID)

VStack(spacing: 0) {                 ForEach(0..<100) { i in                     color(fraction: Double(i) / 100)                         .frame(height: 32)                 }             }

Button("Top") {                 withAnimation {                     proxy.scrollTo(topID)                 }             }             .id(bottomID)         }     } }

func color(fraction: Double) -> Color {     Color(red: fraction, green: 1 - fraction, blue: 0.5) }

important: You may not use the ScrollViewProxy during execution of the content content builder; doing so results in a runtime error. Instead, only actions created within content can call the proxy, such as gesture handlers or a view’s onChange(of:perform:) method.

## Topics

### Creating a scroll view reader

- [init(content:)](swiftui/scrollviewreader/init(content:).md)

### Configuring a scroll view reader

- [content](swiftui/scrollviewreader/content.md)

## Relationships

### Conforms To

- [View](swiftui/view.md)

## See Also

### Creating a scroll view

- [ScrollView](swiftui/scrollview.md)
- [ScrollViewProxy](swiftui/scrollviewproxy.md)
