Add Upgrade Modal to End of Trial UX

What does this MR do and why?

In the current Active Trial experience, users struggle to distinguish between paid and free features. This becomes particularly problematic at the end of their trial, when they have difficulty identifying the value they would lose by not upgrading. To address this problem, we are exploring adding a modal to the UX that would appear to the Owner(s) of the namespace the first time they come to GitLab following the completion of their trial.

References

Screenshots or screen recordings

Screenshot_2025-11-28_at_12.51.51

How to set up and validate locally

bin/rails c

Group.last.gitlab_subscription.update(trial_starts_on: 2.days.ago, trial_ends_on: 1.day.ago)
Click to expand
Sequence Activity se_action se_property
1 User hovers over a Premium feature render_premium_feature_popover_end_of_trial_modal feature ID
2 User clicks CTA in Premium feature popover click_cta_premium_feature_popover_end_of_trial_modal feature ID
3 User clicks Upgrade to Premium CTA click_upgrade_end_of_trial_modal
4 User clicks Explore paid plans CTA click_explore_end_of_trial_modal
5 User dismisses modal dismiss_end_of_trial_modal
6 User dismisses modal by clicking outside dismiss_outside_end_of_trial_modal
7 User dismisses modal by clicking Esc dismiss_esc_end_of_trial_modal
8 Modal is rendered render_end_of_trial_modal

The modal is automatically dismissed after the first appearance. To return it back sign out, close the tab, and remove callout from the DB:

bin/rails c

Users::GroupCallout.last.destroy

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #579360

Edited by Serhii Yarynovskyi

Merge request reports

Loading