Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates Jetstream’s public and in-app pricing presentation to remove the Team plan minimum-seat framing, introduce per-seat tiered pricing, and refresh plan feature/copy (including moving SOC 2/audit logs positioning to Enterprise).
Changes:
- Updated landing pricing cards for Professional/Team/Enterprise with new monthly-equivalent annual pricing, “billed annually” labels, and a Team per-seat tier table.
- Extended the in-app billing plan cards to optionally display Team pricing tiers.
- Added an in-app “current plan” summary for existing subscriptions and adjusted billing toggle UI copy/behavior.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| apps/landing/pages/pricing/index.tsx | Updates landing pricing amounts/copy; adds Team pricing tiers table and “billed annually” label rendering. |
| apps/jetstream/src/app/components/billing/EnhancedBillingCard.tsx | Adds optional pricingTiers rendering and styles; tightens prop array types to readonly. |
| apps/jetstream/src/app/components/billing/BillingPeriodToggle.tsx | Removes the annual “Get two months free” badge from the toggle UI. |
| apps/jetstream/src/app/components/billing/BillingExistingSubscriptions.tsx | Adds current-plan summary box and legacy/custom badges; passes pricing tiers into Team cards. |
| apps/jetstream/src/app/components/billing/Billing.tsx | Makes Team description/pricing tiers switch based on annual vs monthly selection. |
| apps/jetstream/src/app/components/billing/billing.constants.ts | Updates Team/Enterprise features and plan prices/copy; introduces Team pricingTiers in plan descriptions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
3aed9d3 to
610eb1f
Compare
d63424d to
50ce983
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 11 out of 11 changed files in this pull request and generated no new comments.
Suppressed comments (1)
apps/jetstream/src/app/components/billing/BillingExistingSubscriptions.tsx:57
isLegacyPlancan be set totruewhenpricesByLookupKeyisnull(becausematchesCurrentPricebecomesfalse), which would show a misleading “Legacy plan” badge even though the app simply hasn’t loaded (or didn’t receive) the current price list to compare against. Only label a subscription as legacy when you actually havepricesByLookupKeyavailable for comparison.
const matchesCurrentPrice =
!!activeItem && !!pricesByLookupKey && Object.values(pricesByLookupKey).some((price) => price.id === activeItem.priceId);
const isLegacyPlan = !!activeItem && !hasManualBilling && !matchesCurrentPrice && (isTeamSubscription || isProSubscription);
The preview had already drifted from the pricing page and the two would have to be kept in sync by hand. The pricing page is now the only place plans are described.
The badge always links to A-LIGN because their logo terms require it. The privacy page explains the audit and how to request the report under NDA, and the DPA records that the report is available to controllers.
Team no longer requires a five-seat minimum: seats are billed per user, with a lower rate from the sixth seat. Plan copy moves into PRICING_COPY so the app billing page and the landing pricing page cannot drift, and Enterprise is presented as the custom-contract path rather than a tier. Existing customers stay on their current Stripe prices, and the billing page shows what they actually pay. That needs each tiered price's tier table, which Stripe omits from the price embedded in a subscription item and cannot be expanded through the customer because the path exceeds Stripe's depth limit, so tiers are fetched per price and cached.
50ce983 to
778f8ea
Compare
There was a problem hiding this comment.
🟡 Changes recommended
The in-app billing page introduces a support mailto link pointing to support@jetstream.com, which appears inconsistent with the repo’s support@getjetstream.app address and would misroute users.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 21/21 changed files
- Comments generated: 1
- Review effort level: Lite
| <p className="slds-text-color_weak">Visit the billing portal to make changes to your plan</p> | ||
| <p className="slds-text-color_weak"> | ||
| Visit the billing portal to make changes to your plan.{' '} | ||
| <a href="mailto:support@jetstream.com" target="_blank" rel="noopener noreferrer"> |
|
closing in favor of #2058 which includes this + additional stuff |
Restructure the pricing model to eliminate the minimum user requirement for the team plan, allowing unlimited team members. Adjust monthly and annual pricing accordingly. Update relevant descriptions and features to reflect these changes.