feat: IAMs now display when triggers added before first fetch #1635
+32
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
One Line Summary
Display IAMs with triggers added before first fetch on cold start.
Details
On subsequent cold starts, if triggers were added very early in the app lifecycle (before the first IAM fetch completed), in-app messages matching those triggers would not display even though they should have been eligible for redisplay.
Root cause: When the trigger is added, evaluateRedisplayedInAppMessages was called when the messages were empty, so message.isTriggerChanged was never set for messages that arrived later from the server.
Solution: Track trigger keys added before the first fetch completes in earlySessionTriggers, then apply isTriggerChanged to matching redisplay messages when they arrive from the server. This ensures the redisplay logic correctly identifies that triggers have changed and clears the message from seenInAppMessages.
Motivation
Provide feature that is requested
Scope
This only affects cold starts (process restarts) and does not impact warm starts from backgrounding, where existing redisplay behavior is preserved.
Testing
Unit testing
WIP
Manual testing
Tested on iOS 18.5 simulator
Add trigger immediately after initialization, and confirm the IAM now displays after the changes in this PR.
Affected code checklist
Checklist
Overview
Testing
Final pass
This change is