
Tipkit
- 211 installs
- 297 repo stars
- Updated August 4, 2026
- vabole/apple-skills
Add Apple TipKit in-app tips and feature discovery flows that teach new users where to tap, when features unlock, and how to complete key tasks without heavy custom onboarding UI.
About
The tipkit skill from vabole/apple-skills helps implement Apple TipKit to surface contextual tips, feature highlights, and gentle onboarding inside native apps. It documents tip definitions, display rules, datastore behavior, and UI presentation patterns so teams improve discoverability without building bespoke coach-mark overlays from scratch.
- Contextual in-app tips
- Rule-based tip eligibility
- Reduces custom onboarding code
- Apple-native presentation APIs
- Improves feature discoverability
Tipkit by the numbers
- 211 all-time installs (skills.sh)
- +4 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #432 of 1,039 Mobile Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vabole/apple-skills --skill tipkitAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 211 |
|---|---|
| repo stars | ★ 297 |
| Last updated | August 4, 2026 |
| Repository | vabole/apple-skills ↗ |
What it does
Add Apple TipKit in-app tips and feature discovery flows that teach new users where to tap, when features unlock, and how to complete key tasks without heavy custom onboarding UI.
Files
TipKit Reference
TipKit for displaying contextual tips and feature discovery (iOS 26+).
Downloaded Reference Files
| File | Content |
|---|---|
| tipkit-overview.md | Full TipKit framework index |
| tip.md | Tip protocol |
| tipview.md | TipView (inline tips) |
| popuptipview.md | TipUIPopoverViewController |
| tips.md | Tips namespace |
| configure.md | Tips.configure() setup |
Fetching More Docs
1. Search this skill's local .md files first. 2. If the topic is not here, check the other installed Apple skills you have available by their names, descriptions, or SKILL.md frontmatter, then grep their local files. This is faster and uses less context than fetching new docs from the internet. 3. If no installed skill has the page, use the relevant documentation path from tipkit-overview.md with the sosumi.ai Markdown mirror. For example, /documentation/tipkit/tip maps to https://sosumi.ai/documentation/tipkit/tip.
Type Method
configure(_:)
Available on: iOS 17.0+, iPadOS 17.0+, Mac Catalyst 17.0+, macOS 14.0+, tvOS 17.0+, visionOS 1.0+, watchOS 10.0+
Loads and configures the persistent state of all tips in your app.
static func configure(_ configuration: [Tips.ConfigurationOption] = []) throwsParameters
configuration
An array of options for customizing your tip’s datastore location and default frequency control interval.
Discussion
Note: This function must be called before tips display in your app.
Call this function during app initialization. By default, all tips persist to a default location with a display frequency of immediate.
@main
struct SampleApp: App {
init() {
do {
// Configure tips in the app.
try Tips.configure()
}
catch {
// Handle TipKit errors
print("Error initializing TipKit \(error.localizedDescription)")
}
}
}To change the default location of where your tips persist use the convenience method datastoreLocation(_:)).
To change the display frequency use the convenience method displayFrequency(_:)).
do {
// Configure tips in the app.
try Tips.configure([
.datastoreLocation(.groupContainer(identifier: "MyGroupContainer")),
.displayFrequency(.hourly)
])
}
catch {
// Handle TipKit errors
print("Error initializing TipKit \(error.localizedDescription)")
}Configuration
- cloudKitContainer(_:)) Sets the CloudKit container used for syncing tips.
- datastoreLocation(_:)) Specify a custom location for your tips datastore.
- displayFrequency(_:)) Customizes how often new tips are presented in your app after another tip has been displayed.
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Navigation: TipKit
Class
TipUIPopoverViewController
Available on: iOS 17.0+, iPadOS 17.0+, Mac Catalyst 17.0+, visionOS 1.0+
A view controller that displays a popover tip in UIKit applications.
@MainActor @objc @preconcurrency final class TipUIPopoverViewControllerOverview
Use this view controller to present a tip you want to display using UIPopoverPresentationController.
Presenting or dismissing TipUIPopoverViewController is done by listening to a tip’s shouldDisplayUpdates or statusUpdates.
import TipKit
import UIKit
struct CatTracksFeatureTip: Tip {
var title: Text {
Text("Sample tip title")
}
var message: Text? {
Text("Sample tip message")
}
var image: Image? {
Image(systemName: "globe")
}
}
class CatTracksViewController: UIViewController {
@IBOutlet weak var catTracksFeatureButton: UIButton!
private var catTracksFeatureTip = CatTracksFeatureTip()
private var tipObservationTask: Task<Void, Never>?
private weak var tipPopoverController: TipUIPopoverViewController?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
tipObservationTask = tipObservationTask ?? Task { @MainActor in
for await shouldDisplay in catTracksFeatureTip.shouldDisplayUpdates {
if shouldDisplay {
let popoverController = TipUIPopoverViewController(catTracksFeatureTip, sourceItem: catTracksFeatureButton)
present(popoverController, animated: animated)
tipPopoverController = popoverController
}
else {
if presentedViewController is TipUIPopoverViewController {
dismiss(animated: animated)
tipPopoverController = nil
}
}
}
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
tipObservationTask?.cancel()
tipObservationTask = nil
}
}Inherits From
Conforms To
- CVarArg
- CustomDebugStringConvertible
- CustomStringConvertible
- Equatable
- Hashable
- NSCoding
- NSExtensionRequestHandling
- NSObjectProtocol
- NSTouchBarProvider
- UIActivityItemsConfigurationProviding
- UIAppearanceContainer
- UIContentContainer
- UIFocusEnvironment
- UIPasteConfigurationSupporting
- UIResponderStandardEditActions
- UIStateRestoring
- UITraitChangeObservable
- UITraitEnvironment
- UIUserActivityRestoring
Initializers
- init(_:sourceItem:actionHandler:)) Initializes a popover controller with the specified tip.
- init(coder:))
- init(nibName:bundle:))
Instance Properties
- backgroundColor The background color to use for the tip view.
- backgroundStyle The background style to use for the tip view.
- imageSize Size of the image displayed in the tip view.
- imageStyle Foreground style for the tip’s image.
- presentationDelegate The popover presentation delegate, which lets you customize the behavior of a popover-based presentation.
- sourceItem The item on which to anchor the tip popover.
- viewStyle The given style for TipView within the view hierarchy.
UIKit Views
- TipUIView A user interface element that represents a tip in UIKit applications.
- TipUICollectionViewCell A collection view cell that embeds a tip.
- TipUICollectionReusableView A UICollectionReusableView subclass that represents a tip.
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Navigation: TipKit
Protocol
Tip
Available on: iOS 17.0+, iPadOS 17.0+, Mac Catalyst 17.0+, macOS 14.0+, tvOS 17.0+, visionOS 1.0+, watchOS 10.0+
A type that sets a tip’s content, as well as the conditions for when it displays.
protocol Tip : Identifiable, SendableOverview
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:)).
Inherits From
Conforming Types
Setting tip content
- title A title that names the tip.
- message A short description of how to use the tip’s feature.
- image The image associated with the tip.
- id The tip’s unique identifier.
Controlling when tips appear
- rules The rules that determine when a tip is eligible for display. For more information on rules, see Rule.
- Rule A condition to meet before displaying a tip.
- Event A repeatable user-defined action.
Customizing tip behavior
- options Customizations for a tip.
- Option A type that represents the various customizations that you can make to a tip’s behavior.
- IgnoresDisplayFrequency Controls whether a tip obeys the preconfigured display frequency interval.
- MaxDisplayCount Specifies the maximum number of times a tip displays before the system automatically invalidates it.
- MaxDisplayDuration Specifies the maximum amount of time a tip is displayed before it is invalidated.
Providing actions
- actions Buttons that help people get started or learn more about your feature.
- Action A type that describes a control associated with a tip.
Monitoring tip status
- status The current status of a tip based on its rules and the configured displayFrequency(_:)).
- statusUpdates An asynchronous sequence for monitoring a tip’s status changes.
- shouldDisplay A Boolean value that determines whether to display a tip.
- shouldDisplayUpdates An asynchronous sequence for monitoring a tip’s display eligibility.
- Status A type that describes the current display eligibility status for a tip.
- InvalidationReason A type that describes why the system permanently invalidated a tip.
Invalidating a tip
- invalidate(reason:)) Permanently invalidates a tip and prevents it from displaying.
- resetEligibility()) Reset a previously invalidated tip.
Content
- 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.
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Navigation: TipKit
Essentials
Content
Setting tip content
Controlling when tips appear
- [var rules: [Self.Rule]](/documentation/tipkit/tip/rules)
- Rule
Creating parameters
Parameter options
Creating events and adding donations
Initializers
- init(id: String)-99edo)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Initializers with a donation value
- init(id: String)-3edd4)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Donations
Instance Properties
Subscripts
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Delete Donations
Initializers
- init(id: String)-99edo)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Initializers with a donation value
- init(id: String)-3edd4)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Donations
Instance Properties
Subscripts
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Delete Donations
Customizing tip behavior
- [var options: [any TipOption]](/documentation/tipkit/tip/options)
- Option
Tip options
Providing actions
- [var actions: [Self.Action]](/documentation/tipkit/tip/actions)
- Action
Initializers
- init(id: String?, perform: () -> Void, () -> Text))
- init(id: String?, title: some StringProtocol, perform: () -> Void))
Monitoring tip status
- var status: Self.Status
- var statusUpdates: AsyncStream<Self.Status>
- var shouldDisplay: Bool
- var shouldDisplayUpdates: AsyncMapSequence<AsyncStream<Self.Status>, Bool>
- Status
- InvalidationReason
Invalidating a tip
Creating a tip group
- [init(TipGroup.Priority, () -> [any Tip])](/documentation/tipkit/tipgroup/init(_:_:))
Controlling the display order of a TipGroup’s tips
Enumeration Cases
Getting the currently available tip
Configuration
- [static func configure([Tips.ConfigurationOption]) throws](/documentation/tipkit/tips/configure(_:))
- static func cloudKitContainer(Tips.ConfigurationOption.CloudKitContainer?) -> Tips.ConfigurationOption)
- static func datastoreLocation(Tips.ConfigurationOption.DatastoreLocation) -> Tips.ConfigurationOption)
- static func displayFrequency(Tips.ConfigurationOption.DisplayFrequency) -> Tips.ConfigurationOption)
Views
Creating a tip view
- init((any Tip)?, arrowEdge: Edge?, action: (Tips.Action) -> Void))
- init((any Tip)?, isPresented: Binding<Bool>?, arrowEdge: Edge?, action: (Tips.Action) -> Void))
- init<AnchorID>((any Tip)?, isPresented: Binding<Bool>?, arrowEdge: Edge?, anchorID: AnchorID, action: (Tips.Action) -> Void))
- [func popoverTip((any Tip)?, arrowEdge: Edge?, action: (Tips.Action) -> Void) -> some View
](/documentation/swiftui/view/popovertip(_:arrowedge:action:))
UIKit Views
Initializers
Instance Properties
- var backgroundColor: UIColor?
- var backgroundStyle: any ShapeStyle
- var cornerRadius: CGFloat
- var imageSize: CGSize
- var imageStyle: (any ShapeStyle)?
- var viewStyle: any TipViewStyle
Initializers
- convenience init(any Tip, sourceItem: any UIPopoverPresentationControllerSourceItem, actionHandler: (Tips.Action) -> Void))
- init?(coder: NSCoder))
- init(nibName: String?, bundle: Bundle?))
Instance Properties
- var backgroundColor: UIColor?
- var backgroundStyle: any ShapeStyle
- var imageSize: CGSize
- var imageStyle: (any ShapeStyle)?
- var presentationDelegate: (any UIPopoverPresentationControllerDelegate)?
- var sourceItem: (any UIPopoverPresentationControllerSourceItem)?
- var viewStyle: any TipViewStyle
Initializers
Instance Properties
- var backgroundColor: UIColor?
- var backgroundStyle: any ShapeStyle
- var cornerRadius: CGFloat
- var imageSize: CGSize
- var imageStyle: (any ShapeStyle)?
- var viewStyle: any TipViewStyle
Instance Methods
Initializers
Instance Properties
- var backgroundStyle: any ShapeStyle
- var cornerRadius: CGFloat
- var imageSize: CGSize
- var imageStyle: (any ShapeStyle)?
- var viewStyle: any TipViewStyle
Instance Methods
AppKit Views
Initializers
Instance Properties
- var backgroundColor: NSColor?
- var backgroundStyle: any ShapeStyle
- var cornerRadius: CGFloat
- var imageSize: CGSize
- var imageStyle: (any ShapeStyle)?
- var viewStyle: any TipViewStyle
Initializers
Instance Properties
- var backgroundColor: NSColor?
- var backgroundStyle: any ShapeStyle
- var cornerRadius: CGFloat
- var imageSize: CGSize
- var imageStyle: (any ShapeStyle)?
- var viewStyle: any TipViewStyle
Display rules
Creating parameters
Parameter options
Creating events and adding donations
Initializers
- init(id: String)-99edo)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Initializers with a donation value
- init(id: String)-3edd4)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Donations
Instance Properties
Subscripts
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Delete Donations
Enumerations
Enumeration Cases
Parameter options
Initializers
- init(id: String)-99edo)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Initializers with a donation value
- init(id: String)-3edd4)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Donations
Instance Properties
Subscripts
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Delete Donations
View Style
- [func tipViewStyle(some TipViewStyle) -> some View
](/documentation/swiftui/view/tipviewstyle(_:))
Associated Types
Instance Methods
Type Aliases
Type Properties
Instance Properties
- [var actions: [Tips.Action]](/documentation/tipkit/tipviewstyleconfiguration/actions)
- var image: Image?
- var message: Text?
- let tip: any Tip
- var title: Text?
Testing
- static func showAllTipsForTesting())
- [static func showTipsForTesting([any Tip.Type])](/documentation/tipkit/tips/showtipsfortesting(_:))
- static func hideAllTipsForTesting())
- [static func hideTipsForTesting([any Tip.Type])](/documentation/tipkit/tips/hidetipsfortesting(_:))
- static func resetDatastore() throws)
Common types
Instance Properties
Type Properties
- static let invalidPredicateValueType: TipKitError
- static let missingGroupContainerEntitlements: TipKitError
- static let tipsDatastoreAlreadyConfigured: TipKitError
Tip options
Enumerations
Configuration
- [static func configure([Tips.ConfigurationOption]) throws](/documentation/tipkit/tips/configure(_:))
- ConfigurationOption
Structures
Type Properties
Type Methods
Type Properties
Type Methods
- static func groupContainer(identifier: String) throws -> Tips.ConfigurationOption.DatastoreLocation)
- static func url(URL) -> Tips.ConfigurationOption.DatastoreLocation)
Type Properties
- static var daily: Tips.ConfigurationOption.DisplayFrequency
- static var hourly: Tips.ConfigurationOption.DisplayFrequency
- static var immediate: Tips.ConfigurationOption.DisplayFrequency
- static var monthly: Tips.ConfigurationOption.DisplayFrequency
- static var weekly: Tips.ConfigurationOption.DisplayFrequency
Type Methods
- static func cloudKitContainer(Tips.ConfigurationOption.CloudKitContainer?) -> Tips.ConfigurationOption)
- static func datastoreLocation(Tips.ConfigurationOption.DatastoreLocation) -> Tips.ConfigurationOption)
- static func displayFrequency(Tips.ConfigurationOption.DisplayFrequency) -> Tips.ConfigurationOption)
Testing
- static func showAllTipsForTesting())
- [static func showTipsForTesting([any Tip.Type])](/documentation/tipkit/tips/showtipsfortesting(_:))
- static func hideAllTipsForTesting())
- [static func hideTipsForTesting([any Tip.Type])](/documentation/tipkit/tips/hidetipsfortesting(_:))
- static func resetDatastore() throws)
Actions
Initializers
- init(id: String?, perform: () -> Void, () -> Text))
- init(id: String?, title: some StringProtocol, perform: () -> Void))
Instance Properties
Rules
Creating parameters
Parameter options
Creating events and adding donations
Initializers
- init(id: String)-99edo)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Initializers with a donation value
- init(id: String)-3edd4)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Donations
Instance Properties
Subscripts
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Delete Donations
Enumerations
Enumeration Cases
Events
Initializers
- init(id: String)-99edo)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Initializers with a donation value
- init(id: String)-3edd4)
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Properties
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Donations
Instance Properties
Subscripts
- [var donations: [Tips.Event<DonationInfo>.Donation]](/documentation/tipkit/tips/event/donations)
Add Donations
- func donate() async)
- func donate(DonationInfo) async)
- func sendDonation((() -> Void)?))
- func sendDonation(DonationInfo, (() -> Void)?))
Delete Donations
Type Properties
- static var day: Tips.DonationTimeRange
- static var hour: Tips.DonationTimeRange
- static var minute: Tips.DonationTimeRange
- static var week: Tips.DonationTimeRange
Type Methods
- static func days(Int) -> Tips.DonationTimeRange)
- static func hours(Int) -> Tips.DonationTimeRange)
- static func minutes(Int) -> Tips.DonationTimeRange)
- static func weeks(Int) -> Tips.DonationTimeRange)
Initializers
Instance Properties
Parameters
Parameter options
Type Properties
Options
Initializers
Initializers
Initializers
Status
Enumeration Cases
Enumeration Cases
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Navigation: TipKit
Enumeration
Tips
Available on: iOS 17.0+, iPadOS 17.0+, Mac Catalyst 17.0+, macOS 14.0+, tvOS 17.0+, visionOS 1.0+, watchOS 10.0+
TipKit namespace.
@frozen enum TipsOverview
A collection of objects for controlling the display of your tips.
Conforms To
Configuration
- configure(_:)) Loads and configures the persistent state of all tips in your app.
- ConfigurationOption A type that marks an object as a tip configuration.
Testing
- showAllTipsForTesting()) Show all tips regardless of their display rule eligibility or display frequency status for UI testing of tips.
- showTipsForTesting(_:)) Show specified tips regardless of their display rule eligibility or display frequency status for UI testing of certain tips.
- hideAllTipsForTesting()) Hide all tips regardless of their display rule eligibility for UI testing without tips.
- hideTipsForTesting(_:)) Hide specified tips regardless of their display rule eligibility for UI testing without certain tips.
- resetDatastore()) Resets the tips’ datastore to the initial state for re-testing tip display rules and eligibility.
Actions
- Action A type that describes a control associated with a tip.
Rules
- Rule A condition to meet before displaying a tip.
Events
- Event A repeatable user-defined action.
- DonationTimeRange A duration of time for filtering event donations.
- DonationLimit Specify the maximum number of donations for an event.
- EmptyDonation An empty event donation.
Parameters
- Parameter A type that monitors the state of its wrapped value to reevaluate any dependent tip rules when the value changes.
- ParameterOption A type that represents the various customizations that you can make to a tip parameter.
Options
- IgnoresDisplayFrequency Controls whether a tip obeys the preconfigured display frequency interval.
- MaxDisplayCount Specifies the maximum number of times a tip displays before the system automatically invalidates it.
- MaxDisplayDuration Specifies the maximum amount of time a tip is displayed before it is invalidated.
Status
- Status A type that describes the current display eligibility status for a tip.
- InvalidationReason A type that describes why the system permanently invalidated a tip.
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.
Navigation: TipKit
Structure
TipView
Available on: iOS 17.0+, iPadOS 17.0+, Mac Catalyst 17.0+, macOS 14.0+, tvOS 17.0+, visionOS 1.0+, watchOS 10.0+
A user interface element that represents an inline tip.
@MainActor @preconcurrency struct TipView<Content> where Content : TipOverview
You create a tip view by providing a tip along with an optional arrow edge and action handler. The tip is a type that conforms to the Tip protocol. The arrow edge is a directional arrow pointing away from the tip. The action is a closure that executes when the user triggers a tip’s button.
For example, display a tip view, above an image, with an arrow edge along the bottom:
1. Define your tip’s content as a structure conforming to the Tip protocol. 2. Create an instance your tip as a variable in the view containing the feature you want to highlight. 3. Create an instance of a TipView, near the feature you want to highlight, passing in the instance your tip’s content, along with an optional arrow edge. 4. Then configure and load the tips for your app by calling configure(_:)).
Important: Use TipUIView and TipNSView when adding tips to UIView and NSView hierarchies.
import SwiftUI
import TipKit
// Define your tip's content.
struct SampleTip: 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")
}
}
struct SampleView: View {
// Create an instance of your tip.
var tip = SampleTip()
var body: some View {
VStack {
// Place the tip view near the feature you want to highlight.
// Tips.configure(options:) must be called before your tip will be eligible for display.
TipView(tip, arrowEdge: .bottom)
}
}
}Conforms To
Creating a tip view
- init(_:arrowEdge:action:)) Creates a tip view with an optional arrow.
- init(_:isPresented:arrowEdge:action:)) Creates a tip view with an optional arrow.
- init(_:isPresented:arrowEdge:anchorID:action:)) Creates a tip view with an optional arrow.
Views
- popoverTip(_:arrowEdge:action:)) Presents a popover tip on the modified view.
---
Extracted from Apple DocC JSON by apple-skills tooling. This is unofficial content. All documentation belongs to Apple Inc.