Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

TipKit

When using Tips.showAllTipsForTesting() my tips are shown repeatedly again and again after ~2 seconds on 18.4 and 18.5. It is not happening on iOS 18.1 (only tested with simulator) Is this intended? It makes debugging very difficult.

Edit: Also, Tips.resetDatastore() does not seem to work as the documentation says?

Answered by Frameworks Engineer in 839227022

Hey @mortengk, that is the intended behavior. showAllTipsForTesting is designed to redisplay tips after they have been dismissed to allow for quick UI validation. Prior to 18.4 some popoverTips might not be redisplayed due to a state issue, but that was changed in 18.4.

We'll add some documentation to make this behavior more clear.

Are you getting an error when you run Tips.resetDatastore()?

do {
    try Tips.resetDatastore()
}
catch {
    print("Datastore reset failed: \(error)")
}

From the resetDatastore() docs, it's important to call that function before calling Tips.configure().

Hey @mortengk, that is the intended behavior. showAllTipsForTesting is designed to redisplay tips after they have been dismissed to allow for quick UI validation. Prior to 18.4 some popoverTips might not be redisplayed due to a state issue, but that was changed in 18.4.

We'll add some documentation to make this behavior more clear.

Are you getting an error when you run Tips.resetDatastore()?

do {
    try Tips.resetDatastore()
}
catch {
    print("Datastore reset failed: \(error)")
}

From the resetDatastore() docs, it's important to call that function before calling Tips.configure().

I'm also struggled with the function Tips.resetDataStore(). My goal is to give to the user the ability to reset the display of tips. So I added a button to "reset" and this button calls Tips.resetDataStore() and then Tips.configure() but it doesn't work. Even if I relaunch the app it doesn't have any effect. The only solution are :

  • do the reset before the configure at the launch of the app (needs a relaunch to make the reset effective)
  • delete the .tipkit/tips-store.db in the app's documents and relaunch the app (needs a relaunch to make the reset effective)

As my goal is to give to the user the ability to reset the onboarding without having a relaunch the app what solution could work ?

TipKit
 
 
Q