From 424fa9c382b6697bd7b1dcfaafbdda9d9855cb3a Mon Sep 17 00:00:00 2001 From: Conner Turnbull <133619638+cturnbull-bitwarden@users.noreply.github.com> Date: Tue, 14 Apr 2026 15:41:14 -0400 Subject: [PATCH] [PM-31901] Remove m3 flagged logic (#19868) * Remove pm-26462-milestone-3 flag from subscription-pricing.service.ts * Remove pm-26462-milestone-3 flag from organization-plans.component.ts * Remove pm-26462-milestone-3 flag from change-plan-dialog.component.ts * Remove pm-26462-milestone-3 flag from create-organization.component.ts * Remove pm-26462-milestone-3 flag from upgrade-payment.service.ts * Remove pm-26462-milestone-3 flag from families-for-enterprise-setup.component.ts * Remove pm-26462-milestone-3 flag from complete-trial-initiation.component.ts * Remove pm-26462-milestone-3 flag from trial-billing-step.service.ts * Update tests after pm-26462-milestone-3 removal * Fix test expectations after pm-26462-milestone-3 removal Update mock plan types from FamiliesAnnually2025 to FamiliesAnnually in subscription-pricing and upgrade-payment specs. Delete flag-specific test cases from upgrade-payment spec. --- ...families-for-enterprise-setup.component.ts | 10 +-- .../settings/create-organization.component.ts | 18 +---- .../services/upgrade-payment.service.spec.ts | 66 +------------------ .../services/upgrade-payment.service.ts | 10 +-- .../change-plan-dialog.component.ts | 10 +-- .../organization-plans.component.spec.ts | 24 ++----- .../organization-plans.component.ts | 9 +-- .../complete-trial-initiation.component.ts | 11 +--- .../trial-billing-step.service.spec.ts | 31 +-------- .../trial-billing-step.service.ts | 24 ++----- .../subscription-pricing.service.spec.ts | 2 +- .../services/subscription-pricing.service.ts | 11 +--- 12 files changed, 23 insertions(+), 203 deletions(-) diff --git a/apps/web/src/app/admin-console/organizations/sponsorships/families-for-enterprise-setup.component.ts b/apps/web/src/app/admin-console/organizations/sponsorships/families-for-enterprise-setup.component.ts index c0ffa9a4f3d..b68cd086d53 100644 --- a/apps/web/src/app/admin-console/organizations/sponsorships/families-for-enterprise-setup.component.ts +++ b/apps/web/src/app/admin-console/organizations/sponsorships/families-for-enterprise-setup.component.ts @@ -15,8 +15,6 @@ import { PreValidateSponsorshipResponse } from "@bitwarden/common/admin-console/ import { AccountService } from "@bitwarden/common/auth/abstractions/account.service"; import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { PlanSponsorshipType, PlanType, ProductTierType } from "@bitwarden/common/billing/enums"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service"; import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; @@ -57,7 +55,6 @@ export class FamiliesForEnterpriseSetupComponent implements OnInit, OnDestroy { constructor( private router: Router, - private configService: ConfigService, private i18nService: I18nService, private route: ActivatedRoute, private apiService: ApiService, @@ -108,12 +105,7 @@ export class FamiliesForEnterpriseSetupComponent implements OnInit, OnDestroy { this.badToken = !this.preValidateSponsorshipResponse.isTokenValid; } - const milestone3FeatureEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM26462_Milestone_3, - ); - this.familyPlan = milestone3FeatureEnabled - ? PlanType.FamiliesAnnually - : PlanType.FamiliesAnnually2025; + this.familyPlan = PlanType.FamiliesAnnually; this.loading = false; }); diff --git a/apps/web/src/app/admin-console/settings/create-organization.component.ts b/apps/web/src/app/admin-console/settings/create-organization.component.ts index 78398fd8897..2bee4769cb0 100644 --- a/apps/web/src/app/admin-console/settings/create-organization.component.ts +++ b/apps/web/src/app/admin-console/settings/create-organization.component.ts @@ -6,8 +6,6 @@ import { Subject, takeUntil } from "rxjs"; import { first } from "rxjs/operators"; import { PlanType, ProductTierType, ProductType } from "@bitwarden/common/billing/enums"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { OrganizationPlansComponent } from "../../billing"; import { HeaderModule } from "../../layouts/header/header.module"; @@ -24,24 +22,14 @@ export class CreateOrganizationComponent implements OnInit, OnDestroy { protected plan: PlanType = PlanType.Free; protected productTier: ProductTierType = ProductTierType.Free; - constructor( - private route: ActivatedRoute, - private configService: ConfigService, - ) {} + constructor(private route: ActivatedRoute) {} private destroy$ = new Subject(); - async ngOnInit(): Promise { - const milestone3FeatureEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM26462_Milestone_3, - ); - const familyPlan = milestone3FeatureEnabled - ? PlanType.FamiliesAnnually - : PlanType.FamiliesAnnually2025; - + ngOnInit(): void { this.route.queryParams.pipe(first(), takeUntil(this.destroy$)).subscribe((qParams) => { if (qParams.plan === "families" || qParams.productTier == ProductTierType.Families) { - this.plan = familyPlan; + this.plan = PlanType.FamiliesAnnually; this.productTier = ProductTierType.Families; } else if (qParams.plan === "teams" || qParams.productTier == ProductTierType.Teams) { this.plan = PlanType.TeamsAnnually; diff --git a/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.spec.ts b/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.spec.ts index 88e24548c53..7eceab92245 100644 --- a/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.spec.ts +++ b/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.spec.ts @@ -687,7 +687,7 @@ describe("UpgradePaymentService", () => { billingEmail: "test@example.com", }, plan: { - type: PlanType.FamiliesAnnually2025, + type: PlanType.FamiliesAnnually, passwordManagerSeats: 6, }, payment: { @@ -703,70 +703,6 @@ describe("UpgradePaymentService", () => { expect(mockSyncService.fullSync).toHaveBeenCalledWith(true); }); - it("should use FamiliesAnnually2025 plan when feature flag is disabled", async () => { - // Arrange - mockConfigService.getFeatureFlag.mockResolvedValue(false); - mockOrganizationBillingService.purchaseSubscription.mockResolvedValue({ - id: "org-id", - name: "Test Organization", - billingEmail: "test@example.com", - } as OrganizationResponse); - - // Act - await sut.upgradeToFamilies( - mockAccount, - mockFamiliesPlanDetails, - mockTokenizedPaymentMethod, - { - organizationName: "Test Organization", - billingAddress: mockBillingAddress, - }, - ); - - // Assert - expect(mockOrganizationBillingService.purchaseSubscription).toHaveBeenCalledWith( - expect.objectContaining({ - plan: { - type: PlanType.FamiliesAnnually2025, - passwordManagerSeats: 6, - }, - }), - "user-id", - ); - }); - - it("should use FamiliesAnnually plan when feature flag is enabled", async () => { - // Arrange - mockConfigService.getFeatureFlag.mockResolvedValue(true); - mockOrganizationBillingService.purchaseSubscription.mockResolvedValue({ - id: "org-id", - name: "Test Organization", - billingEmail: "test@example.com", - } as OrganizationResponse); - - // Act - await sut.upgradeToFamilies( - mockAccount, - mockFamiliesPlanDetails, - mockTokenizedPaymentMethod, - { - organizationName: "Test Organization", - billingAddress: mockBillingAddress, - }, - ); - - // Assert - expect(mockOrganizationBillingService.purchaseSubscription).toHaveBeenCalledWith( - expect.objectContaining({ - plan: { - type: PlanType.FamiliesAnnually, - passwordManagerSeats: 6, - }, - }), - "user-id", - ); - }); - it("should throw error if password manager seats are 0", async () => { // Arrange const invalidPlanDetails: PlanDetails = { diff --git a/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.ts b/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.ts index be0cacfc1c0..47970927b40 100644 --- a/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.ts +++ b/apps/web/src/app/billing/individual/upgrade/upgrade-payment/services/upgrade-payment.service.ts @@ -16,8 +16,6 @@ import { PersonalSubscriptionPricingTierId, PersonalSubscriptionPricingTierIds, } from "@bitwarden/common/billing/types/subscription-pricing-tier"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction"; import { LogService } from "@bitwarden/logging"; @@ -64,7 +62,6 @@ export class UpgradePaymentService { private organizationService: OrganizationService, private accountService: AccountService, private subscriberBillingClient: SubscriberBillingClient, - private configService: ConfigService, ) {} userIsOwnerOfFreeOrg$: Observable = this.accountService.activeAccount$.pipe( @@ -175,12 +172,7 @@ export class UpgradePaymentService { this.validatePaymentAndBillingInfo(paymentMethod, billingAddress); const passwordManagerSeats = this.getPasswordManagerSeats(planDetails); - const milestone3FeatureEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM26462_Milestone_3, - ); - const familyPlan = milestone3FeatureEnabled - ? PlanType.FamiliesAnnually - : PlanType.FamiliesAnnually2025; + const familyPlan = PlanType.FamiliesAnnually; const subscriptionInformation: SubscriptionInformation = { organization: { diff --git a/apps/web/src/app/billing/organizations/change-plan-dialog.component.ts b/apps/web/src/app/billing/organizations/change-plan-dialog.component.ts index 6dd919a4c53..e3a2ce079f2 100644 --- a/apps/web/src/app/billing/organizations/change-plan-dialog.component.ts +++ b/apps/web/src/app/billing/organizations/change-plan-dialog.component.ts @@ -31,9 +31,7 @@ import { getUserId } from "@bitwarden/common/auth/services/account.service"; import { PlanInterval, PlanType, ProductTierType } from "@bitwarden/common/billing/enums"; import { OrganizationSubscriptionResponse } from "@bitwarden/common/billing/models/response/organization-subscription.response"; import { PlanResponse } from "@bitwarden/common/billing/models/response/plan.response"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { MessagingService } from "@bitwarden/common/platform/abstractions/messaging.service"; import { OrganizationId } from "@bitwarden/common/types/guid"; @@ -249,7 +247,6 @@ export class ChangePlanDialogComponent implements OnInit, OnDestroy { private subscriberBillingClient: SubscriberBillingClient, private previewInvoiceClient: PreviewInvoiceClient, private organizationWarningsService: OrganizationWarningsService, - private configService: ConfigService, ) {} async ngOnInit(): Promise { @@ -299,12 +296,7 @@ export class ChangePlanDialogComponent implements OnInit, OnDestroy { } } - const milestone3FeatureEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM26462_Milestone_3, - ); - this._familyPlan = milestone3FeatureEnabled - ? PlanType.FamiliesAnnually - : PlanType.FamiliesAnnually2025; + this._familyPlan = PlanType.FamiliesAnnually; if (this.currentPlan && this.currentPlan.productTier !== ProductTierType.Enterprise) { const upgradedPlan = this.passwordManagerPlans.find((plan) => this.currentPlan.productTier === ProductTierType.Free diff --git a/apps/web/src/app/billing/organizations/organization-plans.component.spec.ts b/apps/web/src/app/billing/organizations/organization-plans.component.spec.ts index 58fdc1d7930..0e884d71e9a 100644 --- a/apps/web/src/app/billing/organizations/organization-plans.component.spec.ts +++ b/apps/web/src/app/billing/organizations/organization-plans.component.spec.ts @@ -738,26 +738,12 @@ describe("OrganizationPlansComponent", () => { }); }); - describe("feature flags", () => { - it("should use FamiliesAnnually when PM26462_Milestone_3 is enabled", async () => { - mockConfigService.getFeatureFlag.mockResolvedValue(true); + it("should use FamiliesAnnually as the family plan", async () => { + fixture.detectChanges(); + await fixture.whenStable(); - fixture.detectChanges(); - await fixture.whenStable(); - - const familyPlan = component["_familyPlan"]; - expect(familyPlan).toBe(PlanType.FamiliesAnnually); - }); - - it("should use FamiliesAnnually2025 when feature flag is disabled", async () => { - mockConfigService.getFeatureFlag.mockResolvedValue(false); - - fixture.detectChanges(); - await fixture.whenStable(); - - const familyPlan = component["_familyPlan"]; - expect(familyPlan).toBe(PlanType.FamiliesAnnually2025); - }); + const familyPlan = component["_familyPlan"]; + expect(familyPlan).toBe(PlanType.FamiliesAnnually); }); describe("initialPlan and initialProductTier inputs", () => { diff --git a/apps/web/src/app/billing/organizations/organization-plans.component.ts b/apps/web/src/app/billing/organizations/organization-plans.component.ts index 7171a448494..c02c4b409d9 100644 --- a/apps/web/src/app/billing/organizations/organization-plans.component.ts +++ b/apps/web/src/app/billing/organizations/organization-plans.component.ts @@ -537,7 +537,7 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy { await this.loadPlanData(); } - this._familyPlan = await this.determineFamilyPlan(); + this._familyPlan = PlanType.FamiliesAnnually; const currentPlan = this.currentPlan(); if (currentPlan) { @@ -1176,13 +1176,6 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy { return !plan.disabled && !plan.legacyYear; } - private async determineFamilyPlan(): Promise { - const milestone3FeatureEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM26462_Milestone_3, - ); - return milestone3FeatureEnabled ? PlanType.FamiliesAnnually : PlanType.FamiliesAnnually2025; - } - /** * Loads existing organization, billing, and subscription data for the given organization ID * and populates the form controls with the retrieved billing address. diff --git a/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.ts b/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.ts index ef34584633b..19585e6609b 100644 --- a/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.ts +++ b/apps/web/src/app/billing/trial-initiation/complete-trial-initiation/complete-trial-initiation.component.ts @@ -293,21 +293,14 @@ export class CompleteTrialInitiationComponent implements OnInit, OnDestroy { this.verticalStepper.previous(); } - async getPlanType() { - const milestone3FeatureEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM26462_Milestone_3, - ); - const familyPlan = milestone3FeatureEnabled - ? PlanType.FamiliesAnnually - : PlanType.FamiliesAnnually2025; - + getPlanType() { switch (this.productTier) { case ProductTierType.Teams: return PlanType.TeamsAnnually; case ProductTierType.Enterprise: return PlanType.EnterpriseAnnually; case ProductTierType.Families: - return familyPlan; + return PlanType.FamiliesAnnually; case ProductTierType.Free: return PlanType.Free; default: diff --git a/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.spec.ts b/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.spec.ts index 810c18fb4ff..2602fe12ef9 100644 --- a/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.spec.ts +++ b/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.spec.ts @@ -8,7 +8,6 @@ import { AccountService } from "@bitwarden/common/auth/abstractions/account.serv import { OrganizationBillingServiceAbstraction } from "@bitwarden/common/billing/abstractions"; import { PlanType } from "@bitwarden/common/billing/enums"; import { PlanResponse } from "@bitwarden/common/billing/models/response/plan.response"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { mockAccountInfoWith } from "@bitwarden/common/spec"; import { UserId } from "@bitwarden/common/types/guid"; import { PreviewInvoiceClient } from "@bitwarden/web-vault/app/billing/clients"; @@ -20,10 +19,8 @@ describe("TrialBillingStepService", () => { const mockOrganizationBillingService = mock(); const mockPreviewInvoiceClient = mock(); const mockAccountService = mock(); - const mockConfigService = mock(); - const mockFamiliesPlan = { - type: PlanType.FamiliesAnnually2025, + type: PlanType.FamiliesAnnually, productTier: 4, name: "Families", isAnnual: true, @@ -47,12 +44,9 @@ describe("TrialBillingStepService", () => { mockReset(mockOrganizationBillingService); mockReset(mockPreviewInvoiceClient); mockReset(mockAccountService); - mockReset(mockConfigService); mockApiService.getPlans.mockResolvedValue({ data: [mockFamiliesPlan] } as any); mockAccountService.activeAccount$ = of(mockAccount as any); - mockConfigService.getFeatureFlag.mockResolvedValue(false); - mockConfigService.getFeatureFlag$.mockReturnValue(of(false)); TestBed.configureTestingModule({ providers: [ @@ -64,7 +58,6 @@ describe("TrialBillingStepService", () => { }, { provide: PreviewInvoiceClient, useValue: mockPreviewInvoiceClient }, { provide: AccountService, useValue: mockAccountService }, - { provide: ConfigService, useValue: mockConfigService }, ], }); @@ -137,26 +130,4 @@ describe("TrialBillingStepService", () => { expect(call).not.toHaveProperty("coupons"); }); }); - - describe("getCosts — feature flag", () => { - it("uses PM26462_Milestone_3 feature flag when fetching plan type", async () => { - mockPreviewInvoiceClient.previewTaxForOrganizationSubscriptionPurchase.mockResolvedValue({ - tax: 0, - total: 40, - }); - - await sut.getCosts("passwordManager", "families", "annually", { - country: "US", - postalCode: "12345", - } as any); - - expect( - mockPreviewInvoiceClient.previewTaxForOrganizationSubscriptionPurchase, - ).toHaveBeenCalledWith( - expect.objectContaining({ tier: "families", cadence: "annually" }), - expect.anything(), - undefined, - ); - }); - }); }); diff --git a/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.ts b/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.ts index e448dd1a98c..82a93ecc41f 100644 --- a/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.ts +++ b/apps/web/src/app/billing/trial-initiation/trial-billing-step/trial-billing-step.service.ts @@ -1,5 +1,5 @@ import { Injectable } from "@angular/core"; -import { combineLatestWith, firstValueFrom, from, map, shareReplay } from "rxjs"; +import { firstValueFrom, from, map, shareReplay } from "rxjs"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { OrganizationResponse } from "@bitwarden/common/admin-console/models/response/organization.response"; @@ -10,8 +10,6 @@ import { SubscriptionInformation, } from "@bitwarden/common/billing/abstractions"; import { PaymentMethodType, PlanType } from "@bitwarden/common/billing/enums"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; -import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { PreviewInvoiceClient } from "@bitwarden/web-vault/app/billing/clients"; import { BillingAddressControls, @@ -64,7 +62,6 @@ export class TrialBillingStepService { private apiService: ApiService, private organizationBillingService: OrganizationBillingServiceAbstraction, private previewInvoiceClient: PreviewInvoiceClient, - private configService: ConfigService, ) {} private plans$ = from(this.apiService.getPlans()).pipe( @@ -73,17 +70,10 @@ export class TrialBillingStepService { getPrices$ = (product: Product, tier: Tier) => this.plans$.pipe( - combineLatestWith(this.configService.getFeatureFlag$(FeatureFlag.PM26462_Milestone_3)), - map(([plans, milestone3FeatureEnabled]) => { + map((plans) => { switch (tier) { case "families": { - const annually = plans.data.find( - (plan) => - plan.type === - (milestone3FeatureEnabled - ? PlanType.FamiliesAnnually - : PlanType.FamiliesAnnually2025), - ); + const annually = plans.data.find((plan) => plan.type === PlanType.FamiliesAnnually); return { annually: annually!.PasswordManager.basePrice, }; @@ -162,15 +152,9 @@ export class TrialBillingStepService { ): Promise => { const getPlanType = async (tier: Tier, cadence: Cadence) => { const plans = await firstValueFrom(this.plans$); - const milestone3FeatureEnabled = await this.configService.getFeatureFlag( - FeatureFlag.PM26462_Milestone_3, - ); - const familyPlan = milestone3FeatureEnabled - ? PlanType.FamiliesAnnually - : PlanType.FamiliesAnnually2025; switch (tier) { case "families": - return plans.data.find((plan) => plan.type === familyPlan)!.type; + return plans.data.find((plan) => plan.type === PlanType.FamiliesAnnually)!.type; case "teams": return plans.data.find( (plan) => diff --git a/libs/common/src/billing/services/subscription-pricing.service.spec.ts b/libs/common/src/billing/services/subscription-pricing.service.spec.ts index 79e44ccaf60..954704468ac 100644 --- a/libs/common/src/billing/services/subscription-pricing.service.spec.ts +++ b/libs/common/src/billing/services/subscription-pricing.service.spec.ts @@ -30,7 +30,7 @@ describe("DefaultSubscriptionPricingService", () => { let environmentService: MockProxy; const mockFamiliesPlan = { - type: PlanType.FamiliesAnnually2025, + type: PlanType.FamiliesAnnually, productTier: ProductTierType.Families, name: "Families (Annually)", isAnnual: true, diff --git a/libs/common/src/billing/services/subscription-pricing.service.ts b/libs/common/src/billing/services/subscription-pricing.service.ts index 73f3dc1bc77..2c845f91dc4 100644 --- a/libs/common/src/billing/services/subscription-pricing.service.ts +++ b/libs/common/src/billing/services/subscription-pricing.service.ts @@ -1,6 +1,5 @@ import { combineLatest, - combineLatestWith, from, map, Observable, @@ -16,7 +15,6 @@ import { BillingApiServiceAbstraction } from "@bitwarden/common/billing/abstract import { PlanType } from "@bitwarden/common/billing/enums"; import { PlanResponse } from "@bitwarden/common/billing/models/response/plan.response"; import { PremiumPlanResponse } from "@bitwarden/common/billing/models/response/premium-plan.response"; -import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; import { ListResponse } from "@bitwarden/common/models/response/list.response"; import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { EnvironmentService } from "@bitwarden/common/platform/abstractions/environment.service"; @@ -137,13 +135,8 @@ export class DefaultSubscriptionPricingService implements SubscriptionPricingSer private families$: Observable = this.organizationPlansResponse$.pipe( - combineLatestWith(this.configService.getFeatureFlag$(FeatureFlag.PM26462_Milestone_3)), - map(([plans, milestone3FeatureEnabled]) => { - const familiesPlan = plans.data.find( - (plan) => - plan.type === - (milestone3FeatureEnabled ? PlanType.FamiliesAnnually : PlanType.FamiliesAnnually2025), - ); + map((plans) => { + const familiesPlan = plans.data.find((plan) => plan.type === PlanType.FamiliesAnnually); return { id: PersonalSubscriptionPricingTierIds.Families,