# Tipkit

Implement and review Apple TipKit feature-discovery UI for iOS 17+ apps.

- Repository: https://github.com/dpearson2699/swift-ios-skills (1266 stars)
- Category: Design
- License: see repository
- Last updated: 2026-07-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add dpearson2699/swift-ios-skills --skill tipkit -g -a claude-code -y`
Codex: `npx skills add dpearson2699/swift-ios-skills --skill tipkit -g -a codex -y`
Cursor: `npx skills add dpearson2699/swift-ios-skills --skill tipkit -g -a cursor -y`
Gemini CLI: `npx skills add dpearson2699/swift-ios-skills --skill tipkit -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add dpearson2699/swift-ios-skills`

## Description

Implement and review Apple TipKit feature-discovery UI for iOS 17+ apps. Use when adding or auditing in-app tips, contextual help, coach marks, Tip, TipView, popoverTip, rules, events, actions, display frequency, testing overrides, reusable tip identifiers, or iOS 18+ TipGroup and CloudKit tip sync; avoid for generic SwiftUI navigation or layout outside tip presentation.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# TipKit

Use TipKit for small, contextual feature-discovery moments: inline tips,
popover tips, rule-gated education, and lightweight coach marks. Keep generic
SwiftUI architecture, navigation, layout, and long first-run onboarding flows in
their sibling skills unless TipKit presentation is the core issue.

## Contents

- [Availability](#availability)
- [Configure TipKit](#configure-tipkit)
- [Design Good Tips](#design-good-tips)
- [Define Tips](#define-tips)
- [Present Tips](#present-tips)
- [Rules and Events](#rules-and-events)
- [Options and Invalidation](#options-and-invalidation)
- [Actions and Styles](#actions-and-styles)
- [Tip Groups](#tip-groups)
- [Testing](#testing)
- [Common Mistakes](#common-mistakes)
- [Review Checklist](#review-checklist)
- [References](#references)

## Availability

TipKit's core `Tip`, `TipView`, `popoverTip`, rules, events, options, and
testing overrides are available on iOS 17+, iPadOS 17+, macOS 14+, tvOS 17+,
watchOS 10+, and visionOS 1+.

Gate newer APIs explicitly:

| API | Availability | Use |
| --- | --- | --- |
| `TipGroup` | iOS 18+ | Group or sequence tips; apply the [Tip Groups](#tip-groups) decision. |
| `.cloudKitContainer(...)` | iOS 18+ | Sync tip state, parameters, events, and display counts across devices. |
| `MaxDisplayDuration` | iOS 18+ | Automatically invalidate after cumulative display time. |
| `resetEligibility()` | iOS 26+ | Make a previously invalidated tip eligible again without resetting the datastore. |

## Configure TipKit

Call `Tips.configure(_:)` once during app initialization, before any tip can
display. Do not configure TipKit from a view's `onAppear` or `.task`.

```swift
import SwiftUI
import TipKit

The rest: https://github.com/dpearson2699/swift-ios-skills/blob/HEAD/skills/tipkit/SKILL.md
