Home / Function/ getPlanChangeType() — supabase Function Reference

getPlanChangeType() — supabase Function Reference

Architecture documentation for the getPlanChangeType() function in Subscription.utils.ts from the supabase codebase.

Entity Profile

Relationship Graph

Source Code

apps/studio/components/interfaces/Billing/Subscription/Subscription.utils.ts lines 38–85

export const getPlanChangeType = (
  fromPlan: PlanId | undefined,
  toPlan: PlanId | undefined
): PlanChangeType => {
  const planChangeTypes: Record<PlanId, Record<PlanId, PlanChangeType>> = {
    free: {
      free: 'none',
      pro: 'upgrade',
      team: 'upgrade',
      enterprise: 'upgrade',
      platform: 'upgrade',
    },
    pro: {
      free: 'downgrade',
      pro: 'none',
      team: 'upgrade',
      enterprise: 'upgrade',
      platform: 'upgrade',
    },
    team: {
      free: 'downgrade',
      pro: 'downgrade',
      team: 'none',
      enterprise: 'upgrade',
      platform: 'upgrade',
    },
    enterprise: {
      free: 'downgrade',
      pro: 'downgrade',
      team: 'downgrade',
      enterprise: 'none',
      platform: 'upgrade',
    },
    platform: {
      free: 'downgrade',
      pro: 'downgrade',
      team: 'downgrade',
      enterprise: 'downgrade',
      platform: 'none',
    },
  }

  if (!fromPlan || !toPlan) {
    return 'none'
  }

  return planChangeTypes[fromPlan]?.[toPlan] ?? 'none'
}

Subdomains

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free