---
title: Tip
framework: tipkit
role: symbol
role_heading: Protocol
path: tipkit/tip
---

# Tip

A type that sets a tip’s content, as well as the conditions for when it displays.

## Declaration

```swift
protocol Tip : Identifiable, Sendable
```

## Overview

Overview Use this protocol for setting a tip’s content, as well as defining the conditions for when it appears in a view. You create custom tips by declaring types that conform to the Tip protocol. Set your tip’s content by giving it a title,  message,  image, and a list of actions. For example, to create a tip with a title, message, and image: struct FavoriteBackyardTip: Tip {     var title: Text {         Text("Save as a Favorite")     }

var message: Text? {         Text("Your favorite backyards always appear at the top of the list.")     }

var image: Image? {         Image(systemName: "star")     } } For a tip to be valid, you need to set its title. To control when a tip displays, pass instances of Rule and Option into the rules and options properties of the tip. After you define your tip’s content, display it in either a TipView or a popoverTip(_:arrowEdge:action:).

## Topics

### Setting tip content

- [title](tipkit/tip/title.md)
- [message](tipkit/tip/message.md)
- [image](tipkit/tip/image.md)
- [id](tipkit/tip/id.md)

### Controlling when tips appear

- [rules](tipkit/tip/rules.md)
- [Rule](tipkit/tip/rule.md)
- [Event](tipkit/tip/event.md)

### Customizing tip behavior

- [options](tipkit/tip/options.md)
- [Option](tipkit/tip/option.md)
- [IgnoresDisplayFrequency](tipkit/tip/ignoresdisplayfrequency.md)
- [MaxDisplayCount](tipkit/tip/maxdisplaycount.md)
- [MaxDisplayDuration](tipkit/tip/maxdisplayduration.md)

### Providing actions

- [actions](tipkit/tip/actions.md)
- [Action](tipkit/tip/action.md)

### Monitoring tip status

- [status](tipkit/tip/status-swift.property.md)
- [statusUpdates](tipkit/tip/statusupdates.md)
- [shouldDisplay](tipkit/tip/shoulddisplay.md)
- [shouldDisplayUpdates](tipkit/tip/shoulddisplayupdates.md)
- [Status](tipkit/tip/status-swift.typealias.md)
- [InvalidationReason](tipkit/tip/invalidationreason.md)

### Invalidating a tip

- [invalidate(reason:)](tipkit/tip/invalidate(reason:).md)
- [resetEligibility()](tipkit/tip/reseteligibility().md)

## Relationships

### Inherits From

- [Identifiable](swift/identifiable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

### Conforming Types

- [AnyTip](tipkit/anytip.md)

## See Also

### Content

- [TipGroup](tipkit/tipgroup.md)
