From 9c2ef2da2dec88e079f5d6852a0cca3e51b70511 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Fri, 10 Jul 2026 19:10:20 +0600 Subject: [PATCH] [2026-07-10] eagle: work/projects/ios-subscription-day7-promo-pr.md --- work/projects/ios-subscription-day7-promo-pr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/work/projects/ios-subscription-day7-promo-pr.md b/work/projects/ios-subscription-day7-promo-pr.md index dc282807..202a22d1 100644 --- a/work/projects/ios-subscription-day7-promo-pr.md +++ b/work/projects/ios-subscription-day7-promo-pr.md @@ -8,7 +8,7 @@ CC: N/A - Adds `subscriptionPromoForExistingUsers` remote feature flag (backed by `PrivacyProSubfeature.subscriptionPromoForExistingUsers`), guarded additionally by the existing `privacyProOnboardingPromotion` gate. - Adds `SubscriptionFunnelOrigin.existingUserPromo` (`funnel_modal_ios__subscriptionnudge`) and three pixel events: `m_privacy-pro_existing_user_promotion_impression`, `…_tap`, `…_dismiss`. - Refactors the per-provider onboarding gate: removes the global `hasSeenOnboarding` guard from `ModalPromptCoordinationService` and replaces it with a per-provider `isEligibleToPresent(isOnboardingComplete: Bool) -> Bool` method on `ModalPromptProvider`. The manager resolves the onboarding state once and passes it to each provider, keeping a single source of truth. -- `SubscriptionPromoExistingUserCoordinator` implements a softer gate: eligible when onboarding is complete **or** no contextual onboarding dialog is either pending (`isStillOnboarding`) or currently visible on screen (`isShowingContextualOnboardingDialog`) — allowing single-tab users who never reached the fire/EOJ flow to see the launch promo, while preventing the promo from appearing on top of active onboarding dialogs on cold launch. +- `SubscriptionPromoExistingUserCoordinator` implements a softer gate: eligible when onboarding is complete **or** no contextual onboarding dialog is currently visible on screen (`isShowingContextualOnboardingDialog`) — allowing single-tab users who never reached the fire/EOJ flow to see the launch promo, while preventing the promo from appearing on top of active onboarding dialogs on cold launch. - All other providers (`WinBackOffer`, `DefaultBrowser`, `NewAddressBarPicker`, `WhatsNew`) use the default implementation, which returns the passed `isOnboardingComplete` value — preserving their previous behaviour without each owning an `onboardingStatusProvider` dependency. - Inserts `subscriptionPromoExistingUser` at priority 3 in the modal prompt queue (after reinstaller promo, before address bar picker).