Thanks all. For future readers - the solution was to manually assign each tip with an id like @LogicalLight mentioned.
If I had to guess I'd say the assigned tip Id doesn't stay the same between launches.
The Tip protocol documentation reads:
/// The tip's unique identifier.
///
/// If you don't provide a value, the system assigns the name of the type that conforms to the `Tip` protocol during initialization.
var id: String { get }
'''