Make Features Discoverable with TipKit

Create a Tip

  • Title and Message – with direct action labels as title, easy to remember instructions in the message
  • Don’t use for promotional or error messages.
  • Add the TipsCenter.shared. ?? in the init() of the @main for the app.
  • Add icons and color match with the application.  You may wish to add an action button if there are settings.
  • Set treatment and placement.
    • Pop-over – points to element or button to direct the user  (.popoverMiniTip)
    • Inline – adjust the apps UI so no UI is blocked.

Eligibility rules

  • Don’t be spammy or irrelevant.  If the feature is already discovered don’t spam them.  If users are very infrequently using your app, you may not want to show tips either.
  • Rules are
    • Parameter based rule – persistent based on State and Boolean
    • Event-Based rules – define an action that must have occurred before they are shown.
    • Donate the event
    • You can create custom events using associated types and use that for the rule


Display and dismissal 

  • Don’t show it forever, don’t show multiple at once
  • You can do a DisplayFequency (.daily, .hourly, custom duration) you can also do .immediate
  • You can do .ignoresDisplayFrequence(true) for a specific tip 
  • If the feature is used it should be dismissed… You can then call the invalidate function with user performed action
  • You can also set a .maxDisplayCount to not annoy the user with the same tip over and over.
  • Tips can be synced via iCloud, so you don’t want to show the same tip on different devices

Test tips

  • You can work around eligibility rules.  Use TipsCenter.showAllTips() or .showTips with tip iD, or .hideTips to prevent, or .hideAllTips()
  • .resetDatastore() can be used to clean it up 
  • You can also use com.apple.TipKit.showAllTips in your launch arguments (or any of the other commands)