<!--
{
  "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" : "TipKit",
  "identifier" : "/documentation/TipKit/TipGroup",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "TipKit"
    ],
    "preciseIdentifier" : "s:6TipKit0A5GroupC"
  },
  "title" : "TipGroup"
}
-->

# TipGroup

A collection of tips that can be presented one at a time using a specific
order or based on the first tip eligible for display.

```
final class TipGroup
```

## Overview

Use this class to group multiple tips together and have them presented one at a time.
You display tips in a specific order with an [`ordered`](/documentation/TipKit/TipGroup/Priority/ordered) priority or display the
first tip eligible for display with a [`firstAvailable`](/documentation/TipKit/TipGroup/Priority/firstAvailable) priority.

TipGroup has a [`firstAvailable`](/documentation/TipKit/TipGroup/Priority/firstAvailable) default priority.

```swift
struct TrailDetails: View {
    let trail: Trail

    @State
    var trailDetailTips = TipGroup {
        FindTrailheadTip()
        ExposureRatingTip()
        SlopeProfileTip()
    }

    var body: some View {
        ScrollView(.vertical) {
            // Trail title
            Text(trail.name)
                .font(.title)
            NavigateToTrailButton(trailLocation: trail.location)
                .popoverTip(trailDetailTips.currentTip as? FindTrailheadTip)

            // Trail exposure rating
            TipView(trailDetailTips.currentTip as? ExposureRatingTip, arrowEdge: .bottom)
            Text("Exposure Rating: \(trail.exposureRating)")

            // Trail slope angle
            TipView(trailDetailTips.currentTip as? SlopeProfileTip, arrowEdge: .bottom)
            Text("Slope Angle: \(trail.slopeAngle)°")
        }
    }
}
```

## Topics

### Creating a tip group

[`init(_:_:)`](/documentation/TipKit/TipGroup/init(_:_:))

Creates a tip group with the specified presentation priority.

### Controlling the display order of a TipGroup’s tips

[`Priority`](/documentation/TipKit/TipGroup/Priority)

Order priority for a [`TipGroup`](/documentation/TipKit/TipGroup).

### Getting the currently available tip

[`currentTip`](/documentation/TipKit/TipGroup/currentTip)

Returns the current tip available for display.

[`currentTipUpdates`](/documentation/TipKit/TipGroup/currentTipUpdates)

Stream of tips that become eligible for display.

## Relationships

### Conforms To

[`Sendable`](/documentation/Swift/Sendable)

[`Copyable`](/documentation/Swift/Copyable)

[`Observable`](/documentation/Observation/Observable)

[`Escapable`](/documentation/Swift/Escapable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

---

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)