feat: Remove annual option except for existing annual plans#3967
feat: Remove annual option except for existing annual plans#3967calvin-codecov merged 2 commits intomainfrom
Conversation
Codecov Report❌ Patch coverage is
@@ Coverage Diff @@
## main #3967 +/- ##
==========================================
- Coverage 98.73% 98.57% -0.16%
==========================================
Files 826 826
Lines 14983 15232 +249
Branches 4287 4466 +179
==========================================
+ Hits 14793 15015 +222
- Misses 182 210 +28
+ Partials 8 7 -1
Continue to review full report in Codecov by Sentry.
|
✅ Deploy preview for gazebo ready!Previews expire after 1 month automatically.
|
Codecov Report❌ Patch coverage is
@@ Coverage Diff @@
## main #3967 +/- ##
==========================================
- Coverage 98.73% 98.57% -0.16%
==========================================
Files 826 826
Lines 14983 15232 +249
Branches 4287 4466 +179
==========================================
+ Hits 14793 15015 +222
- Misses 182 210 +28
+ Partials 8 7 -1
Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
75b2a46 to
20b5921
Compare
Bundle ReportChanges will increase total bundle size by 17.12kB (0.14%) ⬆️. This is within the configured threshold ✅ Detailed changes
Affected Assets, Files, and Routes:view changes for bundle: gazebo-production-systemAssets Changed:
Files in
Files in
Files in
Files in
view changes for bundle: gazebo-production-esmAssets Changed:
Files in
Files in
Files in
Files in
|
Codecov ReportAttention: Patch coverage is
✅ All tests successful. No failed tests found.
@@ Coverage Diff @@
## main #3967 +/- ##
==========================================
- Coverage 98.73% 98.57% -0.16%
==========================================
Files 826 826
Lines 14983 15232 +249
Branches 4292 4458 +166
==========================================
+ Hits 14793 15015 +222
- Misses 182 210 +28
+ Partials 8 7 -1
Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
...gradePlanPage/UpgradeForm/Controllers/SentryPlanController/BillingOptions/BillingOptions.tsx
Show resolved
Hide resolved
This reverts commit acfda0a.
3af79df to
e28f4fa
Compare
...UpgradePlanPage/UpgradeForm/Controllers/TeamPlanController/BillingOptions/BillingOptions.tsx
Show resolved
Hide resolved
589de52 to
4398dae
Compare
39b1e4f to
b623897
Compare
| <p className="text-ds-gray-senary"> | ||
| over 5 users is ${sentryAnnualUnitPrice} per user/month, billed | ||
| annually | ||
| over 5 users is ${sentryMonthlyUnitPrice} per user/month, billed |
There was a problem hiding this comment.
This shows from Dev plan so we only need to show monthly
| <div className="text-xs"> | ||
| <p className="font-semibold"> | ||
| <span className="text-2xl">${yearlyUnitPrice}</span> per | ||
| <span className="text-2xl">${monthlyUnitPrice}</span> per |
There was a problem hiding this comment.
Same: this is from free so we only need to show monthly
| <A | ||
| to={{ | ||
| pageName: 'upgradeOrgPlan', | ||
| options: { params: { plan: 'pro' } }, |
There was a problem hiding this comment.
Adding this to add "pro" plan url param to be more explicit for other parts of the code
b623897 to
86d4b1a
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
| // Don't render if no corresponding plans are available | ||
| if (!proPlanMonth && !proPlanYear) { | ||
| return null | ||
| } |
There was a problem hiding this comment.
Incomplete plan availability check renders empty billing options
Medium Severity
The null check if (!planMonth && !planYear) only handles when both plans are missing. However, the annual radio button only renders when currentPlanBillingRate === BillingRate.ANNUALLY && planYear, and the monthly button only renders when planMonth exists. If only the yearly plan exists but the user is not on an annual plan, neither button renders, leaving users with the "Step 2: Choose a billing cycle" heading and an empty radio group with no pricing information displayed.
Additional Locations (2)
There was a problem hiding this comment.
Going to leave this for now. This is a highly edge-case situation and without those plans, the user shouldn't have anything viable to change to anyways.
Closes https://linear.app/getsentry/issue/CCMRG-2016/allow-yearly-plan-upgrades-for-current-customers
Note
Restores annual billing support with strict gating and broad UI/logic updates.
billingRate; monthly users see only monthly options across Pro/Sentry/Team upgrade flowsProPlanDetails,SentryPlanDetails,TeamPlanDetailsto render correct monthly/annual pricing, disclaimers, and show fallbacks when plan variants are missingnewPlan, sync radio selection, and compute monthly vs annual totals, savings, and next billing dates in PriceCalloutsActionsBilling: removebuttonOptions, always linkupgrade?plan=pro, and fixAimport path$X per user billed monthly" in Team plan cardWritten by Cursor Bugbot for commit 86d4b1a. This will update automatically on new commits. Configure here.