tipkit
TipKit
Contextual in-app tips on Apple platforms (iOS 17+) — feature discovery, education, onboarding hints. The deep API reference — setup, every tip shape, rules vs. events, displaying tips, actions, state, testing, version gating — lives in references/guide.md. This file is the decision and discipline layer: read it first, open the guide for specifics.
Dials
Set these explicitly at the start; they change what "correct" means.
ELIGIBILITY—parameter(@Parameter+#Ruleon app state, e.g. "is premium = false") ·event(Event(id:)+.donate()counting user actions, e.g. "used feature 5×") ·both(parameters AND events combined in onerulesarray).PRESENTATION—inline(TipView(tip)that takes layout space — use an image) ·popover(.popoverTip(tip, arrowEdge:)pointing at a control — no image, the arrow is the pointer).FREQUENCY—immediate(dev/testing; every eligible tip shows at once) ·daily/weekly/monthly/hourly(n)(production; throttles ALL tips globally) · per-tip override viaIgnoresDisplayFrequency(true)for one critical tip.
When to use
Adding or reviewing any contextual tip, onboarding hint, or feature-discovery callout that uses TipKit. Use tips for non-obvious or hidden features the user might miss — not for obvious UI, not for every feature, and never as a marketing channel. If the goal is a full onboarding flow rather than a single discoverable hint, TipKit is the wrong tool.