
Tipkit
Implement and review Apple TipKit feature-discovery UI for iOS 17+ apps.
Install
npx skills add dpearson2699/swift-ios-skills --skill tipkit -g -a claude-code -y- Repository
- dpearson2699/swift-ios-skills1.3k
- Category
- Design
- Updated
- 3mo ago
- License
- See repository
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
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.
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
- Configure TipKit
- Design Good Tips
- Define Tips
- Present Tips
- Rules and Events
- Options and Invalidation
- Actions and Styles
- Tip Groups
- Testing
- Common Mistakes
- Review Checklist
- 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 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.
import SwiftUI
import TipKit


