Skip to content

[PM-36622] feat: add premium upgrade complete modal UI#2618

Merged
andrebispo5 merged 10 commits into
mainfrom
pm-36622/new-premium-upgraded-modal
May 11, 2026
Merged

[PM-36622] feat: add premium upgrade complete modal UI#2618
andrebispo5 merged 10 commits into
mainfrom
pm-36622/new-premium-upgraded-modal

Conversation

@andrebispo5
Copy link
Copy Markdown
Contributor

@andrebispo5 andrebispo5 commented May 6, 2026

🎟️ Tracking

https://bitwarden.atlassian.net/browse/PM-36622

📔 Objective

Adds the new "Upgraded to Premium" success modal shown after a user completes the Stripe payment flow. Includes the illustrated success icon, title, description, a primary "Learn more" button (opens the premium plans help page), and a secondary "Close" button.

This PR only covers UI creation. Wiring this modal into the post-payment flow is handled in PM-36623.

📸 Screenshots

Simulator Screenshot - iPhone 17 Pro - 2026-05-06 at 18 31 44

Adds a new success modal shown after the Stripe payment flow completes.
The modal displays the success icon, "Upgraded to Premium" title, a
description, a primary "Learn more" button linking to the premium help
page, and a secondary "Close" button.

- PremiumUpgradeCompleteView, Processor, Action (stateless modal)
- BillingRoute.premiumUpgradeComplete + coordinator navigation
- premium-success illustration asset (placeholder PDF, replace with
  designer asset from PM-36622 Jira attachment)
- ExternalLinksConstants.learnMoreAboutPremium URL constant
- Localization string: UpgradedToPremiumDescriptionLong
@github-actions github-actions Bot added app:password-manager Bitwarden Password Manager app context app:authenticator Bitwarden Authenticator app context t:feature labels May 6, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 6, 2026

Codecov Report

❌ Patch coverage is 86.72566% with 15 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.26%. Comparing base (4047574) to head (398fd6a).
⚠️ Report is 11 commits behind head on main.

Files with missing lines Patch % Lines
...ete/PremiumUpgradeCompleteView+SnapshotTests.swift 0.00% 14 Missing ⚠️
...umUpgradeComplete/PremiumUpgradeCompleteView.swift 97.29% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2618      +/-   ##
==========================================
- Coverage   87.22%   86.26%   -0.97%     
==========================================
  Files        1899     2130     +231     
  Lines      168083   183854   +15771     
==========================================
+ Hits       146612   158601   +11989     
- Misses      21471    25253    +3782     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new “Upgraded to Premium” success modal to the Billing flow, intended to be shown after completing the Stripe payment process (UI only; wiring handled elsewhere).

Changes:

  • Introduces PremiumUpgradeCompleteView (illustration, title/description, “Learn more” external link button, and “Close” button) plus unit/UI tests.
  • Adds BillingRoute.premiumUpgradeComplete and coordinator navigation to present the new modal.
  • Adds supporting resources: a new illustration asset, a new external help URL constant, and a new localization string.

Reviewed changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
BitwardenShared/UI/Platform/Application/Support/Images.xcassets/Images/Illustrations/premium-success.imageset/Contents.json Registers the new “premium-success” illustration asset.
BitwardenShared/UI/Billing/PremiumUpgradeComplete/PremiumUpgradeCompleteView.swift Implements the Premium upgrade success modal UI (illustration + actions).
BitwardenShared/UI/Billing/PremiumUpgradeComplete/PremiumUpgradeCompleteAction.swift Defines the action(s) for the modal (close).
BitwardenShared/UI/Billing/PremiumUpgradeComplete/PremiumUpgradeCompleteProcessor.swift Handles modal actions and routes dismissal through the coordinator.
BitwardenShared/UI/Billing/PremiumUpgradeComplete/PremiumUpgradeCompleteProcessorTests.swift Adds processor-level test coverage for dismissal routing.
BitwardenShared/UI/Billing/PremiumUpgradeComplete/PremiumUpgradeCompleteView+ViewInspectorTests.swift Adds ViewInspector tests validating key UI elements and close behavior.
BitwardenShared/UI/Billing/PremiumUpgradeComplete/PremiumUpgradeCompleteView+SnapshotTests.swift Adds (currently disabled) snapshot coverage for the new modal UI.
BitwardenShared/UI/Billing/BillingRoute.swift Adds a new route for the premium upgrade complete modal.
BitwardenShared/UI/Billing/BillingCoordinator.swift Presents the new modal when navigating to the new billing route.
BitwardenShared/UI/Billing/BillingCoordinatorTests.swift Adds coordinator test coverage for presenting the new modal route.
BitwardenShared/Core/Platform/Utilities/ExternalLinksConstants.swift Adds a help-center URL constant used by the “Learn more” button.
BitwardenResources/Localizations/en.lproj/Localizable.strings Adds the new English description string for the modal.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

],
"info" : {
"author" : "xcode",
"version" : 1
Comment on lines 1076 to 1079
"YourUpgradeIsBeingProcessedDescriptionLong" = "Your upgrade is being processed. You'll remain on the free plan until it's complete. Sync now to check, or continue and it will update automatically.";
"UpgradedToPremium" = "Upgraded to Premium";
"UpgradedToPremiumDescriptionLong" = "You now have access to advanced security features. Learn more about what's included with Premium.";
"ViewPlanDetails" = "View plan details";
The premiumCheckoutStatusPublisher_lateSubscriberReceivesPendingStatus
test requires two 300ms debounce cycles (~660ms total) which exceeded
the CI per-test limit of 1 second under load. Annotate with a 5s limit.
@andrebispo5 andrebispo5 marked this pull request as ready for review May 7, 2026 12:43
@andrebispo5 andrebispo5 requested review from a team and matt-livefront as code owners May 7, 2026 12:43
Comment thread BitwardenShared/UI/Billing/BillingRoute.swift Outdated
@andrebispo5 andrebispo5 requested a review from matt-livefront May 8, 2026 20:30
@andrebispo5 andrebispo5 merged commit 4568a40 into main May 11, 2026
19 of 20 checks passed
@andrebispo5 andrebispo5 deleted the pm-36622/new-premium-upgraded-modal branch May 11, 2026 08:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app:authenticator Bitwarden Authenticator app context app:password-manager Bitwarden Password Manager app context t:feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants