<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -",
    "macCatalyst: 18.0.0 -",
    "macOS: 15.0.0 -",
    "tvOS: 18.0.0 -",
    "visionOS: 2.0.0 -",
    "watchOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/ScrollPhase",
  "metadataVersion" : "0.1.0",
  "role" : "Enumeration",
  "symbol" : {
    "kind" : "Enumeration",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI11ScrollPhaseO"
  },
  "title" : "ScrollPhase"
}
-->

# ScrollPhase

A type that describes the state of a scroll gesture of a
scrollable view like a scroll view.

```
@frozen enum ScrollPhase
```

## Overview

A scroll gesture can be in one of four phases:
- idle: No active scroll is occurring.
- panning: An active scroll being driven by the user
is occurring.
- decelerating: The user has stopped driving a scroll
and the scroll view is decelerating to its final
target.
- animating: The system is animating to a final target
as a result of a programmatic animated scroll from
using a [`ScrollViewReader`](/documentation/SwiftUI/ScrollViewReader) or
[`scrollPosition(id:anchor:)`](/documentation/SwiftUI/View/scrollPosition(id:anchor:)) modifier.

SwiftUI provides you a value of this type when using the
[`onScrollPhaseChange(_:)`](/documentation/SwiftUI/View/onScrollPhaseChange(_:)) modifier.

## Topics

### Getting scroll gesture states

[`ScrollPhase.animating`](/documentation/SwiftUI/ScrollPhase/animating)

The animating phase where the scroll view is animating
towards a final target.

[`ScrollPhase.decelerating`](/documentation/SwiftUI/ScrollPhase/decelerating)

The decelerating phase where the user use has stopped
interacting with the scroll view and the scroll view
is decelerating towards its final target.

[`ScrollPhase.idle`](/documentation/SwiftUI/ScrollPhase/idle)

The idle phase where no kind of scrolling is occurring.

[`ScrollPhase.interacting`](/documentation/SwiftUI/ScrollPhase/interacting)

The interacting phase where the user is interacting
with the scroll view.

[`ScrollPhase.tracking`](/documentation/SwiftUI/ScrollPhase/tracking)

The tracking phase where the scroll view is tracking
a potential scroll by the user but the user hasn’t started
a scroll.

### Checking for active scrolling

[`isScrolling`](/documentation/SwiftUI/ScrollPhase/isScrolling)

Whether the scroll view is actively scrolling.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)