Conversation
There was a problem hiding this comment.
Pull request overview
Updates the Premium page pricing and introduces a new quarterly (3‑month) Stripe-only subscription option, with localized messaging updates across supported locales.
Changes:
- Added a new quarterly billing period + 3‑month plan copy in all existing locale
premium.jsonfiles. - Added a new Stripe price env var mapping (
STRIPE_PRICE_QUARTERLY) for checkout session creation. - Updated Premium UI billing options (new plan, new prices) and extended Stripe payment button billing-cycle typing to include
quarterly.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/messages/tr/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/messages/pt/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/messages/ko/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/messages/ja/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/messages/id/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/messages/es/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/messages/en/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/messages/ar/protected/premium.json | Adds quarterly/3‑month strings; updates annual savings copy. |
| frontend/src/app/api/stripe/checkout/route.ts | Adds quarterly price ID mapping for Stripe checkout. |
| frontend/src/app/[locale]/(protected)/premium/premium-client.tsx | Adds Stripe-only quarterly plan, filters plans by payment method, updates prices, adds quarterly label translation. |
| frontend/src/app/[locale]/(protected)/premium/components/stripe-payment-button.tsx | Extends billingCycle union to include quarterly. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| const filteredBillingOptions = | ||
| selectedPayment === "stripe" | ||
| ? BILLING_OPTIONS | ||
| : BILLING_OPTIONS.filter((o) => !o.stripeOnly); | ||
|
|
| const handlePaymentChange = (value: string | null) => { | ||
| setSelectedPayment(value); | ||
| // Reset to 12months if switching away from stripe while 3months is selected | ||
| if (value !== "stripe" && selectedBilling === "3months") { | ||
| setSelectedBilling("12months"); | ||
| } | ||
| }; |
| savings: t("billing3MonthsSavings"), | ||
| badge: null, | ||
| billingCycle: "quarterly" as const, | ||
| stripeOnly: true, | ||
| }, |
| label: t("billing3MonthsLabel"), | ||
| price: 36, | ||
| perMonth: 12, | ||
| savings: t("billing3MonthsSavings"), | ||
| badge: null, |
| price: 120, | ||
| perMonth: 10, | ||
| savings: t("billing12MonthsSavings"), | ||
| badge: t("billing12MonthsBadge"), | ||
| billingCycle: "annual" as const, |
There was a problem hiding this comment.
Pull request overview
Adds a new quarterly (3-month) Premium plan (Stripe-only) and updates displayed pricing/savings messaging across supported locales.
Changes:
- Introduces a Stripe-only 3-month / quarterly billing option in the Premium UI (with filtering when Freemius is selected).
- Extends the Stripe checkout API to accept a
quarterlybilling cycle viaSTRIPE_PRICE_QUARTERLY. - Updates Premium pricing/savings copy in all supported translation files.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/messages/tr/protected/premium.json | Adds quarterly strings + updates annual savings text (TR). |
| frontend/src/messages/pt/protected/premium.json | Adds quarterly strings + updates annual savings text (PT). |
| frontend/src/messages/ko/protected/premium.json | Adds quarterly strings + updates annual savings text (KO). |
| frontend/src/messages/ja/protected/premium.json | Adds quarterly strings + updates annual savings text (JA). |
| frontend/src/messages/id/protected/premium.json | Adds quarterly strings + updates annual savings text (ID). |
| frontend/src/messages/es/protected/premium.json | Adds quarterly strings + updates annual savings text (ES). |
| frontend/src/messages/en/protected/premium.json | Adds quarterly strings + updates annual savings text (EN). |
| frontend/src/messages/ar/protected/premium.json | Adds quarterly strings + updates annual savings text (AR). |
| frontend/src/app/api/stripe/checkout/route.ts | Adds quarterly → STRIPE_PRICE_QUARTERLY mapping for Stripe Checkout session creation. |
| frontend/src/app/[locale]/(protected)/premium/premium-client.tsx | Adds quarterly plan, Stripe-only filtering, and translated billing period support. |
| frontend/src/app/[locale]/(protected)/premium/components/stripe-payment-button.tsx | Extends Stripe billingCycle prop union to include quarterly. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| const selectedPlan = filteredBillingOptions.find( | ||
| (o) => o.id === selectedBilling, | ||
| ); | ||
|
|
There was a problem hiding this comment.
Pull request overview
Adds a new quarterly billing option and updates premium pricing/messaging across the UI and Stripe checkout flow.
Changes:
- Introduce quarterly plan copy in all supported locales and update annual savings wording.
- Update Premium page plan options/prices and restrict the quarterly plan to Stripe.
- Extend Stripe checkout API to accept a
quarterlybilling cycle viaSTRIPE_PRICE_QUARTERLY.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| frontend/src/messages/tr/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (TR). |
| frontend/src/messages/pt/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (PT). |
| frontend/src/messages/ko/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (KO). |
| frontend/src/messages/ja/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (JA). |
| frontend/src/messages/id/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (ID). |
| frontend/src/messages/es/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (ES). |
| frontend/src/messages/en/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (EN). |
| frontend/src/messages/ar/protected/premium.json | Add quarterly labels/savings; adjust annual savings copy (AR). |
| frontend/src/app/api/stripe/checkout/route.ts | Add Stripe price ID env var mapping for quarterly. |
| frontend/src/app/[locale]/(protected)/premium/premium-client.tsx | Update plan list/prices; add Stripe-only filtering and payment method UX changes. |
| frontend/src/app/[locale]/(protected)/premium/components/stripe-payment-button.tsx | Widen Stripe billingCycle prop type to include quarterly. |
| frontend/src/app/[locale]/(protected)/premium/components/freemius-payment-button.tsx | Widen Freemius billingCycle prop type to include quarterly (causes issues). |
Comments suppressed due to low confidence (1)
frontend/src/app/[locale]/(protected)/premium/premium-client.tsx:116
- The lifetime plan option is now left in
BILLING_OPTIONSas a commented-out block. This kind of dead code tends to drift and is easy to forget; if lifetime is intentionally disabled, it would be clearer to remove it entirely or gate it behind an explicit feature flag/config so it’s obvious when/why it’s off.
/*{
id: "lifetime",
label: t("billingLifetimeLabel"),
price: 199,
perMonth: null,
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| price: 96, | ||
| perMonth: 8, |
|
|
||
| interface FreemiusPaymentButtonProps extends Omit<ButtonProps, "onClick"> { | ||
| billingCycle: "monthly" | "annual" | "lifetime"; | ||
| billingCycle: "monthly" | "quarterly" | "annual" | "lifetime"; |
No description provided.